{"openapi":"3.1.0","info":{"title":"FastAPI","version":"0.1.0"},"paths":{"/dashboard/api/me":{"get":{"summary":"Api Me","operationId":"api_me_dashboard_api_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/dashboard/api/groups":{"get":{"summary":"Api Groups","operationId":"api_groups_dashboard_api_groups_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/dashboard/api/jobs":{"get":{"summary":"Api Jobs","operationId":"api_jobs_dashboard_api_jobs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/dashboard/api/jobs/{job_id}/pause":{"post":{"summary":"Api Pause","operationId":"api_pause_dashboard_api_jobs__job_id__pause_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"}}}}}}},"/dashboard/api/jobs/{job_id}/resume":{"post":{"summary":"Api Resume","operationId":"api_resume_dashboard_api_jobs__job_id__resume_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"}}}}}}},"/dashboard/api/jobs/{job_id}/trigger":{"post":{"summary":"Api Trigger","operationId":"api_trigger_dashboard_api_jobs__job_id__trigger_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"}}}}}}},"/dashboard/api/jobs/{job_id}/configure":{"post":{"summary":"Api Configure Job","description":"Reschedule a job with a new trigger (interval minutes or daily cron).","operationId":"api_configure_job_dashboard_api_jobs__job_id__configure_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"}}}}}}},"/dashboard/api/jobs/{job_id}/sequence":{"post":{"summary":"Api Set Sequence","description":"Update the execution sequence number for a cron-slot job.","operationId":"api_set_sequence_dashboard_api_jobs__job_id__sequence_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"}}}}}}},"/dashboard/api/groups/{group_name}/trigger":{"post":{"summary":"Api Trigger Group","operationId":"api_trigger_group_dashboard_api_groups__group_name__trigger_post","parameters":[{"name":"group_name","in":"path","required":true,"schema":{"type":"string","title":"Group Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dashboard/api/manual-jobs":{"get":{"summary":"Api List Manual Jobs","operationId":"api_list_manual_jobs_dashboard_api_manual_jobs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/dashboard/api/manual-jobs/{job_id}/run":{"post":{"summary":"Api Run Manual","operationId":"api_run_manual_dashboard_api_manual_jobs__job_id__run_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"}}}}}}},"/dashboard/api/manual-jobs/{job_id}/result":{"get":{"summary":"Api Manual Result","operationId":"api_manual_result_dashboard_api_manual_jobs__job_id__result_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"}}}}}}},"/dashboard/api/job-outputs":{"get":{"summary":"Api Job Outputs","description":"Return live output for all currently-running and recently-finished jobs.\n\nMerges scheduled jobs (captured via register_scheduled_capture) and manual\njobs (captured in _manual_results). Running jobs are listed first, then\nmost-recently-finished.","operationId":"api_job_outputs_dashboard_api_job_outputs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/dashboard/api/logs":{"get":{"summary":"Api Logs","operationId":"api_logs_dashboard_api_logs_get","parameters":[{"name":"file","in":"query","required":false,"schema":{"type":"string","default":"scheduler.log","title":"File"}},{"name":"lines","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Lines"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dashboard/api/logs/all":{"get":{"summary":"Api Logs All","operationId":"api_logs_all_dashboard_api_logs_all_get","parameters":[{"name":"lines","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Lines"}},{"name":"level","in":"query","required":false,"schema":{"type":"string","default":"WARNING,ERROR","title":"Level"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dashboard/api/logs/download":{"get":{"summary":"Api Logs Download","operationId":"api_logs_download_dashboard_api_logs_download_get","parameters":[{"name":"file","in":"query","required":false,"schema":{"type":"string","default":"scheduler.log","title":"File"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dashboard/api/logs/raw":{"get":{"summary":"Api Logs Raw","description":"Serve the FULL log file inline so a new browser tab renders it as text\n(rather than downloading it like /logs/download, or tailing it like /logs).","operationId":"api_logs_raw_dashboard_api_logs_raw_get","parameters":[{"name":"file","in":"query","required":false,"schema":{"type":"string","default":"scheduler.log","title":"File"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dashboard/api/logs/clear":{"post":{"summary":"Api Clear Log","operationId":"api_clear_log_dashboard_api_logs_clear_post","parameters":[{"name":"file","in":"query","required":false,"schema":{"type":"string","default":"scheduler.log","title":"File"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dashboard/api/logs/clear_all":{"post":{"summary":"Api Clear All Logs","operationId":"api_clear_all_logs_dashboard_api_logs_clear_all_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/dashboard/api/service/restart":{"post":{"summary":"Api Restart","operationId":"api_restart_dashboard_api_service_restart_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/dashboard/api/service/update":{"post":{"summary":"Api Update","operationId":"api_update_dashboard_api_service_update_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/dashboard/login":{"get":{"summary":"Dashboard Login","operationId":"dashboard_login_dashboard_login_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/dashboard/":{"get":{"summary":"Dashboard","operationId":"dashboard_dashboard__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/dashboard":{"get":{"summary":"Dashboard","operationId":"dashboard_dashboard_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/customer_insights/":{"get":{"summary":"Insights Page","operationId":"insights_page_customer_insights__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/customer_insights":{"get":{"summary":"Insights Page","operationId":"insights_page_customer_insights_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/customer_insights/api/me":{"get":{"summary":"Api Me","operationId":"api_me_customer_insights_api_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/customer_insights/api/summary":{"get":{"summary":"Api Summary","operationId":"api_summary_customer_insights_api_summary_get","parameters":[{"name":"customer_type","in":"query","required":false,"schema":{"type":"string","default":"","title":"Customer Type"}},{"name":"partner_tag","in":"query","required":false,"schema":{"type":"string","default":"","title":"Partner Tag"}},{"name":"branch","in":"query","required":false,"schema":{"type":"string","default":"","title":"Branch"}},{"name":"sector","in":"query","required":false,"schema":{"type":"string","default":"","title":"Sector"}},{"name":"product_category","in":"query","required":false,"schema":{"type":"string","default":"","title":"Product Category"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/customer_insights/api/period":{"get":{"summary":"Api Period","description":"KPIs for customers who ordered in one window, vs the window just before it.","operationId":"api_period_customer_insights_api_period_get","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"28d","title":"Period"}},{"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":"compare","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Compare"}},{"name":"customer_type","in":"query","required":false,"schema":{"type":"string","default":"","title":"Customer Type"}},{"name":"partner_tag","in":"query","required":false,"schema":{"type":"string","default":"","title":"Partner Tag"}},{"name":"branch","in":"query","required":false,"schema":{"type":"string","default":"","title":"Branch"}},{"name":"sector","in":"query","required":false,"schema":{"type":"string","default":"","title":"Sector"}},{"name":"product_category","in":"query","required":false,"schema":{"type":"string","default":"","title":"Product Category"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/customer_insights/api/customers":{"get":{"summary":"Api Customers","operationId":"api_customers_customer_insights_api_customers_get","parameters":[{"name":"segment","in":"query","required":false,"schema":{"type":"string","default":"","title":"Segment"}},{"name":"tag","in":"query","required":false,"schema":{"type":"string","default":"","title":"Tag"}},{"name":"categ_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Categ Id"}},{"name":"cat2_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Cat2 Id"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","default":"spend","title":"Sort"}},{"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"}},{"name":"customer_type","in":"query","required":false,"schema":{"type":"string","default":"","title":"Customer Type"}},{"name":"partner_tag","in":"query","required":false,"schema":{"type":"string","default":"","title":"Partner Tag"}},{"name":"branch","in":"query","required":false,"schema":{"type":"string","default":"","title":"Branch"}},{"name":"sector","in":"query","required":false,"schema":{"type":"string","default":"","title":"Sector"}},{"name":"product_category","in":"query","required":false,"schema":{"type":"string","default":"","title":"Product Category"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/customer_insights/api/export.csv":{"get":{"summary":"Api Export","operationId":"api_export_customer_insights_api_export_csv_get","parameters":[{"name":"segment","in":"query","required":false,"schema":{"type":"string","default":"","title":"Segment"}},{"name":"tag","in":"query","required":false,"schema":{"type":"string","default":"","title":"Tag"}},{"name":"categ_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Categ Id"}},{"name":"cat2_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Cat2 Id"}},{"name":"customer_type","in":"query","required":false,"schema":{"type":"string","default":"","title":"Customer Type"}},{"name":"partner_tag","in":"query","required":false,"schema":{"type":"string","default":"","title":"Partner Tag"}},{"name":"branch","in":"query","required":false,"schema":{"type":"string","default":"","title":"Branch"}},{"name":"sector","in":"query","required":false,"schema":{"type":"string","default":"","title":"Sector"}},{"name":"product_category","in":"query","required":false,"schema":{"type":"string","default":"","title":"Product Category"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/customer_insights/api/rules":{"get":{"summary":"Api Rules","operationId":"api_rules_customer_insights_api_rules_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Api Save Rule","operationId":"api_save_rule_customer_insights_api_rules_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/customer_insights/api/rules/{rule_key}/delete":{"post":{"summary":"Api Delete Rule","operationId":"api_delete_rule_customer_insights_api_rules__rule_key__delete_post","parameters":[{"name":"rule_key","in":"path","required":true,"schema":{"type":"string","title":"Rule Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/customer_insights/api/jobs/{job_id}/run":{"post":{"summary":"Api Run Job","operationId":"api_run_job_customer_insights_api_jobs__job_id__run_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_insights/api/jobs/{job_id}/result":{"get":{"summary":"Api Job Result","operationId":"api_job_result_customer_insights_api_jobs__job_id__result_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_new_form/cities":{"get":{"summary":"Api Cities","operationId":"api_cities_customer_new_form_cities_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/customer_new_form/submit":{"post":{"summary":"Api Submit","operationId":"api_submit_customer_new_form_submit_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/customer_new_form/":{"get":{"summary":"Customer New Form","operationId":"customer_new_form_customer_new_form__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/customer_new_form":{"get":{"summary":"Customer New Form","operationId":"customer_new_form_customer_new_form_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/company_bank_info/":{"get":{"summary":"Company Bank Info Form","operationId":"company_bank_info_form_company_bank_info__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/company_bank_info":{"get":{"summary":"Company Bank Info Form","operationId":"company_bank_info_form_company_bank_info_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/complaints_inquiries_form/branches":{"get":{"summary":"Api Branches","operationId":"api_branches_complaints_inquiries_form_branches_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/complaints_inquiries_form/submit":{"post":{"summary":"Api Submit","operationId":"api_submit_complaints_inquiries_form_submit_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/complaints_inquiries_form/":{"get":{"summary":"Complaints Inquiries Form","operationId":"complaints_inquiries_form_complaints_inquiries_form__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/complaints_inquiries_form":{"get":{"summary":"Complaints Inquiries Form","operationId":"complaints_inquiries_form_complaints_inquiries_form_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/branch_quality_visit_form/config":{"get":{"summary":"Api Config","operationId":"api_config_branch_quality_visit_form_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/branch_quality_visit_form/whoami":{"get":{"summary":"Api Whoami","description":"Whether the supplied passcode has admin rights. The form page uses this\nto decide whether to reveal the History / Dashboard nav buttons (a plain\nform-passcode user never sees them).","operationId":"api_whoami_branch_quality_visit_form_whoami_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/branch_quality_visit_form/branches":{"get":{"summary":"Api Branches","operationId":"api_branches_branch_quality_visit_form_branches_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/branch_quality_visit_form/employees":{"get":{"summary":"Api Employees","operationId":"api_employees_branch_quality_visit_form_employees_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/branch_quality_visit_form/visitors":{"get":{"summary":"Api Visitors","operationId":"api_visitors_branch_quality_visit_form_visitors_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/branch_quality_visit_form/submit":{"post":{"summary":"Api Submit","operationId":"api_submit_branch_quality_visit_form_submit_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/branch_quality_visit_form/report/{visit_id}":{"get":{"summary":"Api Report","description":"Stream a single visit as a PDF report (all details + embedded photos).\n\nGated by the FORM passcode (not admin-only) so the inspector who just filed\na visit can view / download its report from the success screen. The passcode\nis read from the ``?passcode=`` query param too, so the URL works directly in\nan ``<a href>`` / ``<iframe src>`` (which can't send headers). ``download=1``\nforces an attachment; otherwise it renders inline.","operationId":"api_report_branch_quality_visit_form_report__visit_id__get","parameters":[{"name":"visit_id","in":"path","required":true,"schema":{"type":"integer","title":"Visit Id"}},{"name":"download","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Download"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/branch_quality_visit_form/export":{"get":{"summary":"Api Export","description":"Admin-gated JSON dump of recent visits (newest first), each with its\n18 item ratings. Handy for pulling data out without a separate UI.","operationId":"api_export_branch_quality_visit_form_export_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/branch_quality_visit_form/history/data":{"get":{"summary":"Api History Data","description":"Admin-gated data feed for the history page.","operationId":"api_history_data_branch_quality_visit_form_history_data_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":2000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/branch_quality_visit_form/delete/{visit_id}":{"post":{"summary":"Api Delete Visit","description":"Delete a visit (admin only). Same admin gate as the history view.","operationId":"api_delete_visit_branch_quality_visit_form_delete__visit_id__post","parameters":[{"name":"visit_id","in":"path","required":true,"schema":{"type":"integer","title":"Visit Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/branch_quality_visit_form/photo/{visit_id}/{filename}":{"get":{"summary":"Api Photo","description":"Serve a single item photo from disk. Admin-gated (same as history). The\npasscode is taken from the ``?passcode=`` query param so the history page\ncan use the URL directly in an ``<img src>`` (which can't send headers).","operationId":"api_photo_branch_quality_visit_form_photo__visit_id___filename__get","parameters":[{"name":"visit_id","in":"path","required":true,"schema":{"type":"integer","title":"Visit Id"}},{"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"}}}}}}},"/branch_quality_visit_form/history":{"get":{"summary":"Api History","operationId":"api_history_branch_quality_visit_form_history_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/branch_quality_visit_form/dashboard":{"get":{"summary":"Api Dashboard","operationId":"api_dashboard_branch_quality_visit_form_dashboard_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/branch_quality_visit_form/":{"get":{"summary":"Branch Quality Visit Form","operationId":"branch_quality_visit_form_branch_quality_visit_form__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/branch_quality_visit_form":{"get":{"summary":"Branch Quality Visit Form","operationId":"branch_quality_visit_form_branch_quality_visit_form_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/customer_survey_form":{"get":{"summary":" Customer Survey Form Route","operationId":"_customer_survey_form_route_customer_survey_form_get","parameters":[{"name":"sale_order_id","in":"query","required":true,"schema":{"type":"integer","title":"Sale Order Id"}},{"name":"sale_order_name","in":"query","required":true,"schema":{"type":"string","title":"Sale Order Name"}},{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}},{"name":"expires_at","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Expires At"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/customer_survey_form/submit":{"post":{"summary":" Customer Survey Submit Route","operationId":"_customer_survey_submit_route_customer_survey_form_submit_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/qr_generator/":{"get":{"summary":"Qr Generator Page","operationId":"qr_generator_page_qr_generator__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/qr_generator":{"get":{"summary":"Qr Generator Page","operationId":"qr_generator_page_qr_generator_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/qr_generator/generate":{"get":{"summary":"Generate Qr Code","operationId":"generate_qr_code_qr_generator_generate_get","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","minLength":1,"description":"URL or text to encode in the QR code","title":"Url"},"description":"URL or text to encode in the QR code"},{"name":"logo_image","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional logo source (http/https URL, local file path, or data URI)","title":"Logo Image"},"description":"Optional logo source (http/https URL, local file path, or data URI)"},{"name":"dimension","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":128,"description":"Output image dimension in pixels","default":800,"title":"Dimension"},"description":"Output image dimension in pixels"},{"name":"qr_code_type","in":"query","required":false,"schema":{"type":"string","pattern":"^(png|svg)$","description":"QR output type: png or svg","default":"png","title":"Qr Code Type"},"description":"QR output type: png or svg"},{"name":"quality","in":"query","required":false,"schema":{"type":"string","pattern":"^(low|medium|high)$","description":"QR scan resilience: low, medium, or high","default":"high","title":"Quality"},"description":"QR scan resilience: low, medium, or high"},{"name":"foreground_color","in":"query","required":false,"schema":{"type":"string","description":"QR foreground color (name or hex)","default":"black","title":"Foreground Color"},"description":"QR foreground color (name or hex)"},{"name":"background_color","in":"query","required":false,"schema":{"type":"string","description":"QR background color (name or hex)","default":"white","title":"Background Color"},"description":"QR background color (name or hex)"},{"name":"margin","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":0,"description":"QR quiet-zone margin in modules","default":4,"title":"Margin"},"description":"QR quiet-zone margin in modules"},{"name":"save_to_exports","in":"query","required":false,"schema":{"type":"boolean","description":"Whether to save generated QR under exports/","default":true,"title":"Save To Exports"},"description":"Whether to save generated QR under exports/"},{"name":"output_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional output file name (without path)","title":"Output Name"},"description":"Optional output file name (without path)"},{"name":"utm_source","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"description":"UTM source, e.g. flyer, store, instagram","title":"Utm Source"},"description":"UTM source, e.g. flyer, store, instagram"},{"name":"utm_medium","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"description":"UTM medium, e.g. qr, print, social","title":"Utm Medium"},"description":"UTM medium, e.g. qr, print, social"},{"name":"utm_campaign","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"description":"UTM campaign name","title":"Utm Campaign"},"description":"UTM campaign name"},{"name":"utm_term","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"description":"UTM term (paid keyword)","title":"Utm Term"},"description":"UTM term (paid keyword)"},{"name":"utm_content","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"description":"UTM content (variant / placement)","title":"Utm Content"},"description":"UTM content (variant / placement)"},{"name":"utm_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"description":"UTM campaign id","title":"Utm Id"},"description":"UTM campaign id"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/qr_generator/image":{"get":{"summary":"Generate Qr Code Image","operationId":"generate_qr_code_image_qr_generator_image_get","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","minLength":1,"description":"URL or text to encode in the QR code","title":"Url"},"description":"URL or text to encode in the QR code"},{"name":"logo_image","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional logo source (http/https URL, local file path, or data URI)","title":"Logo Image"},"description":"Optional logo source (http/https URL, local file path, or data URI)"},{"name":"dimension","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":128,"description":"Output image dimension in pixels","default":800,"title":"Dimension"},"description":"Output image dimension in pixels"},{"name":"qr_code_type","in":"query","required":false,"schema":{"type":"string","pattern":"^(png|svg)$","description":"QR output type: png or svg","default":"png","title":"Qr Code Type"},"description":"QR output type: png or svg"},{"name":"quality","in":"query","required":false,"schema":{"type":"string","pattern":"^(low|medium|high)$","description":"QR scan resilience: low, medium, or high","default":"high","title":"Quality"},"description":"QR scan resilience: low, medium, or high"},{"name":"foreground_color","in":"query","required":false,"schema":{"type":"string","description":"QR foreground color (name or hex)","default":"black","title":"Foreground Color"},"description":"QR foreground color (name or hex)"},{"name":"background_color","in":"query","required":false,"schema":{"type":"string","description":"QR background color (name or hex)","default":"white","title":"Background Color"},"description":"QR background color (name or hex)"},{"name":"margin","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":0,"description":"QR quiet-zone margin in modules","default":4,"title":"Margin"},"description":"QR quiet-zone margin in modules"},{"name":"utm_source","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"description":"UTM source, e.g. flyer, store, instagram","title":"Utm Source"},"description":"UTM source, e.g. flyer, store, instagram"},{"name":"utm_medium","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"description":"UTM medium, e.g. qr, print, social","title":"Utm Medium"},"description":"UTM medium, e.g. qr, print, social"},{"name":"utm_campaign","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"description":"UTM campaign name","title":"Utm Campaign"},"description":"UTM campaign name"},{"name":"utm_term","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"description":"UTM term (paid keyword)","title":"Utm Term"},"description":"UTM term (paid keyword)"},{"name":"utm_content","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"description":"UTM content (variant / placement)","title":"Utm Content"},"description":"UTM content (variant / placement)"},{"name":"utm_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"description":"UTM campaign id","title":"Utm Id"},"description":"UTM campaign id"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/profit_calculator/meta":{"get":{"summary":"Profit Calculator Meta","description":"Tiny JSON endpoint the frontend calls to discover field keys + limits.","operationId":"profit_calculator_meta_profit_calculator_meta_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/profit_calculator/vendors":{"get":{"summary":"Profit Calculator Vendors","description":"Return the list of vendors (partners who have posted vendor bills).\n\nCached in-process for 10 minutes (see ``list_vendors``). Pass\n``?refresh=true`` to force a re-fetch — useful after a new vendor\nhas just been onboarded in Odoo and finance wants them immediately.","operationId":"profit_calculator_vendors_profit_calculator_vendors_get","parameters":[{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Refresh"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/profit_calculator/sheets":{"post":{"summary":"List Workbook Sheets","description":"Return just the sheet names from an uploaded workbook.\n\nCalled immediately after the user picks a file so the UI can offer sheet\nselection *before* the heavier parse step. Keeps the main ``/parse``\ncall focused on header + preview extraction once the user has picked a\nsheet.","operationId":"list_workbook_sheets_profit_calculator_sheets_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/profit_calculator/parse":{"post":{"summary":"Parse Upload","operationId":"parse_upload_profit_calculator_parse_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/profit_calculator/validate":{"post":{"summary":"Validate Mapping","description":"Run only the *matching* half of the pipeline so the UI can surface\na pre-calculation summary: empty row count, matched row count and the\nlist of product models that didn't resolve in Odoo.\n\nThis lets finance users fix the spreadsheet (or the column mapping)\nbefore the expensive Odoo read_group for invoice lines runs. Only\nthe ``product_model`` column needs to be mapped here — periods are\nintentionally ignored.","operationId":"validate_mapping_profit_calculator_validate_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/profit_calculator/calculate":{"post":{"summary":"Calculate Profit","operationId":"calculate_profit_profit_calculator_calculate_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/profit_calculator/distribute":{"post":{"summary":"Distribute","operationId":"distribute_profit_calculator_distribute_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/profit_calculator/export":{"post":{"summary":"Export Results","operationId":"export_results_profit_calculator_export_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/feeds/openai_products_ar.csv":{"get":{"summary":"Openai Products Feed","description":"Serve the generated OpenAI product feed as text/csv.","operationId":"openai_products_feed_feeds_openai_products_ar_csv_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/run_build_openai_feed":{"get":{"summary":"Run Build Openai Feed","description":"Rebuild the OpenAI product feed now (the scheduled job runs every 6h).","operationId":"run_build_openai_feed_run_build_openai_feed_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_generate_qr_code":{"get":{"summary":"Run Generate Qr Code","operationId":"run_generate_qr_code_run_generate_qr_code_get","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","minLength":1,"description":"URL or text to encode in the QR code","title":"Url"},"description":"URL or text to encode in the QR code"},{"name":"logo_image","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional logo source (http/https URL, local file path, or data URI)","title":"Logo Image"},"description":"Optional logo source (http/https URL, local file path, or data URI)"},{"name":"dimension","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":128,"description":"Output image dimension in pixels","default":800,"title":"Dimension"},"description":"Output image dimension in pixels"},{"name":"qr_code_type","in":"query","required":false,"schema":{"type":"string","pattern":"^(png|svg)$","description":"QR output type: png or svg","default":"png","title":"Qr Code Type"},"description":"QR output type: png or svg"},{"name":"quality","in":"query","required":false,"schema":{"type":"string","pattern":"^(low|medium|high)$","description":"QR scan resilience: low, medium, or high","default":"high","title":"Quality"},"description":"QR scan resilience: low, medium, or high"},{"name":"foreground_color","in":"query","required":false,"schema":{"type":"string","description":"QR foreground color (name or hex)","default":"black","title":"Foreground Color"},"description":"QR foreground color (name or hex)"},{"name":"background_color","in":"query","required":false,"schema":{"type":"string","description":"QR background color (name or hex)","default":"white","title":"Background Color"},"description":"QR background color (name or hex)"},{"name":"margin","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":0,"description":"QR quiet-zone margin in modules","default":4,"title":"Margin"},"description":"QR quiet-zone margin in modules"},{"name":"save_to_exports","in":"query","required":false,"schema":{"type":"boolean","description":"Whether to save generated QR under exports/","default":true,"title":"Save To Exports"},"description":"Whether to save generated QR under exports/"},{"name":"output_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional output file name (without path)","title":"Output Name"},"description":"Optional output file name (without path)"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_generate_qr_code_image":{"get":{"summary":"Run Generate Qr Code Image","operationId":"run_generate_qr_code_image_run_generate_qr_code_image_get","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","minLength":1,"description":"URL or text to encode in the QR code","title":"Url"},"description":"URL or text to encode in the QR code"},{"name":"logo_image","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional logo source (http/https URL, local file path, or data URI)","title":"Logo Image"},"description":"Optional logo source (http/https URL, local file path, or data URI)"},{"name":"dimension","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":128,"description":"Output image dimension in pixels","default":800,"title":"Dimension"},"description":"Output image dimension in pixels"},{"name":"qr_code_type","in":"query","required":false,"schema":{"type":"string","pattern":"^(png|svg)$","description":"QR output type: png or svg","default":"png","title":"Qr Code Type"},"description":"QR output type: png or svg"},{"name":"quality","in":"query","required":false,"schema":{"type":"string","pattern":"^(low|medium|high)$","description":"QR scan resilience: low, medium, or high","default":"high","title":"Quality"},"description":"QR scan resilience: low, medium, or high"},{"name":"foreground_color","in":"query","required":false,"schema":{"type":"string","description":"QR foreground color (name or hex)","default":"black","title":"Foreground Color"},"description":"QR foreground color (name or hex)"},{"name":"background_color","in":"query","required":false,"schema":{"type":"string","description":"QR background color (name or hex)","default":"white","title":"Background Color"},"description":"QR background color (name or hex)"},{"name":"margin","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":0,"description":"QR quiet-zone margin in modules","default":4,"title":"Margin"},"description":"QR quiet-zone margin in modules"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_sync_recent_odoo_bevatel":{"get":{"summary":"Run Sync Recent Odoo Bevatel","operationId":"run_sync_recent_odoo_bevatel_run_sync_recent_odoo_bevatel_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_sync_bevatel_ids":{"get":{"summary":"Run Sync Bevatel Ids","operationId":"run_sync_bevatel_ids_run_sync_bevatel_ids_get","parameters":[{"name":"mobile","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional mobile number to test one contact only","title":"Mobile"},"description":"Optional mobile number to test one contact only"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_sync_odoo_contacts_to_webengage":{"get":{"summary":"Run Sync Odoo Contacts To Webengage","operationId":"run_sync_odoo_contacts_to_webengage_run_sync_odoo_contacts_to_webengage_get","parameters":[{"name":"last_updated","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Updated"}},{"name":"contact_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Ids"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_sync_magento_customers_to_webengage":{"get":{"summary":"Run Sync Magento Customers To Webengage","operationId":"run_sync_magento_customers_to_webengage_run_sync_magento_customers_to_webengage_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_link_odoo_magento_id_by_email":{"get":{"summary":"Run Link Odoo Magento Id By Email","operationId":"run_link_odoo_magento_id_by_email_run_link_odoo_magento_id_by_email_get","parameters":[{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_full_sync_customers_to_webengage":{"get":{"summary":"Run Full Sync Customers To Webengage","operationId":"run_full_sync_customers_to_webengage_run_full_sync_customers_to_webengage_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","title":"Limit"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_send_sale_orders_to_webengage":{"get":{"summary":"Run Send Sale Orders To Webengage","operationId":"run_send_sale_orders_to_webengage_run_send_sale_orders_to_webengage_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_send_sale_orders_to_journify":{"get":{"summary":"Run Send Sale Orders To Journify","operationId":"run_send_sale_orders_to_journify_run_send_sale_orders_to_journify_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_send_sale_orders_to_google_ads":{"get":{"summary":"Run Send Sale Orders To Google Ads","operationId":"run_send_sale_orders_to_google_ads_run_send_sale_orders_to_google_ads_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_send_products_to_esl":{"get":{"summary":"Run Send Products To Esl","description":"Push retail prices to SOLUM AIMS shelf labels.\n\n``dry_run`` defaults True -- pass ``dry_run=false`` to actually send.\n``replace=true`` switches PUT (merge) to POST (full overwrite) and will\nblank any configured article field this push does not carry.","operationId":"run_send_products_to_esl_run_send_products_to_esl_get","parameters":[{"name":"sku","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sku"}},{"name":"store_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Store Code"}},{"name":"hours","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Hours"}},{"name":"last_update","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Update"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}},{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Dry Run"}},{"name":"replace","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Replace"}},{"name":"all_products","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"All Products"}},{"name":"in_stock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"In Stock"}},{"name":"master_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Master Type"}},{"name":"master_area","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Master Area"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_sync_esl_stores":{"get":{"summary":"Run Sync Esl Stores","description":"Sync every AIMS store with its own branch's in-stock products.\n\nThe manual form of the 6-hourly ``esl_sync`` job: reads the stores that\nexist in AIMS, then pushes each one the products its matching Odoo\nwarehouse stocks. A store whose code is not an Odoo warehouse is SKIPPED\n(it would otherwise be served the RCW central catalogue).\n\n``store_codes`` is an optional comma-separated allow-list to sync just\none store. ``dry_run`` defaults True.","operationId":"run_sync_esl_stores_run_sync_esl_stores_get","parameters":[{"name":"store_codes","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Store Codes"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}},{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Dry Run"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/get_esl_article_fields":{"get":{"summary":"Get Esl Article Fields","description":"Read the AIMS tenant's configured article data keys (read-only).\n\nRun this before the first real push: it is what confirms ESL_FIELD_MAP\nmatches the Product File Config.","operationId":"get_esl_article_fields_get_esl_article_fields_get","parameters":[{"name":"store_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Store Code"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/get_esl_article":{"get":{"summary":"Get Esl Article","description":"Read one article back from AIMS (read-only).\n\nThe verification step after a push: AIMS answers SUCCESS on the batch and\nreports validCount, but only a read-back proves the article holds what was\nsent -- the same read-back-is-truth rule this repo applies to Magento\nasync bulk.","operationId":"get_esl_article_get_esl_article_get","parameters":[{"name":"article_id","in":"query","required":true,"schema":{"type":"string","description":"AIMS article id (the Odoo default_code)","title":"Article Id"},"description":"AIMS article id (the Odoo default_code)"},{"name":"store_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Store Code"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/get_esl_stores":{"get":{"summary":"Get Esl Stores","description":"List the AIMS stores configured for this company (read-only).","operationId":"get_esl_stores_get_esl_stores_get","parameters":[{"name":"store_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Store Code"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_send_test_sms":{"get":{"summary":"Run Send Test Sms","operationId":"run_send_test_sms_run_send_test_sms_get","parameters":[{"name":"recipients","in":"query","required":true,"schema":{"type":"string","description":"Comma-separated recipients (example: 9665XXXXXXXX,9665YYYYYYYY)","title":"Recipients"},"description":"Comma-separated recipients (example: 9665XXXXXXXX,9665YYYYYYYY)"},{"name":"message","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Message"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_send_test_whatsapp":{"get":{"summary":"Run Send Test Whatsapp","operationId":"run_send_test_whatsapp_run_send_test_whatsapp_get","parameters":[{"name":"recipients","in":"query","required":true,"schema":{"type":"string","description":"Comma-separated recipients (example: 9665XXXXXXXX,9665YYYYYYYY)","title":"Recipients"},"description":"Comma-separated recipients (example: 9665XXXXXXXX,9665YYYYYYYY)"},{"name":"template_name","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Template Name"}},{"name":"code","in":"query","required":false,"schema":{"type":"string","minLength":2,"default":"ar","title":"Code"}},{"name":"text","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"}},{"name":"template_params","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional pipe-separated template params (example: value1|value2|value3)","title":"Template Params"},"description":"Optional pipe-separated template params (example: value1|value2|value3)"},{"name":"header_params","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional pipe-separated header params (example: hdr1|hdr2)","title":"Header Params"},"description":"Optional pipe-separated header params (example: hdr1|hdr2)"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_sync_magento_odoo_customer":{"get":{"summary":"Run Sync Magento Odoo Customer","operationId":"run_sync_magento_odoo_customer_run_sync_magento_odoo_customer_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_sync_odoo_magento_products":{"get":{"summary":"Run Sync Odoo Magento Products","operationId":"run_sync_odoo_magento_products_run_sync_odoo_magento_products_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_sync_odoo_magento_products_attributes":{"get":{"summary":"Run Sync Odoo Magento Products Attributes","operationId":"run_sync_odoo_magento_products_attributes_run_sync_odoo_magento_products_attributes_get","parameters":[{"name":"sku","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sku"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_sync_odoo_magento_product_by_sku":{"get":{"summary":"Run Sync Odoo Magento Product By Sku","operationId":"run_sync_odoo_magento_product_by_sku_run_sync_odoo_magento_product_by_sku_get","parameters":[{"name":"sku","in":"query","required":false,"schema":{"type":"string","title":"Sku"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_sync_all_categories":{"get":{"summary":"Run Sync All Categories","description":"Category-only sync. Without ``sku``, runs across every Odoo product\nflagged ``x_studio_in_magento=True``; with ``sku``, runs on that SKU only\n(useful for spot-checking).","operationId":"run_sync_all_categories_run_sync_all_categories_get","parameters":[{"name":"sku","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sku"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_sync_magento_odoo_sale_orders":{"get":{"summary":"Run Sync Magento Odoo Sale Orders","operationId":"run_sync_magento_odoo_sale_orders_run_sync_magento_odoo_sale_orders_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_sync_odoo_offline_orders_to_magento":{"get":{"summary":"Run Sync Odoo Offline Orders To Magento","operationId":"run_sync_odoo_offline_orders_to_magento_run_sync_odoo_offline_orders_to_magento_get","parameters":[{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"partner_mobile","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Partner Mobile"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_update_magento_product_info":{"get":{"summary":"Run Update Magento Product Info","operationId":"run_update_magento_product_info_run_update_magento_product_info_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_update_odoo_product_from_magento":{"get":{"summary":"Run Update Odoo Product From Magento","operationId":"run_update_odoo_product_from_magento_run_update_odoo_product_from_magento_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_reconcile_odoo_images":{"get":{"summary":"Run Reconcile Odoo Images","operationId":"run_reconcile_odoo_images_run_reconcile_odoo_images_get","parameters":[{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Dry Run"}},{"name":"only_recent_days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Only Recent Days"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_send_magento_status_analysis_email":{"get":{"summary":"Run Send Magento Status Analysis Email","operationId":"run_send_magento_status_analysis_email_run_send_magento_status_analysis_email_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_missed_product":{"get":{"summary":"Run Find Magento Products Not In Odoo","operationId":"run_find_magento_products_not_in_odoo_run_missed_product_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_sync_magento_odoo_sale_orders_by_order_id":{"get":{"summary":"Run Sync Magento Odoo Sale Orders By Order Id","operationId":"run_sync_magento_odoo_sale_orders_by_order_id_run_sync_magento_odoo_sale_orders_by_order_id_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_prepare_sale_order_for_odoo":{"get":{"summary":"Run Prepare Sale Order For Odoo","operationId":"run_prepare_sale_order_for_odoo_run_prepare_sale_order_for_odoo_get","parameters":[{"name":"order_id","in":"query","required":false,"schema":{"type":"integer","title":"Order Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_update_magento_attribute":{"get":{"summary":"Run Update Magento Attributes","operationId":"run_update_magento_attributes_run_update_magento_attribute_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_get_order_by_id":{"get":{"summary":"Run Get Order By Id","operationId":"run_get_order_by_id_run_get_order_by_id_get","parameters":[{"name":"order_id","in":"query","required":false,"schema":{"type":"integer","title":"Order Id"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_sync_loyalty_sales_rule_activation":{"get":{"summary":"Run Sync Loyalty Sales Rule Activation","operationId":"run_sync_loyalty_sales_rule_activation_run_sync_loyalty_sales_rule_activation_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_set_show_on_product_for_active_loyalty_rules":{"get":{"summary":"Run Set Show On Product For Active Loyalty Rules","operationId":"run_set_show_on_product_for_active_loyalty_rules_run_set_show_on_product_for_active_loyalty_rules_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_get_product_info":{"get":{"summary":"Run Get Product Info","operationId":"run_get_product_info_run_get_product_info_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_get_product_stock":{"get":{"summary":"Run Get Product Stock","operationId":"run_get_product_stock_run_get_product_stock_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/get_magento_product_diagnostic":{"get":{"summary":"Get Magento Product Diagnostic","description":"Dump the product fields relevant to category-link bulk failures.\n\nPass ``category_id`` to also report whether the product is currently\nlinked to that specific category.","operationId":"get_magento_product_diagnostic_get_magento_product_diagnostic_get","parameters":[{"name":"sku","in":"query","required":true,"schema":{"type":"string","title":"Sku"}},{"name":"category_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_copy_magento_custom_attributes_stage_to_prod":{"get":{"summary":"Run Copy Magento Custom Attributes Stage To Prod","operationId":"run_copy_magento_custom_attributes_stage_to_prod_run_copy_magento_custom_attributes_stage_to_prod_get","parameters":[{"name":"attribute_codes","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Attribute Codes"}},{"name":"store_code","in":"query","required":false,"schema":{"type":"string","default":"default","title":"Store Code"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_get_magento_customers":{"get":{"summary":"Run Get Magento Customers","operationId":"run_get_magento_customers_run_get_magento_customers_get","parameters":[{"name":"customer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Customer Id"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Page Size"}},{"name":"get_raw_result","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Get Raw Result"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_get_duplicate_mobile_customers":{"get":{"summary":"Run Get Duplicate Mobile Customers","operationId":"run_get_duplicate_mobile_customers_run_get_duplicate_mobile_customers_get","parameters":[{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"min_duplicates","in":"query","required":false,"schema":{"type":"integer","default":2,"title":"Min Duplicates"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_get_mobile_attribute_mismatch_customers":{"get":{"summary":"Run Get Mobile Attribute Mismatch Customers","operationId":"run_get_mobile_attribute_mismatch_customers_run_get_mobile_attribute_mismatch_customers_get","parameters":[{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Page Size"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_copy_valid_mobile_number_to_mobilenumber":{"get":{"summary":"Run Copy Valid Mobile Number To Mobilenumber","operationId":"run_copy_valid_mobile_number_to_mobilenumber_run_copy_valid_mobile_number_to_mobilenumber_get","parameters":[{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Page Size"}},{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Dry Run"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_export_mobile_attribute_mismatch_customers":{"get":{"summary":"Run Export Mobile Attribute Mismatch Customers","operationId":"run_export_mobile_attribute_mismatch_customers_run_export_mobile_attribute_mismatch_customers_get","parameters":[{"name":"output_path","in":"query","required":false,"schema":{"type":"string","description":"Destination XLSX path on disk.","default":"exports/magento_mobile_attribute_cases.xlsx","title":"Output Path"},"description":"Destination XLSX path on disk."},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Page Size"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_get_product_salable_qty":{"get":{"summary":"Run Get Product Salable Qty","operationId":"run_get_product_salable_qty_run_get_product_salable_qty_get","parameters":[{"name":"sku","in":"query","required":false,"schema":{"type":"string","default":"65UT73006LA","title":"Sku"}},{"name":"stock_id","in":"query","required":false,"schema":{"type":"integer","description":"MSI stock ID (default 1)","default":1,"title":"Stock Id"},"description":"MSI stock ID (default 1)"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_get_all_categories":{"get":{"summary":"Run Get All Categories","operationId":"run_get_all_categories_run_get_all_categories_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_get_category":{"get":{"summary":"Run Get Category","operationId":"run_get_category_run_get_category_get","parameters":[{"name":"category_id","in":"query","required":false,"schema":{"default":682,"title":"Category Id"}},{"name":"name","in":"query","required":false,"schema":{"title":"Name"}},{"name":"parent_id","in":"query","required":false,"schema":{"title":"Parent Id"}},{"name":"parent_name","in":"query","required":false,"schema":{"title":"Parent Name"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_move_magento_category_products":{"get":{"summary":"Run Move Magento Category Products","operationId":"run_move_magento_category_products_run_move_magento_category_products_get","parameters":[{"name":"from_category_id","in":"query","required":false,"schema":{"type":"integer","default":361,"title":"From Category Id"}},{"name":"to_category_id","in":"query","required":false,"schema":{"type":"integer","default":157,"title":"To Category Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_update_all_magento_category_arabic_names":{"get":{"summary":"Run Update All Magento Category Arabic Names","description":"One-time backfill: translate every Magento category's English name to\nArabic via Claude and push it to the Arabic store view (store_id=18).\n\nDefaults to a dry-run that writes ``exports/magento_category_arabic_names_dryrun_*.xlsx``\nwith the proposed (category_id, en_name, current_ar_name, proposed_ar_name)\ndiff. Re-invoke with ``apply=true`` to actually write to Magento.\n\nQuery params:\n  apply: false (dry-run) / true (write)\n  overwrite_existing: false (skip categories that already have an Arabic\n    name) / true (re-translate every category)\n  include_root: false (skip ids 1 & 2) / true (include them)\n  category_ids: optional comma-separated list to restrict the run, e.g.\n    ``\"157,361,682\"``","operationId":"run_update_all_magento_category_arabic_names_run_update_all_magento_category_arabic_names_get","parameters":[{"name":"apply","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Apply"}},{"name":"overwrite_existing","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Overwrite Existing"}},{"name":"include_root","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Root"}},{"name":"category_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category Ids"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_get_attribute_options_with_labels":{"get":{"summary":"Run Get Attribute Options With Labels","operationId":"run_get_attribute_options_with_labels_run_get_attribute_options_with_labels_get","parameters":[{"name":"attribute_code","in":"query","required":false,"schema":{"type":"string","default":"manufacturer","title":"Attribute Code"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_cancel_pending_orders":{"get":{"summary":"Run Cancel Pending Orders","operationId":"run_cancel_pending_orders_run_cancel_pending_orders_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_send_pending_orders_report":{"get":{"summary":"Run Send Pending Orders Report","operationId":"run_send_pending_orders_report_run_send_pending_orders_report_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/get_sales_rules":{"get":{"summary":"Run Get Sales Rules","description":"Fetch sales rules from magento.","operationId":"run_get_sales_rules_get_sales_rules_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_get_reserved_orders_by_skus":{"get":{"summary":"Run Get Reserved Orders By Skus","operationId":"run_get_reserved_orders_by_skus_run_get_reserved_orders_by_skus_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_get_stock_by_source":{"get":{"summary":"Run Get Stock By Source","operationId":"run_get_stock_by_source_run_get_stock_by_source_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_assign_all_sources_to_all_products":{"get":{"summary":"Run Assign All Sources To All Products","operationId":"run_assign_all_sources_to_all_products_run_assign_all_sources_to_all_products_get","parameters":[{"name":"sku_status","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sku Status"}},{"name":"only_one_source","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Only One Source"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_check_and_assign_missing_sources_all_products":{"get":{"summary":"Run Check And Assign Missing Sources All Products","description":"Check all Magento products and assign only missing inventory sources.\nExisting source assignments (and their qty/status) are not modified.","operationId":"run_check_and_assign_missing_sources_all_products_run_check_and_assign_missing_sources_all_products_get","parameters":[{"name":"sku_status","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sku Status"}},{"name":"only_one_source","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Only One Source"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_find_sales_rule_by_discount":{"get":{"summary":"Run Find Sales Rule By Discount","operationId":"run_find_sales_rule_by_discount_run_find_sales_rule_by_discount_get","parameters":[{"name":"discount","in":"query","required":false,"schema":{"type":"number","default":540,"title":"Discount"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_deduplicate_loyalty_sales_rules":{"get":{"summary":"Run Deduplicate Loyalty Sales Rules","operationId":"run_deduplicate_loyalty_sales_rules_run_deduplicate_loyalty_sales_rules_get","parameters":[{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Dry Run"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_cleanup_duplicate_loyalty_sales_rules":{"get":{"summary":"Run Cleanup Duplicate Loyalty Sales Rules","operationId":"run_cleanup_duplicate_loyalty_sales_rules_run_cleanup_duplicate_loyalty_sales_rules_get","parameters":[{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Dry Run"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_get_odoo_product":{"get":{"summary":"Run Get Odoo Product","operationId":"run_get_odoo_product_run_get_odoo_product_get","parameters":[{"name":"sku","in":"query","required":false,"schema":{"title":"Sku"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_get_products_missing_custom_categories":{"get":{"summary":"Run Get Products Missing Custom Categories","operationId":"run_get_products_missing_custom_categories_run_get_products_missing_custom_categories_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_top_invoiced_products":{"get":{"summary":"Run Top Invoiced Products","operationId":"run_top_invoiced_products_run_top_invoiced_products_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}},{"name":"limit_per_category","in":"query","required":false,"schema":{"type":"integer","default":3,"title":"Limit Per Category"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_get_stopped_products":{"get":{"summary":"Run Get Stopped Products","operationId":"run_get_stopped_products_run_get_stopped_products_get","parameters":[{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}},{"name":"stopped_days","in":"query","required":false,"schema":{"type":"integer","default":90,"title":"Stopped Days"}},{"name":"update_product","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Update Product"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_update_product_price_promo":{"get":{"summary":"Run Update Product Price Promo Endpoint","operationId":"run_update_product_price_promo_endpoint_run_update_product_price_promo_get","parameters":[{"name":"sync_start","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sync Start"}},{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Dry Run"}},{"name":"lookback_minutes","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Lookback Minutes"}},{"name":"product_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Product Ids"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_update_product_stock":{"get":{"summary":"Run Update Product Stock Endpoint","operationId":"run_update_product_stock_endpoint_run_update_product_stock_get","parameters":[{"name":"sync_start","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sync Start"}},{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Dry Run"}},{"name":"lookback_minutes","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Lookback Minutes"}},{"name":"product_template_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Product Template Ids"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_update_all_products_price_promo":{"get":{"summary":"Run Update All Products Price Promo Endpoint","operationId":"run_update_all_products_price_promo_endpoint_run_update_all_products_price_promo_get","parameters":[{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Dry Run"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_update_all_products_stock":{"get":{"summary":"Run Update All Products Stock Endpoint","operationId":"run_update_all_products_stock_endpoint_run_update_all_products_stock_get","parameters":[{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Dry Run"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_update_enabled_magento_products_price_promo_and_stock":{"get":{"summary":"Run Update Enabled Magento Products Price Promo And Stock","operationId":"run_update_enabled_magento_products_price_promo_and_stock_run_update_enabled_magento_products_price_promo_and_stock_get","parameters":[{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Dry Run"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_gfk_report":{"get":{"summary":"Run Gfk Report","description":"Generate and email the last completed weekly GfK report.","operationId":"run_gfk_report_run_gfk_report_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_tree_warranty_report":{"get":{"summary":"Run Tree Warranty Report Endpoint","description":"Email tree the warranty issuance + cancellation reports (the daily job).\n\n``dry_run`` defaults True -- pass ``dry_run=false`` to send and record.","operationId":"run_tree_warranty_report_endpoint_run_tree_warranty_report_get","parameters":[{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Dry Run"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_tv_installation_report":{"get":{"summary":"Run Tv Installation Report Endpoint","description":"Open TV installation backlog (the daily 04:00 job).\n\n``dry_run`` defaults True -- pass ``dry_run=false`` to email.\n``send_to`` (comma list) sends only there, no CC -- a test send.","operationId":"run_tv_installation_report_endpoint_run_tv_installation_report_get","parameters":[{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Dry Run"}},{"name":"send_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Send To"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/get_tree_warranty_preview":{"get":{"summary":"Get Tree Warranty Preview","description":"Dry run over ``[from_date, to_date)`` (YYYY-MM-DD, Riyadh): rows + rejections.","operationId":"get_tree_warranty_preview_get_tree_warranty_preview_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":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/get_tree_warranty_eligible_devices":{"get":{"summary":"Get Tree Warranty Eligible Devices","description":"Which devices each tree code covers, read live from the loyalty programs.","operationId":"get_tree_warranty_eligible_devices_get_tree_warranty_eligible_devices_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_export_odoo_attachments":{"get":{"summary":"Run Export Odoo Attachments","operationId":"run_export_odoo_attachments_run_export_odoo_attachments_get","parameters":[{"name":"date_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Before"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cleanup_synced_attachments":{"get":{"summary":"Run Cleanup Synced Attachments","operationId":"run_cleanup_synced_attachments_cleanup_synced_attachments_get","parameters":[{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"stock.picking","title":"Model"}},{"name":"before","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Before"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}},{"name":"batch_size","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Batch Size"}},{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Dry Run"}},{"name":"delete","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Delete"}},{"name":"synced_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Synced Only"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cleanup_account_move_pdf_attachments":{"get":{"summary":"Run Cleanup Account Move Pdf Attachments","operationId":"run_cleanup_account_move_pdf_attachments_cleanup_account_move_pdf_attachments_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}},{"name":"batch_size","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Batch Size"}},{"name":"before","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Before"}},{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Dry Run"}},{"name":"delete","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Delete"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_export_account_move_lines_2024":{"get":{"summary":"Run Export Account Move Lines 2024 Endpoint","operationId":"run_export_account_move_lines_2024_endpoint_run_export_account_move_lines_2024_get","parameters":[{"name":"output_path","in":"query","required":false,"schema":{"type":"string","description":"Destination XLSX path on disk.","default":"account_move_lines_2024.xlsx","title":"Output Path"},"description":"Destination XLSX path on disk."},{"name":"batch_size","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Batch size for downloading move lines from Odoo.","default":500,"title":"Batch Size"},"description":"Batch size for downloading move lines from Odoo."},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_update_inventory_adjustments_from_excel":{"get":{"summary":"Run Update Inventory Adjustments From Excel Endpoint","operationId":"run_update_inventory_adjustments_from_excel_endpoint_run_update_inventory_adjustments_from_excel_get","parameters":[{"name":"file_path","in":"query","required":false,"schema":{"type":"string","default":"/Users/omarabokhadra/odoo-api/Quants (Jard 2025) - Jard 25.xlsx","title":"File Path"}},{"name":"sheet_name","in":"query","required":false,"schema":{"type":"string","default":"Sheet1","title":"Sheet Name"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_update_inventory_adjustments_from_excel_diff":{"get":{"summary":"Run Update Inventory Adjustments From Excel Diff Endpoint","operationId":"run_update_inventory_adjustments_from_excel_diff_endpoint_run_update_inventory_adjustments_from_excel_diff_get","parameters":[{"name":"file_path","in":"query","required":false,"schema":{"type":"string","default":"/Users/omarabokhadra/Downloads/diff-20260215.xlsx","title":"File Path"}},{"name":"sheet_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sheet Name"}},{"name":"apply_inventory","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Apply Inventory"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_remove_categories_from_disabled_products":{"get":{"summary":"Run Remove Categories From Disabled Products","description":"Remove all categories (except the root 2) from disabled Magento products.","operationId":"run_remove_categories_from_disabled_products_run_remove_categories_from_disabled_products_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Run Remove Categories From Disabled Products Run Remove Categories From Disabled Products Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/credit_note_form_preview":{"get":{"summary":"Credit Note Form Preview","description":"Look up a credit note by name and serve its signed bank details form.","operationId":"credit_note_form_preview_credit_note_form_preview_get","parameters":[{"name":"name","in":"query","required":true,"schema":{"type":"string","description":"Credit note name e.g. RSIONL/2025/00027","title":"Name"},"description":"Credit note name e.g. RSIONL/2025/00027"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_check_customer_survey_forms":{"get":{"summary":"Run Check Customer Survey Forms","description":"Admin: scan eligible sale orders and emit survey links + notifications.","operationId":"run_check_customer_survey_forms_run_check_customer_survey_forms_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/get_customer_survey_results":{"get":{"summary":"Get Customer Survey Results","description":"Admin: stored survey results — overall, per question, branch and salesman.","operationId":"get_customer_survey_results_get_customer_survey_results_get","parameters":[{"name":"from_date","in":"query","required":false,"schema":{"type":"string","description":"YYYY-MM-DD, inclusive","default":"","title":"From Date"},"description":"YYYY-MM-DD, inclusive"},{"name":"to_date","in":"query","required":false,"schema":{"type":"string","description":"YYYY-MM-DD, exclusive","default":"","title":"To Date"},"description":"YYYY-MM-DD, exclusive"},{"name":"branch_name","in":"query","required":false,"schema":{"type":"string","description":"Filter to one branch / warehouse","default":"","title":"Branch Name"},"description":"Filter to one branch / warehouse"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Max responses listed (1-5000)","default":500,"title":"Limit"},"description":"Max responses listed (1-5000)"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/customer_survey_form_preview":{"get":{"summary":"Customer Survey Form Preview","description":"Preview the survey form for a sale order. Provide either sale_order_id or name.","operationId":"customer_survey_form_preview_customer_survey_form_preview_get","parameters":[{"name":"sale_order_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Sale Order Id"}},{"name":"name","in":"query","required":false,"schema":{"type":"string","description":"Sale order name e.g. SO/2026/00001","default":"","title":"Name"},"description":"Sale order name e.g. SO/2026/00001"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/customer_address_form_preview":{"get":{"summary":"Customer Address Form Preview","description":"Look up a customer by id and serve its signed location update form.","operationId":"customer_address_form_preview_customer_address_form_preview_get","parameters":[{"name":"partner_id","in":"query","required":true,"schema":{"type":"integer","description":"Odoo partner ID","title":"Partner Id"},"description":"Odoo partner ID"},{"name":"sale_order_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Optional Odoo sale order ID","title":"Sale Order Id"},"description":"Optional Odoo sale order ID"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/customer_address_form_preview_by_order_id":{"get":{"summary":"Customer Address Form Preview By Order Id","description":"Look up a sale order by id and serve its signed customer address form.","operationId":"customer_address_form_preview_by_order_id_customer_address_form_preview_by_order_id_get","parameters":[{"name":"sale_order_id","in":"query","required":true,"schema":{"type":"integer","description":"Odoo sale order ID","title":"Sale Order Id"},"description":"Odoo sale order ID"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/customer_address_form_confirm_success_preview_by_order_id":{"get":{"summary":"Customer Address Form Confirm Success Preview By Order Id","description":"Look up a sale order by id and serve the customer address form in post-confirm success state.","operationId":"customer_address_form_confirm_success_preview_by_order_id_customer_address_form_confirm_success_preview_by_order_id_get","parameters":[{"name":"sale_order_id","in":"query","required":true,"schema":{"type":"integer","description":"Odoo sale order ID","title":"Sale Order Id"},"description":"Odoo sale order ID"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/bank_details_form":{"get":{"summary":"Bank Details Form","operationId":"bank_details_form_bank_details_form_get","parameters":[{"name":"credit_note_id","in":"query","required":true,"schema":{"type":"integer","title":"Credit Note Id"}},{"name":"credit_note_name","in":"query","required":true,"schema":{"type":"string","title":"Credit Note Name"}},{"name":"mobile","in":"query","required":false,"schema":{"type":"string","default":"","title":"Mobile"}},{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}},{"name":"expires_at","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Expires At"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/customer_address_form":{"get":{"summary":"Customer Address Form","operationId":"customer_address_form_customer_address_form_get","parameters":[{"name":"partner_id","in":"query","required":true,"schema":{"type":"integer","title":"Partner Id"}},{"name":"partner_name","in":"query","required":true,"schema":{"type":"string","title":"Partner Name"}},{"name":"sale_order_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Sale Order Id"}},{"name":"sale_order_name","in":"query","required":false,"schema":{"type":"string","default":"","title":"Sale Order Name"}},{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}},{"name":"expires_at","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Expires At"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/customer_edit_form":{"get":{"summary":"Customer Edit Form","operationId":"customer_edit_form_customer_edit_form_get","parameters":[{"name":"partner_id","in":"query","required":true,"schema":{"type":"integer","title":"Partner Id"}},{"name":"partner_name","in":"query","required":true,"schema":{"type":"string","title":"Partner Name"}},{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}},{"name":"expires_at","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Expires At"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/submit_customer_edit_form":{"get":{"summary":"Run Submit Customer Edit Form","operationId":"run_submit_customer_edit_form_submit_customer_edit_form_get","parameters":[{"name":"partner_id","in":"query","required":true,"schema":{"type":"integer","title":"Partner Id"}},{"name":"partner_name","in":"query","required":true,"schema":{"type":"string","title":"Partner Name"}},{"name":"name","in":"query","required":true,"schema":{"type":"string","title":"Name"}},{"name":"is_company","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Is Company"}},{"name":"email","in":"query","required":false,"schema":{"type":"string","default":"","title":"Email"}},{"name":"vat","in":"query","required":false,"schema":{"type":"string","default":"","title":"Vat"}},{"name":"zip_code","in":"query","required":false,"schema":{"type":"string","default":"","title":"Zip Code"}},{"name":"building_number","in":"query","required":false,"schema":{"type":"string","default":"","title":"Building Number"}},{"name":"plot_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Plot Id"}},{"name":"company_registry","in":"query","required":false,"schema":{"type":"string","default":"","title":"Company Registry"}},{"name":"change_address","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Change Address"}},{"name":"street","in":"query","required":false,"schema":{"type":"string","default":"","title":"Street"}},{"name":"street2","in":"query","required":false,"schema":{"type":"string","default":"","title":"Street2"}},{"name":"short_address","in":"query","required":false,"schema":{"type":"string","default":"","title":"Short Address"}},{"name":"city_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"City Id"}},{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}},{"name":"expires_at","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Expires At"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_check_customer_edit_forms":{"get":{"summary":"Run Check Customer Edit Forms","operationId":"run_check_customer_edit_forms_run_check_customer_edit_forms_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/customer_edit_form_preview":{"get":{"summary":"Customer Edit Form Preview","description":"Preview the edit form for QA — bypasses HMAC + eligibility checks.\n\nRenders the form HTML directly from the partner record regardless of\ntoken, expiry, or order count. Submits from the preview still go through\nfull validation in ``/submit_customer_edit_form``.","operationId":"customer_edit_form_preview_customer_edit_form_preview_get","parameters":[{"name":"partner_id","in":"query","required":true,"schema":{"type":"integer","title":"Partner Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/submit_bank_details":{"get":{"summary":"Run Submit Bank Details","operationId":"run_submit_bank_details_submit_bank_details_get","parameters":[{"name":"credit_note_id","in":"query","required":true,"schema":{"type":"integer","title":"Credit Note Id"}},{"name":"credit_note_name","in":"query","required":true,"schema":{"type":"string","title":"Credit Note Name"}},{"name":"mobile","in":"query","required":true,"schema":{"type":"string","title":"Mobile"}},{"name":"full_name","in":"query","required":true,"schema":{"type":"string","title":"Full Name"}},{"name":"iban","in":"query","required":true,"schema":{"type":"string","title":"Iban"}},{"name":"bank_name","in":"query","required":true,"schema":{"type":"string","title":"Bank Name"}},{"name":"customer_agreement","in":"query","required":true,"schema":{"type":"boolean","title":"Customer Agreement"}},{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"expires_at","in":"query","required":true,"schema":{"type":"integer","title":"Expires At"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/submit_customer_update":{"get":{"summary":"Run Submit Customer Update","operationId":"run_submit_customer_update_submit_customer_update_get","parameters":[{"name":"partner_id","in":"query","required":true,"schema":{"type":"integer","title":"Partner Id"}},{"name":"partner_name","in":"query","required":true,"schema":{"type":"string","title":"Partner Name"}},{"name":"sale_order_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Sale Order Id"}},{"name":"sale_order_name","in":"query","required":false,"schema":{"type":"string","default":"","title":"Sale Order Name"}},{"name":"street","in":"query","required":false,"schema":{"type":"string","default":"","title":"Street"}},{"name":"street2","in":"query","required":false,"schema":{"type":"string","default":"","title":"Street2"}},{"name":"zip","in":"query","required":false,"schema":{"type":"string","default":"","title":"Zip"}},{"name":"building_number","in":"query","required":false,"schema":{"type":"string","default":"","title":"Building Number"}},{"name":"short_address","in":"query","required":false,"schema":{"type":"string","default":"","title":"Short Address"}},{"name":"city_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"City Id"}},{"name":"partner_latitude","in":"query","required":false,"schema":{"type":"string","default":"","title":"Partner Latitude"}},{"name":"partner_longitude","in":"query","required":false,"schema":{"type":"string","default":"","title":"Partner Longitude"}},{"name":"clear_location","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Clear Location"}},{"name":"delivery_action","in":"query","required":false,"schema":{"type":"string","default":"confirm","title":"Delivery Action"}},{"name":"delivery_address_type","in":"query","required":false,"schema":{"type":"string","default":"home","title":"Delivery Address Type"}},{"name":"selected_delivery_partner_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Selected Delivery Partner Id"}},{"name":"recipient_name","in":"query","required":false,"schema":{"type":"string","default":"","title":"Recipient Name"}},{"name":"recipient_mobile","in":"query","required":false,"schema":{"type":"string","default":"","title":"Recipient Mobile"}},{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"expires_at","in":"query","required":true,"schema":{"type":"integer","title":"Expires At"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/submit_customer_basic_info":{"get":{"summary":"Run Submit Customer Basic Info","operationId":"run_submit_customer_basic_info_submit_customer_basic_info_get","parameters":[{"name":"partner_id","in":"query","required":true,"schema":{"type":"integer","title":"Partner Id"}},{"name":"partner_name","in":"query","required":true,"schema":{"type":"string","title":"Partner Name"}},{"name":"email","in":"query","required":false,"schema":{"type":"string","default":"","title":"Email"}},{"name":"sale_order_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Sale Order Id"}},{"name":"sale_order_name","in":"query","required":false,"schema":{"type":"string","default":"","title":"Sale Order Name"}},{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"expires_at","in":"query","required":true,"schema":{"type":"integer","title":"Expires At"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/get_customer_update_map_parts":{"get":{"summary":"Run Get Customer Update Map Parts","operationId":"run_get_customer_update_map_parts_get_customer_update_map_parts_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","title":"Lat"}},{"name":"lng","in":"query","required":true,"schema":{"type":"number","title":"Lng"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/get_customer_new_map_parts":{"get":{"summary":"Run Get Customer New Map Parts","operationId":"run_get_customer_new_map_parts_get_customer_new_map_parts_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","title":"Lat"}},{"name":"lng","in":"query","required":true,"schema":{"type":"number","title":"Lng"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/get_customer_update_cities":{"get":{"summary":"Run Get Customer Update Cities","operationId":"run_get_customer_update_cities_get_customer_update_cities_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/run_check_credit_note_forms":{"get":{"summary":"Run Check Credit Note Forms","operationId":"run_check_credit_note_forms_run_check_credit_note_forms_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_check_sale_order_customer_address_forms":{"get":{"summary":"Run Check Sale Order Customer Address Forms","operationId":"run_check_sale_order_customer_address_forms_run_check_sale_order_customer_address_forms_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_set_sale_order_customer_address_form_link":{"get":{"summary":"Run Set Sale Order Customer Address Form Link","operationId":"run_set_sale_order_customer_address_form_link_run_set_sale_order_customer_address_form_link_get","parameters":[{"name":"sale_order_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Odoo sale order ID","title":"Sale Order Id"},"description":"Odoo sale order ID"},{"name":"sale_order_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Odoo sale order name (e.g. SIHQR/2026/00701)","title":"Sale Order Name"},"description":"Odoo sale order name (e.g. SIHQR/2026/00701)"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_cleanup_delivery_address_parent_links":{"get":{"summary":"Run Cleanup Delivery Address Parent Links","operationId":"run_cleanup_delivery_address_parent_links_run_cleanup_delivery_address_parent_links_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":500,"title":"Limit"}},{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Dry Run"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_update_recent_city_state":{"get":{"summary":"Run Update Recent City State","operationId":"run_update_recent_city_state_run_update_recent_city_state_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":500,"title":"Limit"}},{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Dry Run"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/run_update_all_partners_state_from_city":{"get":{"summary":"Run Update All Partners State From City","operationId":"run_update_all_partners_state_from_city_run_update_all_partners_state_from_city_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50000,"minimum":1,"default":1000,"title":"Limit"}},{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Dry Run"}},{"name":"state_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"If provided, only update partners linked to this state ID","title":"State Id"},"description":"If provided, only update partners linked to this state ID"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/validate_partners_state_city_alignment":{"get":{"summary":"Api Validate Partners State City Alignment","operationId":"api_validate_partners_state_city_alignment_validate_partners_state_city_alignment_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":500,"title":"Limit"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}