{"openapi":"3.1.0","info":{"title":"Tax-Bridge API","description":"Tax-Bridge — universal fiscalization bridge for TaxCore-based systems (Vanuatu VSMS, Fiji VMS, Samoa TIMS). Normalize an invoice, fiscalize it via the V-SDC, get back a journal, QR and verification URL.","version":"0.1.0"},"paths":{"/health":{"get":{"tags":["health"],"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Health Get"}}}}}}},"/v1/status":{"get":{"tags":["health"],"summary":"Status","operationId":"status_v1_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Status V1 Status Get"}}}}}}},"/v1/demo/catalog":{"get":{"tags":["demo"],"summary":"Demo Catalog","operationId":"demo_catalog_v1_demo_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response Demo Catalog V1 Demo Catalog Get"}}}}}}},"/v1/demo/fiscalize":{"post":{"tags":["demo"],"summary":"Demo Fiscalize","operationId":"demo_fiscalize_v1_demo_fiscalize_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemoFiscalizeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemoFiscalizeResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/shops":{"get":{"tags":["fiscalization"],"summary":"List Shops","operationId":"list_shops_v1_shops_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ShopOut"},"type":"array","title":"Response List Shops V1 Shops Get"}}}}}}},"/v1/fiscalize":{"post":{"tags":["fiscalization"],"summary":"Fiscalize","operationId":"fiscalize_v1_fiscalize_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CanonicalInvoiceIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FiscalResultOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/invoices/{request_id}":{"get":{"tags":["fiscalization"],"summary":"Get Invoice","operationId":"get_invoice_v1_invoices__request_id__get","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","title":"Request Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FiscalResultOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/invoices":{"get":{"tags":["fiscalization"],"summary":"List Invoices","operationId":"list_invoices_v1_invoices_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FiscalResultOut"},"title":"Response List Invoices V1 Invoices Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tax-rates":{"get":{"tags":["fiscalization"],"summary":"Tax Rates","operationId":"tax_rates_v1_tax_rates_get","parameters":[{"name":"shop_id","in":"query","required":true,"schema":{"type":"integer","title":"Shop Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"CanonicalInvoiceIn":{"properties":{"shop_id":{"type":"integer","title":"Shop Id","description":"A shop you own (see GET /v1/shops)"},"external_ref":{"type":"string","maxLength":60,"title":"External Ref","description":"Your stable document id; drives idempotency"},"invoice_type":{"type":"string","enum":["NORMAL","PROFORMA","COPY","TRAINING","ADVANCE"],"title":"Invoice Type","default":"NORMAL"},"transaction_type":{"type":"string","enum":["SALE","REFUND"],"title":"Transaction Type","default":"SALE"},"datetime_iso":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Datetime Iso","description":"ISO 8601; defaults to now (UTC)"},"cashier":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Cashier"},"buyer_tin":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Buyer Tin"},"currency":{"type":"string","title":"Currency","default":"VUV"},"referent_invoice_number":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Referent Invoice Number","description":"Original SDC invoice number (required for refunds/copies)"},"referent_invoice_datetime":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Referent Invoice Datetime","description":"Original invoice's SDC date/time (ISO 8601), for refunds/copies"},"items":{"items":{"$ref":"#/components/schemas/CanonicalItem"},"type":"array","minItems":1,"title":"Items"},"payments":{"items":{"$ref":"#/components/schemas/CanonicalPayment"},"type":"array","minItems":1,"title":"Payments"}},"type":"object","required":["shop_id","external_ref","items","payments"],"title":"CanonicalInvoiceIn","example":{"external_ref":"SO-1042","invoice_type":"NORMAL","items":[{"name":"Premium Kava 500g","quantity":1,"tax_labels":["D"],"total_incl":1725.0,"unit_price_incl":1725.0}],"payments":[{"amount":1725.0,"type":"CASH"}],"shop_id":1,"transaction_type":"SALE"}},"CanonicalItem":{"properties":{"name":{"type":"string","maxLength":2048,"title":"Name"},"gtin":{"anyOf":[{"type":"string","maxLength":14,"minLength":8},{"type":"null"}],"title":"Gtin"},"quantity":{"type":"number","exclusiveMinimum":0.0,"title":"Quantity"},"unit_price_incl":{"type":"number","title":"Unit Price Incl","description":"Tax-inclusive unit price"},"total_incl":{"type":"number","title":"Total Incl","description":"Tax-inclusive line total"},"tax_labels":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Tax Labels","description":"SDC tax labels, e.g. ['D']"}},"type":"object","required":["name","quantity","unit_price_incl","total_incl","tax_labels"],"title":"CanonicalItem"},"CanonicalPayment":{"properties":{"type":{"type":"string","enum":["CASH","CARD","CHECK","WIRE","VOUCHER","MOBILE","OTHER"],"title":"Type","default":"CASH"},"amount":{"type":"number","exclusiveMinimum":0.0,"title":"Amount"}},"type":"object","required":["amount"],"title":"CanonicalPayment"},"DemoFiscalizeRequest":{"properties":{"lines":{"items":{"$ref":"#/components/schemas/DemoLine"},"type":"array","minItems":1,"title":"Lines"},"doc_type":{"type":"string","title":"Doc Type","description":"NORMAL|REFUND|COPY|PROFORMA|TRAINING","default":"NORMAL"},"payment_type":{"type":"string","title":"Payment Type","description":"CASH|CARD|MOBILE_MONEY|VOUCHER","default":"CASH"},"cashier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cashier","default":"Demo Cashier"},"buyer_tin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Buyer Tin"}},"type":"object","required":["lines"],"title":"DemoFiscalizeRequest"},"DemoFiscalizeResult":{"properties":{"request_id":{"type":"string","title":"Request Id"},"status":{"type":"string","title":"Status"},"invoice_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Invoice Number"},"sdc_datetime":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sdc Datetime"},"invoice_counter":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Invoice Counter"},"verification_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verification Url"},"qr_gif_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Qr Gif Base64"},"journal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Journal"},"total_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Amount"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["request_id","status"],"title":"DemoFiscalizeResult"},"DemoLine":{"properties":{"sku":{"type":"string","title":"Sku","description":"Catalog SKU (see GET /v1/demo/catalog)"},"qty":{"type":"integer","maximum":99.0,"minimum":1.0,"title":"Qty","default":1}},"type":"object","required":["sku"],"title":"DemoLine"},"FiscalResultOut":{"properties":{"request_id":{"type":"string","title":"Request Id"},"status":{"type":"string","title":"Status","description":"FISCALIZED | FAILED"},"external_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Ref"},"invoice_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Invoice Number"},"sdc_datetime":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sdc Datetime"},"invoice_counter":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Invoice Counter"},"verification_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verification Url"},"qr_gif_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Qr Gif Base64"},"journal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Journal"},"total_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Amount"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["request_id","status"],"title":"FiscalResultOut"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ShopOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"pos_number":{"type":"string","title":"Pos Number"},"jurisdiction":{"type":"string","title":"Jurisdiction"},"has_credential":{"type":"boolean","title":"Has Credential"},"business_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Business Name"},"tin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tin"}},"type":"object","required":["id","name","pos_number","jurisdiction","has_credential"],"title":"ShopOut"},"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"}}}}