{"openapi":"3.1.0","info":{"title":"FastAPI","version":"0.1.0"},"paths":{"/byb-bar":{"get":{"tags":["BYB Public"],"summary":"Get Announcement","operationId":"get_announcement_byb_bar_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/byb/2025-02/announcement":{"post":{"tags":["BYB Utils"],"summary":"Update Announcement","operationId":"update_announcement_byb_2025_02_announcement_post","parameters":[{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnouncementUpdatePayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/shopify/order-created":{"post":{"tags":["Shopify"],"summary":"Handle Order Created","operationId":"handle_order_created_shopify_order_created_post","parameters":[{"name":"x-shopify-hmac-sha256","in":"header","required":false,"schema":{"type":"string","title":"X-Shopify-Hmac-Sha256"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/shopify/customer-update":{"post":{"tags":["Shopify"],"summary":"Handle Shopify User Login","operationId":"handle_shopify_user_login_shopify_customer_update_post","parameters":[{"name":"x-shopify-hmac-sha256","in":"header","required":false,"schema":{"type":"string","title":"X-Shopify-Hmac-Sha256"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/shopify/draft-order-created":{"post":{"tags":["Shopify"],"summary":"Handle Draft Order Created","operationId":"handle_draft_order_created_shopify_draft_order_created_post","parameters":[{"name":"x-shopify-hmac-sha256","in":"header","required":false,"schema":{"type":"string","title":"X-Shopify-Hmac-Sha256"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/shopify/invoice":{"get":{"tags":["Shopify"],"summary":"Download Invoice","description":"Invoice/receipt PDF for one order.\n\nEvery caller must prove it may see the order, one of two ways:\n\n* `token` = the order's `invoice.token` metafield (Shopify's order token, written by\n  /shopify/order-created). Customers get it from their account page (Liquid\n  `order.metafields.invoice.token`).\n* `exp` + `sig` = a staff link from POST /staff/invoice-link (api/services/shopify/staff_links.py): an\n  HMAC over \"order_id|docType|exp\", valid 5 minutes. The Backyard Brains admin app (order page action\n  extension and app home) gets one with the staff member's Shopify session token. The order is then read\n  with the API's own Admin token, so old orders work too.\n\nA missing id, missing token/signature, unknown order, order without a stored token, wrong token, and a\ntampered or expired signature all return the same 404 so the endpoint does not reveal which orders exist.\nWhen `token` is given it is the only proof checked (the token path is unchanged).\nThe PDF itself comes from api/services/shopify/invoice_document.py (shared with POST /site/invoice).","operationId":"download_invoice_shopify_invoice_get","parameters":[{"name":"order_id","in":"query","required":true,"schema":{"type":"string","title":"Order Id"}},{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}},{"name":"docType","in":"query","required":false,"schema":{"type":"string","default":"Invoice","title":"Doctype"}},{"name":"exp","in":"query","required":false,"schema":{"type":"string","default":"","title":"Exp"}},{"name":"sig","in":"query","required":false,"schema":{"type":"string","default":"","title":"Sig"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/shopify/sync-latest-posts":{"post":{"tags":["Shopify"],"summary":"Sync Latest Wp Posts","operationId":"sync_latest_wp_posts_shopify_sync_latest_posts_post","parameters":[{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/shopify/transaction-created":{"post":{"tags":["Shopify"],"summary":"Handle Transaction Created","description":"Webhook for `transactions/create`.\nFires on every financial event (capture, refund, etc).","operationId":"handle_transaction_created_shopify_transaction_created_post","parameters":[{"name":"x-shopify-hmac-sha256","in":"header","required":false,"schema":{"type":"string","title":"X-Shopify-Hmac-Sha256"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/shopify/order-cancelled":{"post":{"tags":["Shopify"],"summary":"Handle Order Cancelled","description":"Shopify `orders/cancelled`: a couple of minutes later, check Xero shows nothing owed for the order\n(api/services/xero/cancellations.py), and email a person if it does.","operationId":"handle_order_cancelled_shopify_order_cancelled_post","parameters":[{"name":"x-shopify-hmac-sha256","in":"header","required":false,"schema":{"type":"string","title":"X-Shopify-Hmac-Sha256"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/shopify/refund-created":{"post":{"tags":["Shopify"],"summary":"Handle Refund Created","operationId":"handle_refund_created_shopify_refund_created_post","parameters":[{"name":"x-shopify-hmac-sha256","in":"header","required":false,"schema":{"type":"string","title":"X-Shopify-Hmac-Sha256"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/shopify/order-updated":{"post":{"tags":["Shopify"],"summary":"Handle Order Updated","operationId":"handle_order_updated_shopify_order_updated_post","parameters":[{"name":"x-shopify-hmac-sha256","in":"header","required":false,"schema":{"type":"string","title":"X-Shopify-Hmac-Sha256"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/shopify/reconcile":{"post":{"tags":["Shopify"],"summary":"Reconcile Order","description":"Mark an order as reconciled in Shopify.","operationId":"reconcile_order_shopify_reconcile_post","parameters":[{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/shopify/bulk-reconcile":{"post":{"tags":["Shopify"],"summary":"Bulk Reconcile","description":"Mark multiple orders as reconciled in Shopify.","operationId":"bulk_reconcile_shopify_bulk_reconcile_post","parameters":[{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/shopify/audit-state":{"get":{"tags":["Shopify"],"summary":"Get Shopify Audit State","description":"Expose Shopify audit local state for server-side callers.\n\nThis is intentionally an integration-domain endpoint, not a Cortex/BFF route.","operationId":"get_shopify_audit_state_shopify_audit_state_get","parameters":[{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/shopify/audit-payments":{"post":{"tags":["Shopify"],"summary":"Mark Shopify Audit Payments","description":"Mark one or more Xero payment IDs as audited in the Shopify audit log.","operationId":"mark_shopify_audit_payments_shopify_audit_payments_post","parameters":[{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditPaymentsPayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/shopify/payouts/{payout_id}/mark-reconciled":{"post":{"tags":["Shopify"],"summary":"Mark Shopify Payout Reconciled","description":"Advance the Shopify payout reconciliation cursor.","operationId":"mark_shopify_payout_reconciled_shopify_payouts__payout_id__mark_reconciled_post","parameters":[{"name":"payout_id","in":"path","required":true,"schema":{"type":"string","title":"Payout Id"}},{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/shopify/mark-paid":{"post":{"tags":["Shopify"],"summary":"Mark Paid","operationId":"mark_paid_shopify_mark_paid_post","parameters":[{"name":"order_name","in":"query","required":true,"schema":{"type":"string","title":"Order Name"}},{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/shopify/audit-unpaid-against-xero":{"get":{"tags":["Shopify"],"summary":"Audit Unpaid Against Xero","description":"Audit Shopify unpaid orders against Xero to find discrepancies.\nSource of truth for 'Paid' status is Xero.","operationId":"audit_unpaid_against_xero_shopify_audit_unpaid_against_xero_get","parameters":[{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/shopify/order-audit":{"get":{"tags":["Shopify"],"summary":"Shopify Order Audit","operationId":"shopify_order_audit_shopify_order_audit_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":150,"title":"Limit"}},{"name":"before_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Before Date"}},{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/discourse/user-updated":{"post":{"tags":["Discourse"],"summary":"Discourse User Updated","operationId":"discourse_user_updated_discourse_user_updated_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/xero/sync-orders":{"post":{"tags":["Xero Sync"],"summary":"Sync Orders","operationId":"sync_orders_xero_sync_orders_post","parameters":[{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/xero/sync-order-by-number":{"post":{"tags":["Xero Sync"],"summary":"Sync Specific Order By Number","operationId":"sync_specific_order_by_number_xero_sync_order_by_number_post","parameters":[{"name":"order_number","in":"query","required":true,"schema":{"type":"integer","title":"Order Number"}},{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Force"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/xero/sync-contact-by-order":{"post":{"tags":["Xero Sync"],"summary":"Sync Contact By Order","operationId":"sync_contact_by_order_xero_sync_contact_by_order_post","parameters":[{"name":"order_number","in":"query","required":true,"schema":{"type":"integer","title":"Order Number"}},{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/xero/sync-payouts":{"post":{"tags":["Xero Sync"],"summary":"Sync Shopify Payouts","operationId":"sync_shopify_payouts_xero_sync_payouts_post","parameters":[{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}},{"name":"payout_date","in":"query","required":false,"schema":{"type":"string","title":"Payout Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/xero/add-payout/{payout_id}":{"post":{"tags":["Xero Sync"],"summary":"Xero Add Payout","operationId":"xero_add_payout_xero_add_payout__payout_id__post","parameters":[{"name":"payout_id","in":"path","required":true,"schema":{"type":"string","title":"Payout Id"}},{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/xero/fix-rounding":{"post":{"tags":["Xero Sync"],"summary":"Xero Fix Rounding","operationId":"xero_fix_rounding_xero_fix_rounding_post","parameters":[{"name":"invoice_id","in":"query","required":true,"schema":{"type":"string","title":"Invoice Id"}},{"name":"target_amount","in":"query","required":true,"schema":{"type":"number","title":"Target Amount"}},{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/xero/shopify-orders/{order_id}/mark-paid":{"post":{"tags":["Xero Sync"],"summary":"Xero Mark Shopify Order Paid","description":"Create the missing Xero payment for a Shopify order.\n\nThe first call should use confirm=false to get a JSON preview. The mutation\nonly runs when confirm=true, so BFF/UI callers can show exactly what will happen.","operationId":"xero_mark_shopify_order_paid_xero_shopify_orders__order_id__mark_paid_post","parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"string","title":"Order Id"}},{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmableActionPayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/xero/shopify-receivables/{order_id}/payment":{"post":{"tags":["Xero Sync"],"summary":"Xero Create Shopify Receivable Payment","description":"Preview or create the missing Xero payment for a Shopify-origin receivable.","operationId":"xero_create_shopify_receivable_payment_xero_shopify_receivables__order_id__payment_post","parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"string","title":"Order Id"}},{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmableActionPayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/xero/shopify-orders/{order_id}/redo":{"post":{"tags":["Xero Sync"],"summary":"Xero Redo Shopify Order","description":"Rebuild a Shopify order's Xero invoice/payment state.\n\nThe first call should use confirm=false to preview affected payments. The\nmutation only runs when confirm=true.","operationId":"xero_redo_shopify_order_xero_shopify_orders__order_id__redo_post","parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"string","title":"Order Id"}},{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmableActionPayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/xero/invoice-update":{"post":{"tags":["Xero Sync"],"summary":"Xero Invoice Update","operationId":"xero_invoice_update_xero_invoice_update_post","parameters":[{"name":"x-xero-signature","in":"header","required":false,"schema":{"type":"string","title":"X-Xero-Signature"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/xero/report-negative-fees":{"get":{"tags":["Xero Sync"],"summary":"Report Negative Fee Invoices","description":"Report invoices with legacy negative fee line items (PAYMENT_FEE) from start_date to present.","operationId":"report_negative_fee_invoices_xero_report_negative_fees_get","parameters":[{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/xero/report-rounding-adjustments-2026":{"get":{"tags":["Xero Sync"],"summary":"Report Large Rounding Adjustments 2026","description":"Read-only backfill audit for 2026 Xero invoices with large Rounding Adjustment lines.","operationId":"report_large_rounding_adjustments_2026_xero_report_rounding_adjustments_2026_get","parameters":[{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}},{"name":"min_amount","in":"query","required":false,"schema":{"type":"number","default":1.0,"title":"Min Amount"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/xero/shopify-receivables/audit":{"get":{"tags":["Xero Sync"],"summary":"Audit Shopify Receivables","description":"Audit Xero open receivables for Shopify-origin orders against Shopify status.","operationId":"audit_shopify_receivables_xero_shopify_receivables_audit_get","parameters":[{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/xero/audit-unpaid-against-shopify":{"get":{"tags":["Xero Sync"],"summary":"Audit Unpaid Against Shopify","description":"Compatibility alias for /xero/shopify-receivables/audit.","operationId":"audit_unpaid_against_shopify_xero_audit_unpaid_against_shopify_get","parameters":[{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/xero/items/check":{"post":{"tags":["Xero Sync"],"summary":"Items Check","operationId":"items_check_xero_items_check_post","parameters":[{"name":"sku","in":"query","required":true,"schema":{"type":"string","title":"Sku"}},{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/xero/items/audit":{"post":{"tags":["Xero Sync"],"summary":"Items Audit","operationId":"items_audit_xero_items_audit_post","parameters":[{"name":"create_missing","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Create Missing"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":250,"title":"Limit"}},{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/xero/token":{"get":{"tags":["Xero Sync"],"summary":"Xero Token","operationId":"xero_token_xero_token_get","parameters":[{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/xero/auth-start":{"get":{"tags":["Xero Auth"],"summary":"Xero Auth Start","description":"Initiate Xero authentication by returning the redirect URL.","operationId":"xero_auth_start_xero_auth_start_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/xero/callback":{"get":{"tags":["Xero Auth"],"summary":"Xero Callback","description":"Handle the callback from Xero after user authorization.\nExchanges the code for tokens, retrieves the tenant ID,\nand saves the tokens for future use.","operationId":"xero_callback_xero_callback_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/search/history":{"get":{"tags":["Search"],"summary":"Search History Endpoint","description":"Get search history logs.","operationId":"search_history_endpoint_search_history_get","parameters":[{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/search/":{"get":{"tags":["Search"],"summary":"Search All","operationId":"search_all_search__get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","title":"Q"}},{"name":"index","in":"query","required":false,"schema":{"type":"string","description":"Indices to search (e.g., 'products', 'experiments, pages' or 'experiments pages').Valid indices: products, experiments, pages, forum, docs, blog","title":"Index"},"description":"Indices to search (e.g., 'products', 'experiments, pages' or 'experiments pages').Valid indices: products, experiments, pages, forum, docs, blog"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/search/suggest":{"get":{"tags":["Search"],"summary":"Suggest","operationId":"suggest_search_suggest_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/search/reindex/{site}":{"post":{"tags":["Search"],"summary":"Reindex Site","operationId":"reindex_site_search_reindex__site__post","parameters":[{"name":"site","in":"path","required":true,"schema":{"type":"string","title":"Site"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/metabase/embed-question-url":{"get":{"tags":["Metabase","Metabase Image"],"summary":"Get Metabase Question Embed Url","operationId":"get_metabase_question_embed_url_metabase_embed_question_url_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"integer","title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/metabase/embed-url":{"get":{"tags":["Metabase","Metabase Image"],"summary":"Get Metabase Embed Url","operationId":"get_metabase_embed_url_metabase_embed_url_get","parameters":[{"name":"entity","in":"query","required":true,"schema":{"type":"string","title":"Entity"}},{"name":"id","in":"query","required":true,"schema":{"type":"integer","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/metabase/sync-order/{order_identifier}":{"post":{"tags":["Metabase"],"summary":"Sync Shopify Order","operationId":"sync_shopify_order_metabase_sync_order__order_identifier__post","parameters":[{"name":"order_identifier","in":"path","required":true,"schema":{"type":"string","title":"Order Identifier"}},{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/metabase/audit":{"get":{"tags":["Metabase","Metabase Audit"],"summary":"Audit Metabase Orders","operationId":"audit_metabase_orders_metabase_audit_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":250,"title":"Limit"}},{"name":"sync_missing","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Sync Missing"}},{"name":"before_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Before Date"}},{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/payroll/process":{"post":{"tags":["Payroll"],"summary":"Process Payroll","operationId":"process_payroll_payroll_process_post","parameters":[{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_process_payroll_payroll_process_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/payroll/folders":{"get":{"tags":["Payroll"],"summary":"List Payroll Folders","operationId":"list_payroll_folders_payroll_folders_get","parameters":[{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/payroll/status":{"get":{"tags":["Payroll"],"summary":"Get Payroll Status","operationId":"get_payroll_status_payroll_status_get","parameters":[{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/payroll/create-next":{"post":{"tags":["Payroll"],"summary":"Create Next Payroll","operationId":"create_next_payroll_payroll_create_next_post","parameters":[{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/payroll/send-to-xero":{"post":{"tags":["Payroll"],"summary":"Send Payroll To Xero Endpoint","operationId":"send_payroll_to_xero_endpoint_payroll_send_to_xero_post","parameters":[{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workshops/report":{"get":{"tags":["workshops"],"summary":"Get Workshop Report","description":"Get the workshop report data.","operationId":"get_workshop_report_api_workshops_report_get","parameters":[{"name":"upcoming","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Upcoming"}},{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workshops/{workshop_id}/registrations":{"get":{"tags":["workshops"],"summary":"Get Workshop Registrations","description":"Get detailed registrations for a workshop.","operationId":"get_workshop_registrations_api_workshops__workshop_id__registrations_get","parameters":[{"name":"workshop_id","in":"path","required":true,"schema":{"type":"integer","title":"Workshop Id"}},{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workshops/{workshop_id}/signin-sheet":{"post":{"tags":["workshops"],"summary":"Create Signin Sheet","description":"Create a Google Sheet sign-in sheet for a workshop.","operationId":"create_signin_sheet_api_workshops__workshop_id__signin_sheet_post","parameters":[{"name":"workshop_id","in":"path","required":true,"schema":{"type":"integer","title":"Workshop Id"}},{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workshops/interest":{"get":{"tags":["workshops"],"summary":"Get Recent Interest","description":"Get recent expressions of interest.","operationId":"get_recent_interest_api_workshops_interest_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}},{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workshops/{workshop_id}/registrations/mailerlite-status":{"get":{"tags":["workshops"],"summary":"Get Workshop Mailerlite Status","description":"Check MailerLite status for all attendees of a workshop.","operationId":"get_workshop_mailerlite_status_api_workshops__workshop_id__registrations_mailerlite_status_get","parameters":[{"name":"workshop_id","in":"path","required":true,"schema":{"type":"integer","title":"Workshop Id"}},{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workshops/mailerlite/subscribe":{"post":{"tags":["workshops"],"summary":"Subscribe User","description":"Subscribe a user to MailerLite.","operationId":"subscribe_user_api_workshops_mailerlite_subscribe_post","parameters":[{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/meta/refresh":{"post":{"tags":["Meta Ads"],"summary":"Refresh Meta Data","description":"Triggers a refresh of Meta Ads data in the Google Sheet.\nRuns asynchronously in the background to avoid worker timeouts.","operationId":"refresh_meta_data_api_meta_refresh_post","parameters":[{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/meta/report":{"get":{"tags":["Meta Ads"],"summary":"Get Meta Report","description":"Returns the aggregated Meta Ads report.","operationId":"get_meta_report_api_meta_report_get","parameters":[{"name":"start_date","in":"query","required":false,"schema":{"type":"string","title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"type":"string","title":"End Date"}},{"name":"aggregation","in":"query","required":false,"schema":{"type":"string","default":"day","title":"Aggregation"}},{"name":"product","in":"query","required":false,"schema":{"type":"string","title":"Product"}},{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/meta/debug/raw":{"get":{"tags":["Meta Ads"],"summary":"Debug Raw Meta Data","description":"DEBUG: Fetches raw insights directly from Meta API without any caching/processing.\nCompare this output with what the MCP returns.","operationId":"debug_raw_meta_data_api_meta_debug_raw_get","parameters":[{"name":"start_date","in":"query","required":false,"schema":{"type":"string","default":"2025-12-09","title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"type":"string","default":"2025-12-17","title":"End Date"}},{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/meta/debug/mcp-style":{"get":{"tags":["Meta Ads"],"summary":"Debug Mcp Style Fetch","description":"DEBUG: Fetches insights using the EXACT same method as meta-ads-mcp.\nUses direct REST API calls, not the SDK.\nHandles pagination to get all results.","operationId":"debug_mcp_style_fetch_api_meta_debug_mcp_style_get","parameters":[{"name":"start_date","in":"query","required":false,"schema":{"type":"string","default":"2025-12-09","title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"type":"string","default":"2025-12-17","title":"End Date"}},{"name":"level","in":"query","required":false,"schema":{"type":"string","default":"adset","title":"Level"}},{"name":"daily","in":"query","required":false,"schema":{"type":"boolean","description":"Use time_increment=1 for daily breakdown","default":true,"title":"Daily"},"description":"Use time_increment=1 for daily breakdown"},{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/meta/auth":{"get":{"tags":["Meta Auth"],"summary":"Meta Auth Start","description":"Initiate Meta authentication by redirecting to Facebook.","operationId":"meta_auth_start_api_meta_auth_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/meta/callback":{"get":{"tags":["Meta Auth"],"summary":"Meta Callback","description":"Handle the callback from Meta, exchange code for tokens, and save.","operationId":"meta_callback_api_meta_callback_get","parameters":[{"name":"code","in":"query","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dashboard/scheduler/":{"get":{"tags":["Scheduler"],"summary":"Get Scheduler Dashboard","operationId":"get_scheduler_dashboard_dashboard_scheduler__get","parameters":[{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dashboard/scheduler/job/{job_id}/pause":{"post":{"tags":["Scheduler"],"summary":"Pause Scheduler Job","operationId":"pause_scheduler_job_dashboard_scheduler_job__job_id__pause_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dashboard/scheduler/job/{job_id}/resume":{"post":{"tags":["Scheduler"],"summary":"Resume Scheduler Job","operationId":"resume_scheduler_job_dashboard_scheduler_job__job_id__resume_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dashboard/scheduler/job/{job_id}/run":{"post":{"tags":["Scheduler"],"summary":"Run Scheduler Job","operationId":"run_scheduler_job_dashboard_scheduler_job__job_id__run_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"secret","in":"query","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contact":{"post":{"tags":["site-forms"],"summary":"Contact","operationId":"contact_contact_post","parameters":[{"name":"x-internal-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactForm"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/site/shopify-session":{"post":{"tags":["site-forms"],"summary":"Shopify Session","operationId":"shopify_session_site_shopify_session_post","parameters":[{"name":"x-internal-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopifySessionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/site/me":{"post":{"tags":["site-forms"],"summary":"Site Member","operationId":"site_member_site_me_post","parameters":[{"name":"x-internal-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteMeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/site/invoice":{"post":{"tags":["site-forms"],"summary":"Site Order Document","operationId":"site_order_document_site_invoice_post","parameters":[{"name":"x-internal-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteInvoiceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/staff/invoice-link":{"post":{"tags":["staff"],"summary":"Invoice Link","operationId":"invoice_link_staff_invoice_link_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceLinkRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/site/quotes/estimate":{"post":{"tags":["site-quotes"],"summary":"Estimate","operationId":"estimate_site_quotes_estimate_post","parameters":[{"name":"x-internal-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EstimateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/site/quotes/create":{"post":{"tags":["site-quotes"],"summary":"Create","operationId":"create_site_quotes_create_post","parameters":[{"name":"idempotency-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}},{"name":"x-internal-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/site/quotes/list":{"post":{"tags":["site-quotes"],"summary":"List Quotes","operationId":"list_quotes_site_quotes_list_post","parameters":[{"name":"x-internal-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__routers__site_tax__Member"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/site/quotes/pdf":{"post":{"tags":["site-quotes"],"summary":"Quote Pdf","operationId":"quote_pdf_site_quotes_pdf_post","parameters":[{"name":"x-internal-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteRef"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/site/quotes/prepay":{"post":{"tags":["site-quotes"],"summary":"Prepay","operationId":"prepay_site_quotes_prepay_post","parameters":[{"name":"x-internal-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteRef"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/site/quotes/po":{"post":{"tags":["site-quotes"],"summary":"Purchase Order","operationId":"purchase_order_site_quotes_po_post","parameters":[{"name":"x-internal-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PoRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/site/job-applications":{"post":{"tags":["site-jobs"],"summary":"Job Application","operationId":"job_application_site_job_applications_post","parameters":[{"name":"x-internal-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/site/cart/po-file":{"post":{"tags":["site-cart"],"summary":"Po File","operationId":"po_file_site_cart_po_file_post","parameters":[{"name":"x-internal-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/site/tax-exemption/status":{"post":{"tags":["site-tax-exemption"],"summary":"Status","operationId":"status_site_tax_exemption_status_post","parameters":[{"name":"x-internal-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__routers__site_tax__Member"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/site/tax-exemption/submit":{"post":{"tags":["site-tax-exemption"],"summary":"Submit","operationId":"submit_site_tax_exemption_submit_post","parameters":[{"name":"x-internal-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/shopify/carrier-rates":{"post":{"tags":["Shopify"],"summary":"Carrier Rates Callback","operationId":"carrier_rates_callback_shopify_carrier_rates_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/":{"get":{"summary":"Root","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AnnouncementUpdatePayload":{"properties":{"message":{"type":"string","title":"Message"}},"type":"object","required":["message"],"title":"AnnouncementUpdatePayload"},"AuditPaymentsPayload":{"properties":{"payout_id":{"type":"string","title":"Payout Id","default":"manual_audit"},"payment_ids":{"items":{"type":"string"},"type":"array","title":"Payment Ids"},"payment_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Date"}},"type":"object","title":"AuditPaymentsPayload"},"Body_process_payroll_payroll_process_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_process_payroll_payroll_process_post"},"ConfirmableActionPayload":{"properties":{"confirm":{"type":"boolean","title":"Confirm","default":false}},"type":"object","title":"ConfirmableActionPayload"},"ContactForm":{"properties":{"name":{"type":"string","maxLength":200,"title":"Name"},"email":{"type":"string","maxLength":200,"title":"Email"},"phone":{"type":"string","maxLength":80,"title":"Phone","default":""},"subject":{"type":"string","maxLength":200,"title":"Subject","default":""},"message":{"type":"string","maxLength":8000,"title":"Message"},"source":{"type":"string","maxLength":200,"title":"Source","default":""}},"type":"object","required":["name","email","message"],"title":"ContactForm"},"CreateRequest":{"properties":{"sub":{"type":"string","maxLength":200,"minLength":1,"title":"Sub"},"lines":{"items":{"$ref":"#/components/schemas/QuoteLine"},"type":"array","maxItems":50,"minItems":1,"title":"Lines"},"shippingAddress":{"$ref":"#/components/schemas/QuoteAddress"},"payment":{"type":"string","enum":["prepay","po"],"title":"Payment"},"shippingRateHandle":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Shippingratehandle"},"institution":{"type":"string","maxLength":120,"minLength":1,"title":"Institution"},"poNumber":{"anyOf":[{"type":"string","maxLength":60},{"type":"null"}],"title":"Ponumber"},"note":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Note"},"invoiceEmail":{"anyOf":[{"type":"string","maxLength":254},{"type":"null"}],"title":"Invoiceemail"}},"type":"object","required":["sub","lines","shippingAddress","payment","shippingRateHandle","institution"],"title":"CreateRequest"},"EstimateRequest":{"properties":{"sub":{"type":"string","maxLength":200,"minLength":1,"title":"Sub"},"lines":{"items":{"$ref":"#/components/schemas/QuoteLine"},"type":"array","maxItems":50,"minItems":1,"title":"Lines"},"shippingAddress":{"$ref":"#/components/schemas/QuoteAddress"},"payment":{"type":"string","enum":["prepay","po"],"title":"Payment"},"shippingRateHandle":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Shippingratehandle"}},"type":"object","required":["sub","lines","shippingAddress","payment"],"title":"EstimateRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"InvoiceLinkRequest":{"properties":{"orderId":{"anyOf":[{"type":"integer"},{"type":"string"}],"title":"Orderid"},"docType":{"type":"string","maxLength":20,"title":"Doctype"}},"type":"object","required":["orderId","docType"],"title":"InvoiceLinkRequest"},"PoFile":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"contentType":{"type":"string","const":"application/pdf","title":"Contenttype"},"base64":{"type":"string","maxLength":13981080,"minLength":1,"title":"Base64"}},"type":"object","required":["name","contentType","base64"],"title":"PoFile"},"PoRequest":{"properties":{"sub":{"type":"string","maxLength":200,"minLength":1,"title":"Sub"},"quoteId":{"anyOf":[{"type":"integer"},{"type":"string"}],"title":"Quoteid"},"poNumber":{"type":"string","maxLength":60,"minLength":1,"title":"Ponumber"},"file":{"$ref":"#/components/schemas/PoFile"},"invoiceEmail":{"anyOf":[{"type":"string","maxLength":254},{"type":"null"}],"title":"Invoiceemail"}},"type":"object","required":["sub","quoteId","poNumber","file"],"title":"PoRequest"},"QuoteAddress":{"properties":{"firstName":{"type":"string","maxLength":100,"minLength":1,"title":"Firstname"},"lastName":{"type":"string","maxLength":100,"minLength":1,"title":"Lastname"},"company":{"type":"string","maxLength":120,"title":"Company","default":""},"address1":{"type":"string","maxLength":200,"minLength":1,"title":"Address1"},"address2":{"type":"string","maxLength":200,"title":"Address2","default":""},"city":{"type":"string","maxLength":100,"minLength":1,"title":"City"},"province":{"type":"string","maxLength":100,"title":"Province","default":""},"provinceCode":{"type":"string","pattern":"^[A-Za-z0-9-]{0,10}$","title":"Provincecode","default":""},"zip":{"type":"string","maxLength":20,"title":"Zip","default":""},"country":{"type":"string","maxLength":100,"title":"Country","default":""},"countryCode":{"type":"string","pattern":"^[A-Za-z]{2}$","title":"Countrycode"},"phone":{"type":"string","maxLength":40,"title":"Phone","default":""}},"type":"object","required":["firstName","lastName","address1","city","countryCode"],"title":"QuoteAddress"},"QuoteLine":{"properties":{"variantId":{"type":"string","pattern":"^gid://shopify/ProductVariant/\\d{1,20}$","title":"Variantid"},"quantity":{"type":"integer","maximum":999.0,"minimum":1.0,"title":"Quantity"}},"type":"object","required":["variantId","quantity"],"title":"QuoteLine"},"QuoteRef":{"properties":{"sub":{"type":"string","maxLength":200,"minLength":1,"title":"Sub"},"quoteId":{"anyOf":[{"type":"integer"},{"type":"string"}],"title":"Quoteid"}},"type":"object","required":["sub","quoteId"],"title":"QuoteRef"},"ShopifySessionRequest":{"properties":{"sub":{"type":"string","maxLength":200,"minLength":1,"title":"Sub"}},"type":"object","required":["sub"],"title":"ShopifySessionRequest"},"SiteInvoiceRequest":{"properties":{"sub":{"type":"string","maxLength":200,"minLength":1,"title":"Sub"},"orderId":{"type":"string","maxLength":100,"minLength":1,"title":"Orderid"},"docType":{"type":"string","enum":["invoice","receipt"],"title":"Doctype"}},"type":"object","required":["sub","orderId","docType"],"title":"SiteInvoiceRequest"},"SiteMeRequest":{"properties":{"sub":{"type":"string","maxLength":200,"minLength":1,"title":"Sub"}},"type":"object","required":["sub"],"title":"SiteMeRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"api__routers__site_tax__Member":{"properties":{"sub":{"type":"string","maxLength":200,"minLength":1,"title":"Sub"}},"type":"object","required":["sub"],"title":"Member"}}}}