{"openapi":"3.1.0","info":{"title":"VGTC Compliance API","description":"AI-powered Global Trade Compliance — PDF parsing, HS classification, sanctions screening","version":"2.1.0"},"paths":{"/api/v1/billing/checkout":{"post":{"tags":["billing"],"summary":"Create Checkout","description":"Create a Dodo Payments checkout session for VGTC plan (self-serve).\n\nAny authenticated user may purchase a plan for themselves (the static\noperator key may start checkout on a customer's behalf). A user who\nalready holds an active subscription is refused: Dodo checkouts always\ncreate a NEW subscription, so allowing a second checkout would\ndouble-charge the subscriber.\n\nConsent gate (Phase A): self-serve purchasers must have accepted the\ncurrent terms version via POST /billing/consent before a checkout session\nis created. The operator backstop may start checkout for a customer\nwithout re-validating consent.","operationId":"create_checkout_api_v1_billing_checkout_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/billing/consent":{"post":{"tags":["billing"],"summary":"Record Consent","description":"Record a user's acceptance (or refusal) of a purchase consent.\n\nPhase A: the 'terms' consent must be accepted before a checkout session\ncan be created. Records are append-only so the acceptance history is\npreserved for legal proof; the checkout gate reads the latest accepted\nrow per consent_key. Only consent keys/versions pinned in the registry\n(hermes.billing.consent) are accepted.","operationId":"record_consent_api_v1_billing_consent_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsentRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/billing/upgrade":{"post":{"tags":["billing"],"summary":"Upgrade Plan","description":"Upgrade VGTC subscription to a higher plan (self-serve).","operationId":"upgrade_plan_api_v1_billing_upgrade_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpgradeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Upgrade Plan Api V1 Billing Upgrade Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/billing/downgrade":{"post":{"tags":["billing"],"summary":"Downgrade Plan","description":"Downgrade VGTC subscription to a lower plan (self-serve).","operationId":"downgrade_plan_api_v1_billing_downgrade_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpgradeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Downgrade Plan Api V1 Billing Downgrade Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/billing/cancel":{"post":{"tags":["billing"],"summary":"Cancel Subscription","description":"Cancel VGTC subscription at period end (self-serve).","operationId":"cancel_subscription_api_v1_billing_cancel_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionActionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Cancel Subscription Api V1 Billing Cancel Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/billing/subscription":{"get":{"tags":["billing"],"summary":"Get Current Subscription","description":"Get the caller's current local subscription record (self-serve).\n\nReturns the most recent non-terminal subscription for the authenticated\nuser, including the period dates and the ``cancel_at_period_end`` flag\nso the dashboard can render the canonical subscription state (Active,\nActive until period end, On hold, Cancelled, Expired).","operationId":"get_current_subscription_api_v1_billing_subscription_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Current Subscription Api V1 Billing Subscription Get"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/billing/subscription/{dodo_subscription_id}":{"get":{"tags":["billing"],"summary":"Get Subscription","description":"Get VGTC subscription status.","operationId":"get_subscription_api_v1_billing_subscription__dodo_subscription_id__get","parameters":[{"name":"dodo_subscription_id","in":"path","required":true,"schema":{"type":"string","title":"Dodo Subscription Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Subscription Api V1 Billing Subscription  Dodo Subscription Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/billing/plans":{"get":{"tags":["billing"],"summary":"List Plans","description":"List all VGTC plans with features (driven by the plan catalog).","operationId":"list_plans_api_v1_billing_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PlanResponse"},"type":"array","title":"Response List Plans Api V1 Billing Plans Get"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/billing/usage/{user_id}":{"get":{"tags":["billing"],"summary":"Get Usage","description":"Get the caller's current-month usage from usage_metrics (self-serve).\n\nThe path ``user_id`` must match the authenticated user (IDOR guard). Reads\nthe same period-scoped counters that quota enforcement uses, so the meter a\npaid user sees matches what is actually enforced — for monthly and yearly\nsubscribers alike (usage_metrics is lazy-seeded per calendar month).","operationId":"get_usage_api_v1_billing_usage__user_id__get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/billing/invoices/{user_id}":{"get":{"tags":["billing"],"summary":"List Invoices","description":"Get the caller's local billing history (IDOR-guarded, no Dodo dependency).","operationId":"list_invoices_api_v1_billing_invoices__user_id__get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Invoices Api V1 Billing Invoices  User Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/billing/invoice/{invoice_id}":{"get":{"tags":["billing"],"summary":"Get Invoice","description":"Get a specific local invoice (IDOR-guarded).","operationId":"get_invoice_api_v1_billing_invoice__invoice_id__get","parameters":[{"name":"invoice_id","in":"path","required":true,"schema":{"type":"string","title":"Invoice Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Invoice Api V1 Billing Invoice  Invoice Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/billing/portal":{"post":{"tags":["billing"],"summary":"Create Portal","description":"Create a customer portal session for billing management (self-serve).","operationId":"create_portal_api_v1_billing_portal_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionActionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Create Portal Api V1 Billing Portal Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/billing/reconcile":{"post":{"tags":["billing"],"summary":"Reconcile Billing","description":"Reconcile local subscription entitlements against Dodo Payments truth.\n\nIdempotent healing: pulls Dodo subscriptions and upserts\n``subscription_records`` so a missed webhook can never leave a paying\ncustomer with stale entitlements. Restricted to the billing operator\n(static key) or a profile admin.","operationId":"reconcile_billing_api_v1_billing_reconcile_post","parameters":[{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reconcile Billing Api V1 Billing Reconcile Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/billing/refund/request":{"post":{"tags":["billing"],"summary":"Create Refund Request","description":"Q1: file a goodwill refund request for a paid subscription payment.\n\nSelf-serve. Computes the proportional goodwill amount from the\nauthoritative local invoice and the current-month credit usage snapshot,\ncaps it by what is still refundable, and parks the request for operator\nreview (never auto-refunded). Re-submitting the same ``idempotency_key``\nreturns the original request.","operationId":"create_refund_request_api_v1_billing_refund_request_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefundRequestCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefundRequestView"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/billing/refund/requests":{"get":{"tags":["billing"],"summary":"List Refund Requests","description":"List refund requests — own requests for self-serve callers, all for\noperators and admins.","operationId":"list_refund_requests_api_v1_billing_refund_requests_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/RefundRequestView"},"type":"array","title":"Response List Refund Requests Api V1 Billing Refund Requests Get"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/billing/refund/{request_id}/approve":{"post":{"tags":["billing"],"summary":"Approve Refund Request","description":"Operator/admin approves a refund request and executes the refund.\n\nNever automatic: the operator (static SECURITY_API_KEY) or an admin\nexplicitly approves, the amount is re-bounded by the payment's refundable\ncap, and only then is the refund created via Dodo. Execution failures park\nthe request in ``failed`` for follow-up instead of disappearing.","operationId":"approve_refund_request_api_v1_billing_refund__request_id__approve_post","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","title":"Request Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefundApproveRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefundRequestView"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/billing/refund/{request_id}/reject":{"post":{"tags":["billing"],"summary":"Reject Refund Request","description":"Operator/admin rejects a pending refund request.","operationId":"reject_refund_request_api_v1_billing_refund__request_id__reject_post","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","title":"Request Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefundRejectRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefundRequestView"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/billing/webhook/dodo":{"post":{"tags":["billing-webhook"],"summary":"Dodo Webhook","description":"Handle Dodo Payments webhook events for VGTC.\n\nThis endpoint is completely isolated from voraprotocol.com.\n\nDelivery semantics (fail-closed, at-least-once safe):\n- Signature is verified with HMAC-SHA256; an unverifiable delivery is 401.\n- Idempotency uses an atomic INSERT..ON CONFLICT claim on ``event_id`` so\n  concurrent re-deliveries can never double-provision entitlement.\n- A successfully processed event is 200 and never reprocessed.\n- A failed event is marked ``failed`` and the delivery returns 5xx so Dodo\n  retries; a retried delivery reprocesses the pending/failed event.\n- When no DATABASE_URL is configured (local/dev) idempotency cannot be\n  persisted; we still process but log a warning (never blocks in-memory mode).","operationId":"dodo_webhook_api_v1_billing_webhook_dodo_post","parameters":[{"name":"webhook-signature","in":"header","required":false,"schema":{"type":"string","default":"","title":"Webhook-Signature"}},{"name":"webhook-id","in":"header","required":false,"schema":{"type":"string","default":"","title":"Webhook-Id"}},{"name":"webhook-timestamp","in":"header","required":false,"schema":{"type":"string","default":"","title":"Webhook-Timestamp"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/screen/sanctions":{"post":{"tags":["screening"],"summary":"Screen Sanctions","description":"Screen a name against global sanctions lists.\n\nPerforms sanctions screening against the loaded lists:\n- US OFAC SDN (+ ADD.CSV addresses) and Consolidated Sanctions List\n- EU Consolidated Financial Sanctions (FSF v1.1)\n- UK Sanctions List (UKSL)\n- UN Security Council Consolidated List\n- BIS Entity List\n\nReturns risk level, per-match evidence/provenance, freshness status of\nrequired sources, and government verification links. When a required\nsource is missing or stale the verdict is INCOMPLETE_SCREENING and the\ncaller must NOT treat the result as clear.","operationId":"screen_sanctions_api_v1_screen_sanctions_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreeningRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreeningResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/screen/batch":{"post":{"tags":["screening"],"summary":"Screen Sanctions Batch","description":"Screen multiple names against sanctions lists in batch.\n\nUseful for:\n- Customer onboarding screening\n- Periodic re-screening\n- Transaction monitoring","operationId":"screen_sanctions_batch_api_v1_screen_batch_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchScreeningRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchScreeningResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/screen/portals":{"get":{"tags":["screening"],"summary":"Get Verification Portals","description":"Get government sanctions verification portals.\n\nReturns links to official government sanctions search tools\nfor manual verification of screening results.","operationId":"get_verification_portals_api_v1_screen_portals_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/VerificationLink"},"type":"array","title":"Response Get Verification Portals Api V1 Screen Portals Get"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/screen/sources":{"get":{"tags":["screening"],"summary":"Get Data Sources","description":"Get information about data sources used in screening.\n\nHonest coverage (P4 F10): lists only the sources actually loaded by the\nengine and reports the live freshness status of each from the source\nregistry (requires_sync lists drive the fail-safe).","operationId":"get_data_sources_api_v1_screen_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Data Sources Api V1 Screen Sources Get"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/screen/hold":{"post":{"tags":["screening"],"summary":"Create Compliance Hold","description":"Create a compliance review item (HOLD) tied to a screening result.\n\nLinks the screening evidence (match provenance, list, source record id,\nofficial source URL) into the PERSISTED human-review queue so a\nblocked/incomplete screening leaves an auditable hold rather than a silent\npass. In production the queue is the DB-backed review service\n(compliance_review_items), matching exactly what the dashboard reads.","operationId":"create_compliance_hold_api_v1_screen_hold_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HoldRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HoldResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/screen/methodology":{"get":{"tags":["screening"],"summary":"Get Screening Methodology","description":"Get detailed information about screening methodology.\n\nReturns technical details about matching algorithms and thresholds.","operationId":"get_screening_methodology_api_v1_screen_methodology_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Screening Methodology Api V1 Screen Methodology Get"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/compliance/check":{"post":{"summary":"Process a trade document through the compliance pipeline","description":"Process a trade document through the full compliance pipeline.\n\nAccepts a PDF file upload, validates it, runs it through:\n1. PDF parsing (field extraction)\n2. HS code classification\n3. Sanctions screening\n\nReturns a ReviewItem dict with all extracted data, ready for\nhuman review and approval.\n\nArgs:\n    file: Uploaded PDF file (max 50 MB).\n    tenant_id: Tenant identifier from X-Tenant-ID header.\n\nReturns:\n    ComplianceCheckResponse with status, review item, and timing.\n\nRaises:\n    400: If file is not a valid PDF or tenant ID missing.\n    401: If authentication fails.\n    413: If file exceeds size limit.\n    422: If processing fails.","operationId":"compliance_check_api_v1_compliance_check_post","parameters":[{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Tenant identifier for row-level isolation","title":"X-Tenant-Id"},"description":"Tenant identifier for row-level isolation"}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_compliance_check_api_v1_compliance_check_post"}}}},"responses":{"201":{"description":"Document processed successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComplianceCheckResponse"}}}},"400":{"description":"Missing X-Tenant-ID header"},"401":{"description":"Missing or invalid API key"},"413":{"description":"File exceeds 50 MB limit"},"422":{"description":"Validation or processing error"},"500":{"description":"Internal server error"}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/compliance/check-manual":{"post":{"tags":["compliance"],"summary":"Check Manual Compliance","description":"Check compliance for manually entered document information.\n\nUse this endpoint when you already have the document information\nextracted and want to run compliance checks.","operationId":"check_manual_compliance_api_v1_compliance_check_manual_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentInfo"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComplianceReport"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/compliance/countries":{"get":{"tags":["compliance"],"summary":"Get Country Regulations","description":"Get compliance regulations for all supported countries.\n\n``max_de_minimis`` is the duty-free relief currently available, which is 0\nwherever the relief is suspended or removed. ``data_as_of`` is the date the\ntable was last verified against official sources - it is not a live\ntimestamp, and callers must confirm current rules with the authority named\nin each entry's ``de_minimis_source``.","operationId":"get_country_regulations_api_v1_compliance_countries_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/compliance/country/{country_code}":{"get":{"tags":["compliance"],"summary":"Get Country Regulation","description":"Get compliance regulations for a specific country.","operationId":"get_country_regulation_api_v1_compliance_country__country_code__get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/compliance/embargoed":{"get":{"tags":["compliance"],"summary":"Get Embargoed Countries","description":"Get list of embargoed countries.","operationId":"get_embargoed_countries_api_v1_compliance_embargoed_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/compliance/check-text":{"post":{"tags":["compliance"],"summary":"Check Text Compliance","description":"Run compliance checks directly on raw document text.\n\nUses document_extractor for HS/ECCN/COO extraction and\nsanctions.py for entity screening. No file upload or Gemini needed.","operationId":"check_text_compliance_api_v1_compliance_check_text_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TextComplianceRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComplianceReport"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/compliance/enhanced-check":{"post":{"tags":["compliance"],"summary":"Enhanced Compliance Check","description":"Full compliance check using enhanced pipeline.\n\nPipeline:\n1. AI Document Parsing (Gemini) → 100+ fields extracted\n2. Party Sanctions Screening (8-layer engine + OpenSanctions API)\n3. Country-Specific Rules (30+ countries)\n4. Export Controls (EAR/ITAR/EU Dual-Use)\n5. Import Regulations (FDA/USDA/EPA/FCC)\n6. Trade Agreements (preferential rates)\n7. Duty Calculation (country-specific)\n8. Compliance Report (full audit trail)","operationId":"enhanced_compliance_check_api_v1_compliance_enhanced_check_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_enhanced_compliance_check_api_v1_compliance_enhanced_check_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/compliance/enhanced-check-manual":{"post":{"tags":["compliance"],"summary":"Enhanced Compliance Check Manual","description":"Enhanced compliance check with manually provided text.","operationId":"enhanced_compliance_check_manual_api_v1_compliance_enhanced_check_manual_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/compliance/countries-enhanced":{"get":{"tags":["compliance"],"summary":"Get Enhanced Country Rules","description":"Get enhanced country rules for 30+ countries.","operationId":"get_enhanced_country_rules_api_v1_compliance_countries_enhanced_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/compliance/test-suite":{"get":{"tags":["compliance"],"summary":"Run Compliance Tests","description":"Run the automated compliance test suite.","operationId":"run_compliance_tests_api_v1_compliance_test_suite_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/compliance/audit/export":{"get":{"tags":["compliance"],"summary":"Export Audit Log","description":"Export compliance audit records for a given date range.\n\nGenerates a downloadable CSV (or JSON) containing caller-owned\nComplianceDocumentRecord entries with their tamper-proof SHA-256 hashes.\nRecords are scoped to the authenticated caller's tenant/user (resolved\nserver-side from the credential); global compliance_alerts are included\nonly for platform admins. Designed for 5-year legal retention and\ncustoms audit compliance.\n\nQuery params:\n    start_date: ISO date string (default: 30 days ago).\n    end_date: ISO date string (default: now).\n    format: 'csv' or 'json' (default: csv).","operationId":"export_audit_log_api_v1_compliance_audit_export_get","parameters":[{"name":"start_date","in":"query","required":false,"schema":{"type":"string","default":"","title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"type":"string","default":"","title":"End Date"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","default":"csv","title":"Format"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/compliance/extract-invoice":{"post":{"tags":["compliance"],"summary":"Extract Invoice","description":"Extract line items from a PDF invoice asynchronously.\n\nUploads the PDF, dispatches to Celery for background processing,\nand returns a task_id for the frontend to poll.\n\nThe frontend should poll GET /api/v1/tasks/{task_id}/status every\n2 seconds until status is \"success\" or \"failure\".","operationId":"extract_invoice_api_v1_compliance_extract_invoice_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_extract_invoice_api_v1_compliance_extract_invoice_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/compliance/orchestrate":{"post":{"tags":["compliance"],"summary":"Orchestrate Compliance","description":"Run the 3-stage compliance orchestration (extract -> screen -> report).\n\nReturns the full OrchestrationResult with per-stage timing/status plus the\nstructured ComplianceReport. Deterministic extract/screen stages run on\nreal data (OFAC/EU/UK/UN sanctions, verified HS codes, country rules);\nthe optional narrative report is disabled by default.","operationId":"orchestrate_compliance_api_v1_compliance_orchestrate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TextComplianceRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Orchestrate Compliance Api V1 Compliance Orchestrate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/compliance/fba-assessment":{"post":{"tags":["compliance"],"summary":"Fba Assessment","description":"Assess uploaded shipment documents for Amazon FBA readiness.\n\nAccepts up to 8 documents (PDF/JPG/PNG): commercial invoice, packing\nlist, bill of lading / airway bill, COO — in any order, any layout.\nEach document is classified by content (never filename alone), parties\nare role-resolved with ambiguity flags, and every check cites its\nsource files. Deterministic rules run on normalized data; Gemini only\nassists upstream extraction.","operationId":"fba_assessment_api_v1_compliance_fba_assessment_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_fba_assessment_api_v1_compliance_fba_assessment_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Fba Assessment Api V1 Compliance Fba Assessment Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/compliance/vnaccs/validate":{"post":{"tags":["compliance"],"summary":"Validate Vnaccs Declaration","description":"Validate a Vietnam VNACCS declaration BEFORE submission.\n\nChecks the declaration against verified VNACCS/VCIS rules: MST (tax ID)\nformat + check digit, 8-digit HS codes, regime (loại hình) codes, the\nclosed Incoterm list (DPU is rejected), currency, units, port codes,\nand bill-of-lading / invoice completeness.\n\nThis is a pre-submission helper that reduces rejection risk. VNACCS\nremains the authority on acceptance; lane assignment (green/yellow/red)\nis customs' internal risk engine and is NOT predicted here.","operationId":"validate_vnaccs_declaration_api_v1_compliance_vnaccs_validate_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Req"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Validate Vnaccs Declaration Api V1 Compliance Vnaccs Validate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/compliance/comprehensive-check":{"post":{"tags":["compliance"],"summary":"Comprehensive Check","description":"Unified single-call compliance check.\n\nRuns HS classification + GRI chain-of-thought reasoning + party\nsanctions screening + (optional) VNACCS pre-submission validation in ONE\nrequest — so developers integrate a single endpoint instead of several.\n\nRequest body:\n    description: str          — product description (required)\n    origin: str               — ISO alpha-2 country of origin\n    destination: str          — ISO alpha-2 destination\n    parties: list[str]        — party names to screen (optional)\n    vnaccs: dict              — VNACCS declaration payload (optional)\n\nNote: this is a lighter-weight JSON-callable sibling of\n``enhanced-check`` (which parses an uploaded document). Use this when you\nalready have structured fields and want classification + screening +\nVietnam pre-submission validation in one call.","operationId":"comprehensive_check_api_v1_compliance_comprehensive_check_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Req"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Comprehensive Check Api V1 Compliance Comprehensive Check Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/classify":{"post":{"tags":["classify"],"summary":"Classify items with HS codes and calculate duties","description":"Classify items with HS codes and calculate duties.","operationId":"classify_endpoint_api_v1_classify_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/hermes__api__server__ClassifyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClassifyResultResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/bulk/jobs":{"get":{"tags":["bulk-jobs"],"summary":"Bulk Job History","operationId":"bulk_job_history_api_v1_bulk_jobs_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Bulk Job History Api V1 Bulk Jobs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/bulk/jobs/{job_id}.pdf":{"get":{"tags":["bulk-jobs"],"summary":"Bulk Job Pdf","operationId":"bulk_job_pdf_api_v1_bulk_jobs__job_id__pdf_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/bulk/jobs/{job_id}.txt":{"get":{"tags":["bulk-jobs"],"summary":"Bulk Job Txt","operationId":"bulk_job_txt_api_v1_bulk_jobs__job_id__txt_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/bulk/jobs/{job_id}":{"get":{"tags":["bulk-jobs"],"summary":"Bulk Job Detail","operationId":"bulk_job_detail_api_v1_bulk_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Bulk Job Detail Api V1 Bulk Jobs  Job Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/cbam/check":{"get":{"tags":["cbam"],"summary":"Check if a CN/HS code is inside CBAM scope","description":"Check whether a CN/HS code falls within Annex I of the CBAM Regulation.","operationId":"cbam_check_api_v1_cbam_check_get","parameters":[{"name":"hs_code","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":12,"description":"CN/HS code","title":"Hs Code"},"description":"CN/HS code"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CbamCheckResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/cbam/estimate":{"post":{"tags":["cbam"],"summary":"Estimate CBAM certificate cost for imported goods","description":"Estimate the CBAM certificate obligation (EUR) for a set of line items.\n\nUses the latest published certificate price (IR (EU) 2025/2548) and the\nyear's CBAM factor. Default emission values are the official country x CN\ndefaults (IR (EU) 2025/2621 as corrected by IR (EU) 2026/1740) including\nthe sector/year mark-up; pass `emission_factor` per item to use an\nactual/verified figure (the default-vs-actual premium is then reported).\nPass `carbon_price_paid_eur` per item to apply the Art. 9 carbon-price\ndeduction (gross obligation minus carbon price paid in the origin country\n× embedded emissions).\nElectricity quantities are in MWh; all other sectors in tonnes.","operationId":"cbam_estimate_api_v1_cbam_estimate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CbamEstimateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CbamEstimateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/cbam/countries":{"get":{"tags":["cbam"],"summary":"List CBAM origin countries with official default values","description":"Return the origin-country names available in the default-values table.","operationId":"cbam_countries_api_v1_cbam_countries_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Cbam Countries Api V1 Cbam Countries Get"}}}}},"security":[]}},"/api/v1/cbam/project":{"post":{"tags":["cbam"],"summary":"Project CBAM certificate cost 2026-2034","description":"Project the annual CBAM obligation through the phase-in ramp (2026-2034).\n\nCombines the rising CBAM factor (2.5% -> 100%, Art. 35) with the official\ndefault-value mark-up schedule per sector/year.","operationId":"cbam_project_api_v1_cbam_project_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CbamProjectRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CbamProjectResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/cbam/summary":{"get":{"tags":["cbam"],"summary":"CBAM regulatory summary (sectors, prices, phase-out schedule)","description":"Return the CBAM regime summary for UI rendering and marketing pages.","operationId":"cbam_summary_api_v1_cbam_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Cbam Summary Api V1 Cbam Summary Get"}}}}},"security":[]}},"/api/v1/cbam/health":{"get":{"tags":["cbam"],"summary":"CBAM module health check","description":"Lightweight liveness probe for the CBAM module.","operationId":"cbam_health_api_v1_cbam_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Cbam Health Api V1 Cbam Health Get"}}}}},"security":[]}},"/api/v1/cases":{"post":{"tags":["cases","cases"],"summary":"Create Case","description":"Create an OPEN case from a validated shipment-review input snapshot.","operationId":"create_case_api_v1_cases_post","parameters":[{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaseCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Case Api V1 Cases Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]},"get":{"tags":["cases","cases"],"summary":"List Cases","description":"List this tenant's cases only, newest first.","operationId":"list_cases_api_v1_cases_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Cases Api V1 Cases Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/cases/{case_id}":{"get":{"tags":["cases","cases"],"summary":"Get Case","description":"Fetch one case with its reviews (machine suggestion and human decision separate).","operationId":"get_case_api_v1_cases__case_id__get","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Case Id"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Case Api V1 Cases  Case Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/cases/{case_id}/analyze":{"post":{"tags":["cases","cases"],"summary":"Analyze Case","description":"Run the frozen engine over the stored snapshot and persist a new revision.","operationId":"analyze_case_api_v1_cases__case_id__analyze_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Case Id"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/AnalyzeRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Analyze Case Api V1 Cases  Case Id  Analyze Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/cases/{case_id}/cbam-assessment":{"post":{"tags":["cases","cases"],"summary":"Save Cbam Assessment","description":"Persist an EU or UK CBAM assessment as an immutable case revision.","operationId":"save_cbam_assessment_api_v1_cases__case_id__cbam_assessment_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Case Id"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CbamAssessmentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Save Cbam Assessment Api V1 Cases  Case Id  Cbam Assessment Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/cases/{case_id}/timeline":{"get":{"tags":["cases","cases"],"summary":"Get Timeline","description":"Append-only timeline for one tenant-scoped case.","operationId":"get_timeline_api_v1_cases__case_id__timeline_get","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Case Id"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Timeline Api V1 Cases  Case Id  Timeline Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/cases/{case_id}/revisions":{"get":{"tags":["cases","cases"],"summary":"Get Analysis Revisions","description":"Immutable per-revision regulatory provenance for one tenant-scoped case.\n\nAnswers \"which regulatory value did VGTC use when this decision was\nproduced?\" for every recorded revision, even after a rule changes. Prior\nrevisions are never rewritten.","operationId":"get_analysis_revisions_api_v1_cases__case_id__revisions_get","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Case Id"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Analysis Revisions Api V1 Cases  Case Id  Revisions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/cases/{case_id}/reviews/{review_id}/resolve":{"post":{"tags":["cases","cases"],"summary":"Resolve Review","description":"Record the human decision. Requires COMPLIANCE_OFFICER; actor from auth.","operationId":"resolve_review_api_v1_cases__case_id__reviews__review_id__resolve_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Case Id"}},{"name":"review_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Review Id"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveReviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Resolve Review Api V1 Cases  Case Id  Reviews  Review Id  Resolve Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/cases/{case_id}/information-requests":{"post":{"tags":["cases","cases"],"summary":"Create Information Request","description":"Open a missing-information request on a case.","operationId":"create_information_request_api_v1_cases__case_id__information_requests_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Case Id"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InformationRequestCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Information Request Api V1 Cases  Case Id  Information Requests Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/cases/{case_id}/information-requests/{request_id}/provide":{"post":{"tags":["cases","cases"],"summary":"Provide Information","description":"Record a response. Never changes the verdict; re-analyze to re-evaluate.","operationId":"provide_information_api_v1_cases__case_id__information_requests__request_id__provide_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Case Id"}},{"name":"request_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Request Id"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProvideInformationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Provide Information Api V1 Cases  Case Id  Information Requests  Request Id  Provide Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/cases/{case_id}/information-requests/{request_id}/resolve":{"post":{"tags":["cases","cases"],"summary":"Resolve Information Request","description":"Acknowledge a PROVIDED request as satisfied (reviewer-only).","operationId":"resolve_information_request_api_v1_cases__case_id__information_requests__request_id__resolve_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Case Id"}},{"name":"request_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Request Id"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ResolveInformationRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Resolve Information Request Api V1 Cases  Case Id  Information Requests  Request Id  Resolve Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/cases/{case_id}/report":{"get":{"tags":["cases","cases"],"summary":"Get Case Report","description":"Render the persisted case report (machine advisory + human decision).","operationId":"get_case_report_api_v1_cases__case_id__report_get","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Case Id"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(json|md|markdown|txt|pdf)$","default":"json","title":"Format"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]},"post":{"tags":["cases","cases"],"summary":"Post Case Report","description":"Same as GET /report, for clients that cannot send query params on GET.","operationId":"post_case_report_api_v1_cases__case_id__report_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Case Id"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(json|md|markdown|txt|pdf)$","default":"json","title":"Format"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/ukcbam/check":{"get":{"tags":["uk-cbam"],"summary":"Check if a CN/HS code is inside UK CBAM scope","description":"Check whether a CN/HS code falls within UK CBAM scope (FA 2026, Pt 5).","operationId":"uk_cbam_check_api_v1_ukcbam_check_get","parameters":[{"name":"hs_code","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":12,"description":"CN/HS code","title":"Hs Code"},"description":"CN/HS code"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UkCbamCheckResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/ukcbam/estimate":{"post":{"tags":["uk-cbam"],"summary":"Assess UK CBAM scope and monetary readiness","description":"Assess scope and registration readiness without inventing a GBP amount.","operationId":"uk_cbam_estimate_api_v1_ukcbam_estimate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UkCbamEstimateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UkCbamEstimateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/ukcbam/summary":{"get":{"tags":["uk-cbam"],"summary":"UK CBAM regulatory summary","description":"Return the UK CBAM regime summary for UI rendering and marketing pages.","operationId":"uk_cbam_summary_api_v1_ukcbam_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Uk Cbam Summary Api V1 Ukcbam Summary Get"}}}}},"security":[]}},"/api/v1/ukcbam/project":{"post":{"tags":["uk-cbam"],"summary":"Assess UK CBAM readiness for 2027-2035","description":"Retain the compatibility route without projecting unavailable GBP amounts.","operationId":"uk_cbam_project_api_v1_ukcbam_project_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UkCbamProjectRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UkCbamProjectResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/ukcbam/health":{"get":{"tags":["uk-cbam"],"summary":"UK CBAM module health check","description":"Lightweight liveness probe for the UK CBAM module.","operationId":"uk_cbam_health_api_v1_ukcbam_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Uk Cbam Health Api V1 Ukcbam Health Get"}}}}},"security":[]}},"/api/v1/vnaccs/duty/check":{"get":{"tags":["vnaccs-duty","Vietnam VNACCS"],"summary":"Vietnam tariff check (duty/VAT/SCT/FTA rates) for an HS code","description":"Returns the MFN, preferential FTA, VAT and SCT rates for a Vietnam AHTN code, plus any trade-remedy or conditional-goods flags. Free to use.","operationId":"vnaccs_duty_check_api_v1_vnaccs_duty_check_get","parameters":[{"name":"hs_code","in":"query","required":true,"schema":{"type":"string","title":"Hs Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VnaccsDutyCheckResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/vnaccs/duty/estimate":{"post":{"tags":["vnaccs-duty","Vietnam VNACCS"],"summary":"Estimate Vietnam import duty, SCT, EPT, VAT and landed cost","description":"Computes the landed-cost taxes for goods imported into Vietnam: CIF value, import duty (MFN or best FTA rate), special consumption tax, environmental protection tax and VAT. Free to use.","operationId":"vnaccs_duty_estimate_api_v1_vnaccs_duty_estimate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VnaccsDutyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VnaccsDutyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/vnaccs/duty/ftas":{"get":{"tags":["vnaccs-duty","Vietnam VNACCS"],"summary":"List supported Vietnam FTAs","description":"Lists the preferential FTAs supported by the duty estimator with their legal instruments and certificate-of-origin requirements.","operationId":"vnaccs_duty_ftas_api_v1_vnaccs_duty_ftas_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Vnaccs Duty Ftas Api V1 Vnaccs Duty Ftas Get"}}}}},"security":[]}},"/api/v1/vnaccs/duty/verification":{"get":{"tags":["vnaccs-duty","Vietnam VNACCS"],"summary":"Vietnam tariff verification & provenance summary","description":"Returns the dataset data version, the official-source evidence, per-agreement verified/exception counts and the per-cell verification semantics used by the duty engine.","operationId":"vnaccs_duty_verification_api_v1_vnaccs_duty_verification_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Vnaccs Duty Verification Api V1 Vnaccs Duty Verification Get"}}}}},"security":[]}},"/api/v1/vnaccs/duty/rate-status":{"get":{"tags":["vnaccs-duty","Vietnam VNACCS"],"summary":"Vietnam tariff verification status for a single HS + agreement","description":"Returns the per-cell verification status (VERIFIED / RATE_REQUIRES_MORE_SPECIFIC_CODE / UNVERIFIED / SOURCE_MISSING / CONFLICT) for an HS code under a given agreement (or a list of agreements).","operationId":"vnaccs_duty_rate_status_api_v1_vnaccs_duty_rate_status_get","parameters":[{"name":"hs_code","in":"query","required":true,"schema":{"type":"string","title":"Hs Code"}},{"name":"agreements","in":"query","required":false,"schema":{"type":"string","default":"evfta","title":"Agreements"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Vnaccs Duty Rate Status Api V1 Vnaccs Duty Rate Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/india/compliance":{"post":{"tags":["india"],"summary":"India Compliance","description":"India compliance assessment for a product entering (or exiting) India.\n\nRequest body:\n    description: str       — product description (required)\n    hs_code: str           — 6 or 8 digit international HS code (recommended)\n    origin: str            — ISO alpha-2 country of origin (optional)\n    destination: str       — defaults to \"IN\"\n    purpose: str           — \"import\" | \"export\" | \"both\" (default \"import\")\n    unit_value: float      — declared value per unit (for estimate)\n    quantity: float        — number of units (for estimate)\n\nReturns: policy limb, duty-stack components, QCO, EPR, allied agencies,\nSCOMET (export sense), FTA/origin, trade-remedy regime, valuation checklist,\noptional landed-cost estimate, and the review-item list. The result is a\nstructured, source-cited evaluation — not a legal clearance.","operationId":"india_compliance_api_v1_india_compliance_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Req"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response India Compliance Api V1 India Compliance Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/india/capabilities":{"get":{"tags":["india"],"summary":"India Capabilities","description":"India module capability matrix (classes A-F) + dataset registry status.","operationId":"india_capabilities_api_v1_india_capabilities_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response India Capabilities Api V1 India Capabilities Get"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/india/sources":{"get":{"tags":["india"],"summary":"India Sources","description":"Provenance register for every India dataset and rule used.","operationId":"india_sources_api_v1_india_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response India Sources Api V1 India Sources Get"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/fta/candidates":{"post":{"tags":["vnaccs-fta","Vietnam VNACCS"],"summary":"FTA candidate & effective-date selection for Vietnam imports (P2)","description":"Returns all agreements that are potentially applicable for a Vietnam import shipment on the given date, whether each is legally effective on that date, the verified P1 preferential rate (when available), any requirement for a more-specific HS code, and the MFN fallback. Agreement applicability only; Rules of Origin are NOT evaluated. This endpoint does NOT assert FTA eligibility.","operationId":"fta_candidates_api_v1_fta_candidates_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FTACandidateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Fta Candidates Api V1 Fta Candidates Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/fta/agreements":{"get":{"tags":["vnaccs-fta","Vietnam VNACCS"],"summary":"List Vietnam FTA agreements with effective dates (P2 registry)","description":"Returns the P2 agreement registry: label, legal decree, certificate, origin rule, agreement effective date and whether the tariff schedule is verified in the P1 dataset.","operationId":"fta_agreements_api_v1_fta_agreements_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Fta Agreements Api V1 Fta Agreements Get"}}}}},"security":[]}},"/api/v1/origin/evaluate":{"post":{"tags":["vnaccs-origin","Vietnam VNACCS"],"summary":"Evaluate Rules of Origin / Product-Specific Rules (P3)","description":"Evaluates whether a finished product's production and material evidence satisfies the applicable product-specific rule of origin under a chosen agreement for import into Vietnam. Returns an advisory origin-qualification assessment with a decision trace. This is not a guarantee of preferential treatment and does not assert customs acceptance; confirm documentary and customs requirements before claiming preference.","operationId":"origin_evaluate_api_v1_origin_evaluate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OriginEvaluateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Origin Evaluate Api V1 Origin Evaluate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/cbam/supplier-request":{"post":{"tags":["cbam-supplier"],"summary":"Create a CBAM supplier data request and get a secure share link","description":"Create a supplier data request for the tenant and return the secure\nshareable URL (token-gated) to send to the supplier.","operationId":"create_supplier_request_api_v1_cbam_supplier_request_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CbamSupplierCreateRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Supplier Request Api V1 Cbam Supplier Request Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/cbam/supplier-requests":{"get":{"tags":["cbam-supplier"],"summary":"List the tenant's CBAM supplier data requests","description":"Return all supplier data requests scoped to the current tenant.","operationId":"list_supplier_requests_api_v1_cbam_supplier_requests_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Supplier Requests Api V1 Cbam Supplier Requests Get"}}}}},"security":[]}},"/api/v1/cbam/supplier-request/{request_id}":{"get":{"tags":["cbam-supplier"],"summary":"Retrieve one of the tenant's CBAM supplier requests","description":"Return a single supplier data request including any submitted emission data.","operationId":"get_supplier_request_api_v1_cbam_supplier_request__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":{"type":"object","additionalProperties":true,"title":"Response Get Supplier Request Api V1 Cbam Supplier Request  Request Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/cbam/supplier/{token}":{"get":{"tags":["cbam-supplier"],"summary":"Supplier view of a CBAM data request (token-gated)","description":"Token-gated view for the supplier: request metadata and the CN line\nitems they need to provide actual emissions for.","operationId":"supplier_view_api_v1_cbam_supplier__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Supplier View Api V1 Cbam Supplier  Token  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/cbam/supplier/{token}/submit":{"post":{"tags":["cbam-supplier"],"summary":"Supplier submits actual emission data (token-gated)","description":"Accept the supplier's actual/verified emission values and mark the\nrequest as submitted so the importer can apply them.","operationId":"supplier_submit_api_v1_cbam_supplier__token__submit_post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CbamSupplierSubmitRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Supplier Submit Api V1 Cbam Supplier  Token  Submit Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/duty-risk/check":{"post":{"tags":["duty-risk","duty-risk"],"summary":"Duty & Risk Check (free)","description":"One-shipment verdict: MFN vs FTA duty savings for Vietnam imports, HS-code consistency across documents, and sanctions screening of the parties on the five official lists. Free for anonymous users (first line only); authenticated API keys unlock the full payload.","operationId":"duty_risk_check_api_v1_duty_risk_check_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DutyRiskRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DutyRiskResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/shipment/verdict":{"post":{"tags":["shipment-verdict","shipment-verdict"],"summary":"Shipment Compliance Verdict (US+VN fusion)","description":"Deterministic fusion verdict (READY / REVIEW / BLOCKED) across US and Vietnam regulation: HS classification + consistency, sanctions, export control, US HTS duty & trade remedies, FTA/origin, PGA/ISF, and Vietnam duty / landed cost / VNACCS validation. Free for anonymous users (first line only); authenticated API keys unlock the full verdict.","operationId":"shipment_verdict_api_v1_shipment_verdict_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShipmentVerdictRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShipmentVerdictResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/shipment/review/health":{"get":{"tags":["shipment-review","shipment-review"],"summary":"Shipment Review capability status","description":"Public capability/flag status (no PII, no secrets).","operationId":"shipment_review_health_api_v1_shipment_review_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Shipment Review Health Api V1 Shipment Review Health Get"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/shipment/review":{"post":{"tags":["shipment-review","shipment-review"],"summary":"Unified Shipment Review (verdict + reasons + evidence)","description":"Deterministic, evidence-backed shipment review (READY / REVIEW / BLOCKED) across classification, sanctions, tariff/landed cost, valuation, origin/FTA, policy and export control. Adds canonical reason codes, advisory next actions and evidence to the existing shipment-verdict engine. Decision support only — VGTC is not a customs broker and does not guarantee clearance. Use ?format=json|md|txt|pdf to download a report.","operationId":"shipment_review_api_v1_shipment_review_post","parameters":[{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(json|md|markdown|txt|pdf)$","default":"json","title":"Format"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShipmentReviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/shipment/review/report":{"post":{"tags":["shipment-review","shipment-review"],"summary":"Render a Shipment Review report (stateless, not billed)","description":"Presentation-only: renders an already-computed Shipment Review object to json / md / txt / pdf. It does NOT re-run the compliance engine and does NOT bill, so downloading a report never double-charges or hits the anonymous free-tier gate. The payload is size-bounded and rendered with escaping. Decision support only.","operationId":"shipment_review_report_api_v1_shipment_review_report_post","parameters":[{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(json|md|markdown|txt|pdf)$","default":"pdf","title":"Format"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_shipment_review_report_api_v1_shipment_review_report_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/duty/us-stack":{"post":{"tags":["shipment-review","duty"],"summary":"US stacked duty composition (evidence-backed components)","description":"Composes the US duty picture for one HTS code + country of origin as separate, evidence-backed components (base/MFN, Section 301, Section 232, Chapter 99, AD/CVD boundary, preference), each with status, rate, official source and effective dates. The total is only COMPLETE when every applicable material component is VERIFIED; otherwise an explicit INCOMPLETE / NEEDS_INFORMATION / SOURCE_UNAVAILABLE status is returned and no confident number is shown. AD/CVD applicability is never inferred from the HS code. Decision support only.","operationId":"us_duty_stack_api_v1_duty_us_stack_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/USDutyStackRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Us Duty Stack Api V1 Duty Us Stack Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/duty/national":{"get":{"tags":["shipment-review","duty"],"summary":"Resolve an HS6 to a US national HTS line (versioned USITC dataset)","description":"Read-only, unbilled helper used by VGTC's own tools so every surface resolves a US national tariff line from the SAME versioned USITC dataset (never by zero-padding HS6). For a code shorter than HS6, or an HS6 that does not resolve to a single duty-bearing national line, the result is NEEDS_INFORMATION with no fabricated code.","operationId":"resolve_national_tariff_api_v1_duty_national_get","parameters":[{"name":"hs_code","in":"query","required":true,"schema":{"type":"string","maxLength":12,"description":"HS code (HS6 or national line)","title":"Hs Code"},"description":"HS code (HS6 or national line)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Resolve National Tariff Api V1 Duty National Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/shipment/evidence/sync":{"post":{"tags":["shipment-evidence","shipment-evidence"],"summary":"Synchronous shipment-evidence build (JSON)","description":"Accept a JSON body with the shape::\n\n    {\n      \"origin\": \"IN\",\n      \"destination\": \"US\",\n      \"incoterm\": \"FOB\",\n      \"documents\": [\n        {\n          \"filename\": \"invoice.pdf\",\n          \"document_type\": \"invoice\",\n          \"confidence\": 0.9,\n          \"items\": [...]\n        },\n        ...\n      ]\n    }\n\nReturns the full ShipmentEvidence JSON with cross-document\nreconciliation, missing information, findings, and the final\nverdict.\n\nAuth: requires an authenticated principal (JWT, static API key, or DB key).\nThe caller's tenant identity is resolved server-side; the X-Tenant-ID header\nmust match the authenticated tenant when one is supplied.\n\nArgs:\n    request: The request object carrying the authenticated principal\n        (set by the auth dependency) and the shipping documents JSON.","operationId":"sync_shipment_evidence_api_v1_shipment_evidence_sync_post","parameters":[{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/shipment/evidence":{"post":{"tags":["shipment-evidence","shipment-evidence"],"summary":"Multipart upload of shipment documents","description":"Accept a multipart upload of up to 8 documents and return the\nShipmentEvidence. Internally reuses the existing\n`extract_document` from `hermes.compliance.shipment_validator`.\n\nAuth: requires an authenticated principal (JWT, static API key, or DB key).\nThe caller's tenant identity is resolved server-side; the X-Tenant-ID header\nmust match the authenticated tenant when one is supplied.","operationId":"build_shipment_evidence_api_v1_shipment_evidence_post","parameters":[{"name":"origin","in":"query","required":false,"schema":{"type":"string","default":"","title":"Origin"}},{"name":"destination","in":"query","required":false,"schema":{"type":"string","default":"","title":"Destination"}},{"name":"incoterm","in":"query","required":false,"schema":{"type":"string","default":"","title":"Incoterm"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_build_shipment_evidence_api_v1_shipment_evidence_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/shipment/evidence/_health":{"get":{"tags":["shipment-evidence","shipment-evidence"],"summary":"Liveness check for the shipment evidence engine","operationId":"health_api_v1_shipment_evidence__health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/retention/status":{"get":{"tags":["retention"],"summary":"Retention Status","description":"Current retention configuration, last run, and eligible counts.\n\nOperator/admin only. Returns no secrets.","operationId":"retention_status_api_v1_retention_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetentionStatusResponse"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/retention/scan":{"post":{"tags":["retention"],"summary":"Retention Scan","description":"Run a scan-only pass (never deletes). Returns candidates per scope.","operationId":"retention_scan_api_v1_retention_scan_post","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/RetentionScanRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Retention Scan Api V1 Retention Scan Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/retention/run":{"post":{"tags":["retention"],"summary":"Retention Run","description":"Execute a real retention pass after explicit operator confirmation.\n\nThe body must carry ``confirm: \"retention-delete\"``. ``dry_run: true``\nforces a no-op scan for rehearsal purposes.","operationId":"retention_run_api_v1_retention_run_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetentionRunRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Retention Run Api V1 Retention Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/organizations":{"post":{"tags":["organizations"],"summary":"Create Organization","description":"Create a new organization. The creator becomes the ADMIN.\n\nAny authenticated user can create an organization. If the user already\nbelongs to an organization, this still succeeds (multi-org support).","operationId":"create_organization_api_v1_organizations_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/organizations/me":{"get":{"tags":["organizations"],"summary":"Get My Organization","description":"Get the calling user's organization and their role.\n\nReturns the first organization the user belongs to, or 404 if none.","operationId":"get_my_organization_api_v1_organizations_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/organizations/{org_id}/members":{"get":{"tags":["organizations"],"summary":"List Members","description":"List all members of an organization.\n\nRequires VIEWER role or higher. Returns organization info and member list.","operationId":"list_members_api_v1_organizations__org_id__members_get","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","title":"Org Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgMembersResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/organizations/{org_id}/invites":{"post":{"tags":["organizations"],"summary":"Create Invite","description":"Invite a user to the organization by email.\n\nRequires ADMIN role. Creates a persistent invite token (InviteRecord)\nand sends a transactional email. The invite expires after 48 hours.","operationId":"create_invite_api_v1_organizations__org_id__invites_post","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","title":"Org Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/organizations/{org_id}/members/{user_id}":{"patch":{"tags":["organizations"],"summary":"Update Member Role","description":"Change a member's role in the organization.\n\nRequires ADMIN role. Cannot change your own role (to prevent lockout).","operationId":"update_member_role_api_v1_organizations__org_id__members__user_id__patch","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","title":"Org Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRoleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]},"delete":{"tags":["organizations"],"summary":"Remove Member","description":"Remove a member from the organization.\n\nRequires ADMIN role. Cannot remove yourself (to prevent lockout).","operationId":"remove_member_api_v1_organizations__org_id__members__user_id__delete","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","title":"Org Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/organizations/accept-invite":{"post":{"tags":["organizations"],"summary":"Accept Invite","description":"Accept an organization invite using the invite token.\n\nThis endpoint is called from the onboarding flow after the user\nhas signed up / logged in with Supabase. Uses the persistent\nInviteRecord system — validates token, checks expiry, adds user\nto organization.","operationId":"accept_invite_api_v1_organizations_accept_invite_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptInviteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/org/members":{"get":{"tags":["organizations"],"summary":"List Members Legacy","description":"Legacy alias for listing current user's org members.","operationId":"list_members_legacy_api_v1_org_members_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/org/members/invite":{"post":{"tags":["organizations"],"summary":"Invite Member Legacy","description":"Legacy alias for inviting a member.","operationId":"invite_member_legacy_api_v1_org_members_invite_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/org/members/{target_user_id}/role":{"patch":{"tags":["organizations"],"summary":"Update Member Role Legacy","description":"Legacy alias for updating a member's role.","operationId":"update_member_role_legacy_api_v1_org_members__target_user_id__role_patch","parameters":[{"name":"target_user_id","in":"path","required":true,"schema":{"type":"string","title":"Target User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRoleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/org/members/{target_user_id}":{"delete":{"tags":["organizations"],"summary":"Remove Member Legacy","description":"Legacy alias for removing a member.","operationId":"remove_member_legacy_api_v1_org_members__target_user_id__delete","parameters":[{"name":"target_user_id","in":"path","required":true,"schema":{"type":"string","title":"Target User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/integrations/recipes":{"get":{"tags":["integrations","integrations"],"summary":"Integration Recipes","description":"Copy-paste Zapier / Make.com templates for no-code VGTC integration.","operationId":"integration_recipes_api_v1_integrations_recipes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Integration Recipes Api V1 Integrations Recipes Get"}}}}},"security":[]}},"/api/v1/integrations/erp-status":{"get":{"tags":["integrations","integrations"],"summary":"Erp Status","description":"Honest read-out of SAP/Odoo connector state and what flips them live.","operationId":"erp_status_api_v1_integrations_erp_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Erp Status Api V1 Integrations Erp Status Get"}}}}},"security":[]}},"/api/v1/public/sandbox":{"post":{"tags":["integrations","integrations"],"summary":"Public Sandbox","description":"No-login HS + sanctions peek. Rate-limited (5/min/IP).\n\nHS suggestion is free and rule-based for anonymous callers. Authenticated\ncallers get the LLM path after one CLASSIFICATION credit is charged\n(durable credit/usage system; 402 when the balance is insufficient).","operationId":"public_sandbox_api_v1_public_sandbox_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Public Sandbox Api V1 Public Sandbox Post"}}}}},"security":[]}},"/api/v1/sources":{"get":{"tags":["regulatory-sources","regulatory-sources"],"summary":"Official regulatory data sources & freshness","description":"Reference registry of the official US/EU/UK/VN/IN trade and regulatory sources VGTC uses or cites, with each source's legal character, access method, reuse terms and VGTC integration status. Live freshness is reported only for sources VGTC continuously monitors; everything else is explicitly NOT_MONITORED. Web-only sources are cited, never scraped.","operationId":"get_regulatory_sources_api_v1_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Regulatory Sources Api V1 Sources Get"}}}}},"security":[]}},"/api/v1/sources/changes":{"get":{"tags":["regulatory-sources","regulatory-sources"],"summary":"Regulatory change monitor — detected changes & source freshness","description":"Detected regulatory changes on allowlisted official feeds (Federal Register, eCFR) and per-source data-freshness health. Detected changes are advisory and stay UNDER_REVIEW; VGTC never auto-activates a legal rule from a fetched document. Freshness requires the expected document to be obtained, schema-validated, parsed and accepted — a reachable but invalid source is NOT fresh. Read-only: this endpoint never fetches.","operationId":"get_regulatory_changes_api_v1_sources_changes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Regulatory Changes Api V1 Sources Changes Get"}}}}},"security":[]}},"/api/v1/sources/freshness":{"get":{"tags":["regulatory-sources","regulatory-sources"],"summary":"Regulatory provenance & freshness of the values VGTC uses","description":"The single provenance/freshness model applied to the P0 regulatory values VGTC relies on (national tariff datasets, sanctions lists, EU and UK CBAM). Every value carries its jurisdiction, authority, source, source tier, instrument id, effective window, data-as-of date, status and verification state. A value that is stale, undated, unsupported, conflicting or not yet in force is reported with a deterministic reason code so it can cap a result to REVIEW. Read-only: no fetch is performed.","operationId":"get_regulatory_freshness_api_v1_sources_freshness_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Regulatory Freshness Api V1 Sources Freshness Get"}}}}},"security":[]}},"/api/v1/sources/regulatory-lists":{"get":{"tags":["regulatory-sources","regulatory-sources"],"summary":"Ingested official regulatory lists — version, freshness, verification","description":"VGTC's own versioned ingestions of official regulatory enumerations: the UFLPA Entity List and the Section 232 aluminum/steel/copper annex scope lists. Each dataset reports its official authority and citation, list or effective date, dataset version, SHA-256 content checksum, parser and schema version, validation invariants and verification state, so a consumer can see exactly which official artifact a decision used. A dataset that has not been refreshed within its freshness policy is reported as such and caps the relevant path to REVIEW. Read-only: this endpoint never fetches.","operationId":"get_regulatory_lists_api_v1_sources_regulatory_lists_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Regulatory Lists Api V1 Sources Regulatory Lists Get"}}}}},"security":[]}},"/api/v1/sources/section232/scope":{"get":{"tags":["regulatory-sources","regulatory-sources"],"summary":"Section 232 scope lookup (date-aware, fail-safe)","description":"Whether the Section 232 measures extend to an article for a given entry date, evaluated against the ingested, verified annex scope lists of the applicable proclamation. Returns IN_SCOPE, OUT_OF_SCOPE or REVIEW. A stale, unknown or incomplete dataset, an entry date outside the ingested coverage, insufficient HTS granularity, or an unresolved country/content condition all return REVIEW — never OUT_OF_SCOPE. No duty amount is computed. Read-only: no fetch is performed.","operationId":"get_section232_scope_api_v1_sources_section232_scope_get","parameters":[{"name":"hts_code","in":"query","required":true,"schema":{"type":"string","title":"Hts Code"}},{"name":"entry_date","in":"query","required":true,"schema":{"type":"string","title":"Entry Date"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"metal_content_percent","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Metal Content Percent"}},{"name":"smelt_or_cast_country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smelt Or Cast Country"}},{"name":"us_content_percent","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Us Content Percent"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Section232 Scope Api V1 Sources Section232 Scope Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/sources/ebti/corpus":{"get":{"tags":["regulatory-sources","regulatory-sources"],"summary":"EU EBTI/BTI precedent corpus status (honest, no scraping)","description":"Whether a locally installed official EBTI/BTI dataset is searchable by VGTC, with its record count and the canonical official consultation URL. The European Commission publishes no documented machine-readable bulk, so VGTC does not scrape the portal and never fabricates a BTI; when no corpus is installed the status is CORPUS_NOT_INSTALLED and the official portal is linked. Read-only: never fetches.","operationId":"get_ebti_corpus_status_api_v1_sources_ebti_corpus_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Ebti Corpus Status Api V1 Sources Ebti Corpus Get"}}}}},"security":[]}},"/api/v1/sources/eu-classification-evidence":{"get":{"tags":["regulatory-sources","regulatory-sources"],"summary":"EU classification evidence for a candidate code (read-only)","description":"Assemble official EU classification evidence for a candidate HS/CN code: the CN legal basis (normalised to CELEX and verified against the EU Publications Office), EBTI precedent from the installed corpus (if any) and CJEU tariff-classification case law. Returns SUPPORTED / CONFLICTING / INSUFFICIENT / UNAVAILABLE. Advisory evidence only: it never selects, promotes or certifies a code, and every citation resolves to an official record or a recorded absence.","operationId":"get_eu_classification_evidence_api_v1_sources_eu_classification_evidence_get","parameters":[{"name":"hs_code","in":"query","required":true,"schema":{"type":"string","title":"Hs Code"}},{"name":"description","in":"query","required":false,"schema":{"type":"string","default":"","title":"Description"}},{"name":"include_case_law","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Case Law"}},{"name":"verify_legal_basis","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Verify Legal Basis"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Eu Classification Evidence Api V1 Sources Eu Classification Evidence Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/sources/low-value":{"get":{"tags":["regulatory-sources","regulatory-sources"],"summary":"US / EU / UK low-value import treatment (date-aware)","description":"Normalized low-value customs-duty treatment for the US, EU and UK for a given entry date, declared value and currency. Jurisdiction-specific thresholds, value bases, conditions and scheduled changes are preserved. A scheduled future rule is never applied early, and a monetary effect is returned only where it is safely calculable from verified official values. VAT, customs duty, handling fees and member-state charges are reported separately and never merged.","operationId":"get_low_value_treatment_api_v1_sources_low_value_get","parameters":[{"name":"country","in":"query","required":true,"schema":{"type":"string","title":"Country"}},{"name":"entry_date","in":"query","required":true,"schema":{"type":"string","title":"Entry Date"}},{"name":"declared_value","in":"query","required":true,"schema":{"type":"number","title":"Declared Value"}},{"name":"declared_currency","in":"query","required":true,"schema":{"type":"string","title":"Declared Currency"}},{"name":"item_count","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Item Count"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Low Value Treatment Api V1 Sources Low Value Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/duty/us-entry-audit":{"post":{"tags":["duty","duty"],"summary":"US post-entry audit (filed entry vs effective-dated expected duty)","description":"Reconciles the filed entry arithmetic and compares every line against the effective-dated US duty position for the entry date, then reports potential overpayments, potential underpayments, unresolved lines and the open post-entry correction route with its official timing rule. Money is computed exactly (Decimal, half-up to the cent). A difference is a potential review opportunity: VGTC does not produce refund claims, does not decide eligibility, and does not file post-summary corrections, protests or prior disclosures. Read-only: no fetch is performed.","operationId":"us_entry_audit_api_v1_duty_us_entry_audit_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntryAuditRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Us Entry Audit Api V1 Duty Us Entry Audit Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/cbam/eu/evidence":{"post":{"tags":["cbam","cbam"],"summary":"EU CBAM evidence completeness and certificate position","description":"Evaluates one EU CBAM import: scope from the CN code, the 50-tonne threshold, the supplier/installation/emissions/verifier/carbon-price/declarant evidence completeness, and a certificate position only when the emissions basis is verified and the certificate price is published. Received evidence is never treated as verified; an unverified carbon-price claim never reduces the amount; a missing emission value, default value or certificate price is reported as unavailable, never as zero. VGTC does not file a CBAM declaration and does not decide compliance. Read-only: no fetch is performed.","operationId":"eu_cbam_evidence_api_v1_cbam_eu_evidence_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CBAMAssessmentRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Eu Cbam Evidence Api V1 Cbam Eu Evidence Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/cbam/uk/readiness":{"post":{"tags":["cbam","cbam"],"summary":"UK CBAM readiness, threshold tests and evidence position","description":"Evaluates one person's UK CBAM position: commodity-code scope against Finance Act 2026 Schedule 16 (codes minus excepted codes), the liable person, the prospective 30-day and retrospective 12-month registration tests with their trigger dates, the records required by SI 2026/802 reg 5, the weight and functional-unit rules, the emissions basis (actual vs default), the verification requirement, Carbon Price Relief (including the non-exhaustive qualifying-scheme list) and the deadlines. UK CBAM commences 2027-01-01, so a pre-2027 import never attracts CBAM. No CBAM amount is produced because the HMT rate and HMRC default values are unpublished: the result is MONETARY_ESTIMATE_UNAVAILABLE. Read-only: no fetch is performed.","operationId":"uk_cbam_readiness_api_v1_cbam_uk_readiness_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UKCBAMReadinessRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Uk Cbam Readiness Api V1 Cbam Uk Readiness Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/sources/uflpa/screen":{"post":{"tags":["regulatory-sources","regulatory-sources"],"summary":"UFLPA entity-list screening with supplier/facility evidence assessment","description":"Screens the supplied supplier/manufacturer/exporter/facility names against the versioned, checksummed official UFLPA Entity List and assesses the supplier/facility evidence dossier. Returns, for each party, the match state and the exact official record matched (name or published alias) plus the dataset version, citation, data-as-of and checksum, and the matcher version. The dossier result distinguishes COMPLETE_FOR_ENTITY_LIST_SCREEN, PARTIAL and INSUFFICIENT with explicit missing information, and reports broader UFLPA due-diligence evidence as an unassessed limitation. A no-match is reported as 'no match identified against the checked list version' and is never a compliance determination. Read-only: no fetch is performed.","operationId":"screen_uflpa_api_v1_sources_uflpa_screen_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UflpaScreenRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Screen Uflpa Api V1 Sources Uflpa Screen Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/version":{"get":{"tags":["developer","developer"],"summary":"API version, versioning policy, error contract & changelog","description":"One truthful source for the public API version, the compatibility / deprecation policy, the developer error contract (codes, retryability, suggested action) and the append-only changelog. The same version string is advertised in the OpenAPI document's info.version.","operationId":"get_version_api_v1_version_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Version Api V1 Version Get"}}}}},"security":[]}},"/api/v1/leads":{"get":{"tags":["leads"],"summary":"List captured marketing leads (admin-only)","description":"Return captured leads newest-first for review/export.","operationId":"list_leads_api_v1_leads_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Leads Api V1 Leads Get"}}}}},"security":[]},"post":{"tags":["leads"],"summary":"Capture a marketing lead (public, opt-in)","description":"Store an opt-in email lead. Idempotent per email+source+page: an\nexisting lead is touched (timestamp refreshed) instead of duplicated.","operationId":"create_lead_api_v1_leads_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadCaptureRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Lead Api V1 Leads Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/newsletter/subscribe":{"post":{"tags":["newsletter","newsletter"],"summary":"Subscribe","operationId":"subscribe_api_v1_newsletter_subscribe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscribeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Subscribe Api V1 Newsletter Subscribe Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/newsletter/unsubscribe":{"post":{"tags":["newsletter","newsletter"],"summary":"Unsubscribe","operationId":"unsubscribe_api_v1_newsletter_unsubscribe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnsubscribeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Unsubscribe Api V1 Newsletter Unsubscribe Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/analytics/summary":{"get":{"tags":["analytics"],"summary":"Get Analytics Summary","description":"Return aggregated compliance analytics for the last N days.\n\nRuns efficient GROUP BY queries on ComplianceDocumentRecord and\nComplianceReviewItem tables, scoped to the authenticated caller.\n``total_documents`` also includes documents the user uploaded via the\ndashboard (Supabase ``documents``), via the service-role key.\n\nQuery params:\n    days: Number of days to look back (default 30, max 365).","operationId":"get_analytics_summary_api_v1_analytics_summary_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Analytics Summary Api V1 Analytics Summary Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/analytics/usage":{"get":{"tags":["analytics"],"summary":"Get Usage Analytics","description":"Return API usage analytics from usage_metrics table.\n\nShows per-day request counts, endpoint breakdown, and latency stats.\nScoped to the authenticated caller.","operationId":"get_usage_analytics_api_v1_analytics_usage_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Usage Analytics Api V1 Analytics Usage Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/analytics/overview":{"get":{"tags":["analytics"],"summary":"Organization-wide compliance overview","description":"Aggregate caller-scoped compliance performance for executives.\n\nReturns total duties saved (FTA opportunities), regulatory-change\nimpact exposure (drift findings), FBA readiness trajectory, and risk\ndistribution across approved records. Aggregation is scoped to the\nauthenticated caller's tenant (resolved server-side from the credential);\nanonymous development access falls back to the whole dataset.","operationId":"analytics_overview_api_v1_analytics_overview_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Analytics Overview Api V1 Analytics Overview Get"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/api-keys":{"get":{"tags":["api-keys","api-keys"],"summary":"List API keys","description":"List all API keys for the authenticated user.","operationId":"list_api_keys_api_v1_api_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/APIKeyListItem"},"type":"array","title":"Response List Api Keys Api V1 Api Keys Get"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]},"post":{"tags":["api-keys","api-keys"],"summary":"Create a new API key","description":"Create a new API key for the authenticated user.\n\nThe plaintext key is returned ONLY in this response.\nIt cannot be retrieved later.","operationId":"create_api_key_api_v1_api_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAPIKeyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAPIKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/api-keys/{key_id}/revoke":{"post":{"tags":["api-keys","api-keys"],"summary":"Revoke an API key","description":"Revoke an API key. The key will immediately stop working.","operationId":"revoke_api_key_api_v1_api_keys__key_id__revoke_post","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Revoke Api Key Api V1 Api Keys  Key Id  Revoke Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/api-keys/{key_id}/regenerate":{"post":{"tags":["api-keys","api-keys"],"summary":"Regenerate an API key","description":"Regenerate an API key. The old key is immediately invalidated.","operationId":"regenerate_api_key_api_v1_api_keys__key_id__regenerate_post","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegenerateAPIKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/api-keys/usage":{"get":{"tags":["api-keys","api-keys"],"summary":"Get API usage summary","description":"Get current monthly usage summary for the authenticated user.","operationId":"get_usage_summary_api_v1_api_keys_usage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageSummary"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/developer-logs":{"get":{"tags":["api-keys","api-keys"],"summary":"Get recent API request/response logs","description":"Return recent API hits for the authenticated user (debugging).\n\nEach entry: timestamp, method, endpoint, status code, latency, credits,\nand (redacted) request/response payloads. Primarily useful with sandbox\nsk_test_ keys.","operationId":"get_developer_logs_api_v1_developer_logs_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":"object","additionalProperties":true,"title":"Response Get Developer Logs Api V1 Developer Logs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/api-keys/rotate":{"post":{"tags":["api-keys","api-keys"],"summary":"Rotate an API key with a graceful overlap window","description":"Rotate an API key.\n\nGenerates a new key immediately. The OLD key stays active for\n``overlap_hours`` (default 24h) so active production microservices can\nmigrate without downtime; it is then automatically revoked via its\nexpires_at timestamp. Both keys map to the same account/ledger balance.","operationId":"rotate_api_key_api_v1_api_keys_rotate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotateAPIKeyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegenerateAPIKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/api-keys/{key_id}/expire":{"post":{"tags":["api-keys","api-keys"],"summary":"Set a hard expiry on an API key","description":"Set a hard self-destruct/expiry timestamp on an API key.\n\nUseful for temporary third-party contractor integrations. After the\nexpiry the key stops authenticating even if it was active.","operationId":"expire_api_key_api_v1_api_keys__key_id__expire_post","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","title":"Key Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExpireAPIKeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Expire Api Key Api V1 Api Keys  Key Id  Expire Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/audit/log":{"get":{"tags":["audit"],"summary":"Get Activity Audit Log","description":"Retrieve activity audit log for the organization.\n\nOnly ADMIN users can access the full audit trail.\nReturns entries ordered by timestamp descending.","operationId":"get_activity_audit_log_api_v1_audit_log_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"action","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action"}},{"name":"target_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditLogResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/export/certificate":{"post":{"tags":["export"],"summary":"Generate compliance audit certificate","description":"Generate a compliance audit certificate for a reviewed item.\n\nPremium feature: certificate export costs 2 credits (skipped for\nsandbox keys). The certificate includes the SHA-256 data-safety\nhash, the AI-assisted disclaimer, and CBP CROSS / WCO links.","operationId":"generate_certificate_api_v1_export_certificate_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/verify/certificate/{certificate_id}":{"get":{"tags":["export"],"summary":"Verify certificate integrity","description":"Verify a certificate's integrity using its SHA-256 hash.\n\nReturns certificate metadata and verification status.\nIn production, this would check against a certificate registry.","operationId":"verify_certificate_api_v1_verify_certificate__certificate_id__get","parameters":[{"name":"certificate_id","in":"path","required":true,"schema":{"type":"string","title":"Certificate Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Verify Certificate Api V1 Verify Certificate  Certificate Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/tasks/{task_id}/status":{"get":{"tags":["tasks"],"summary":"Get Task Status","description":"Get the status and result of a background task.\n\nReturns:\n    - status: \"pending\" | \"processing\" | \"success\" | \"failure\"\n    - result: Task output (only when status is \"success\")\n    - error: Error message (only when status is \"failure\")","operationId":"get_task_status_api_v1_tasks__task_id__status_get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/tasks/{task_id}/cancel":{"post":{"tags":["tasks"],"summary":"Cancel Task","description":"Cancel a running task.\n\nOnly works for tasks that haven't started yet (PENDING state).\nRunning tasks cannot be safely cancelled.","operationId":"cancel_task_api_v1_tasks__task_id__cancel_post","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/ai-act/evaluate":{"post":{"tags":["governance"],"summary":"Evaluate EU AI Act risk classification","description":"Classify a use case under the EU AI Act (Art. 6 + Annex III).","operationId":"ai_act_evaluate_api_v1_ai_act_evaluate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIActEvaluateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ai Act Evaluate Api V1 Ai Act Evaluate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/ai-act/record":{"post":{"tags":["governance"],"summary":"Record an AI decision in the audit log","description":"Record a model decision with a SHA-256 audit-chain entry.","operationId":"ai_act_record_api_v1_ai_act_record_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIActRecordRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ai Act Record Api V1 Ai Act Record Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/privacy/pii/scan":{"post":{"tags":["governance"],"summary":"Detect PII in text (GDPR Art. 9/10)","description":"Scan text for personally identifiable information.","operationId":"pii_scan_api_v1_privacy_pii_scan_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PIIRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Pii Scan Api V1 Privacy Pii Scan Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/privacy/data-subject":{"post":{"tags":["governance"],"summary":"Exercise a GDPR data-subject right","description":"Handle GDPR data-subject requests (Art. 15-22).","operationId":"gdpr_data_subject_api_v1_privacy_data_subject_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GDPRRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Gdpr Data Subject Api V1 Privacy Data Subject Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/valuation/compute":{"post":{"tags":["governance"],"summary":"Compute customs value (CBP 6-method)","description":"Determine the customs value using the CBP valuation hierarchy.","operationId":"valuation_compute_api_v1_valuation_compute_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValuationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Valuation Compute Api V1 Valuation Compute Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/classify/export-control":{"post":{"tags":["governance"],"summary":"Classify under US BIS/EAR export controls","description":"Classify a product description under BIS/EAR export controls.","operationId":"export_control_classify_api_v1_classify_export_control_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportControlRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Export Control Classify Api V1 Classify Export Control Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/regulatory/drift-scan":{"post":{"tags":["governance"],"summary":"Run a compliance drift scan","description":"Re-check saved classifications against latest tariff data.\n\nReturns findings for duty-rate changes, structural HS splits, and\nfailed lookups. Used by the daily drift monitor and available on demand.","operationId":"run_drift_scan_api_v1_regulatory_drift_scan_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriftScanRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Run Drift Scan Api V1 Regulatory Drift Scan Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/regulatory/drift-status":{"get":{"tags":["governance"],"summary":"Latest drift scan status","description":"Return the most recent drift-scan summary.","operationId":"drift_status_api_v1_regulatory_drift_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Drift Status Api V1 Regulatory Drift Status Get"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/custody/ledger":{"get":{"tags":["governance"],"summary":"Chain-of-custody ledger entries","description":"Return recent certificate chain-of-custody entries and verify integrity.","operationId":"custody_ledger_api_v1_custody_ledger_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":"object","additionalProperties":true,"title":"Response Custody Ledger Api V1 Custody Ledger Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/observability/circuit-breakers":{"get":{"tags":["governance"],"summary":"External-lookup circuit breaker states","description":"Return the state of every external-lookup circuit breaker.\n\nWhen a breaker is open, the platform serves localized fallback states\n(cached/estimated duty data) instead of blocking workers.","operationId":"circuit_breaker_states_api_v1_observability_circuit_breakers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Circuit Breaker States Api V1 Observability Circuit Breakers Get"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/observability/security":{"get":{"tags":["governance"],"summary":"Structured security telemetry stream","description":"Expose high-risk security alerts for enterprise CISO teams.\n\nIncludes: idempotency duplication spikes (loop/DoS signals), grouped\nauthentication failures by client IP, and circuit-breaker state\ntransitions (OPEN / HALF_OPEN chronological log).","operationId":"security_telemetry_api_v1_observability_security_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Security Telemetry Api V1 Observability Security Get"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/webhooks/register":{"post":{"tags":["governance","enterprise"],"summary":"Register an enterprise webhook endpoint","description":"Register a signed webhook endpoint (TMS/ERP) for compliance events.\n\nOutgoing payloads carry a distinct X-VGTC-Signature (HMAC-SHA256)\nheader derived from the provided secret.","operationId":"register_webhook_api_v1_webhooks_register_post","parameters":[{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRegisterRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRegisterResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/webhooks":{"get":{"tags":["governance","enterprise"],"summary":"List registered webhooks","operationId":"list_webhooks_api_v1_webhooks_get","parameters":[{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Webhooks Api V1 Webhooks Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/screen/ubo":{"post":{"tags":["governance"],"summary":"Screen parent/UBO entity against denied-party registers","description":"Structural PEP/UBO risk mapping.\n\nScreens the parent/ultimate beneficial owner beyond the primary\nconsignee string, returning a structural risk matrix (UBO_LAYER_MATCH,\nDENIED_PARTY_MATCH, PEP_MATCH) for shell-company ownership chains.","operationId":"screen_ubo_api_v1_screen_ubo_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UBOScreenRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Screen Ubo Api V1 Screen Ubo Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/enterprise/audit-logs/export":{"get":{"tags":["governance"],"summary":"Export security audit logs (SIEM)","description":"Structured SIEM export of security audit records.\n\nStrictly admin-bound and tenant-isolated: only the calling organization's\nrecords are returned. Output is JSON (default) or CSV for Splunk/Datadog\ningestion.","operationId":"export_audit_logs_api_v1_enterprise_audit_logs_export_get","parameters":[{"name":"format","in":"query","required":false,"schema":{"type":"string","default":"json","title":"Format"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Export Audit Logs Api V1 Enterprise Audit Logs Export Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/enterprise/partitions/maintain":{"post":{"tags":["governance"],"summary":"Run audit-ledger partition maintenance","description":"Create new monthly partitions and archive old ones to cold storage.","operationId":"maintain_partitions_api_v1_enterprise_partitions_maintain_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Maintain Partitions Api V1 Enterprise Partitions Maintain Post"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/mcp/tools/list":{"post":{"tags":["mcp"],"summary":"List Tools","operationId":"list_tools_api_v1_mcp_tools_list_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Tools Api V1 Mcp Tools List Post"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/mcp/tools/call":{"post":{"tags":["mcp"],"summary":"Call Tool","operationId":"call_tool_api_v1_mcp_tools_call_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Call Tool Api V1 Mcp Tools Call Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/mcp/resources/list":{"post":{"tags":["mcp"],"summary":"List Resources","operationId":"list_resources_api_v1_mcp_resources_list_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Resources Api V1 Mcp Resources List Post"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/mcp/resources/read":{"post":{"tags":["mcp"],"summary":"Read Resource","operationId":"read_resource_api_v1_mcp_resources_read_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Read Resource Api V1 Mcp Resources Read Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/mcp/schema":{"get":{"tags":["mcp"],"summary":"Get Tool Schemas","operationId":"get_tool_schemas_api_v1_mcp_schema_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Tool Schemas Api V1 Mcp Schema Get"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/agent/run-agent":{"post":{"tags":["agent"],"summary":"Run Agent","operationId":"run_agent_api_v1_agent_run_agent_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunAgentRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/agent/agents":{"get":{"tags":["agent"],"summary":"List Agents","operationId":"list_agents_api_v1_agent_agents_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Agents Api V1 Agent Agents Get"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/research":{"post":{"tags":["research"],"summary":"Conduct Research","operationId":"conduct_research_api_v1_research_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResearchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/research/{query}":{"post":{"tags":["research"],"summary":"Research Quick","operationId":"research_quick_api_v1_research__query__post","parameters":[{"name":"query","in":"path","required":true,"schema":{"type":"string","title":"Query"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Research Quick Api V1 Research  Query  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/analyze-repo":{"post":{"tags":["analysis"],"summary":"Analyze Repo","operationId":"analyze_repo_api_v1_analyze_repo_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepoAnalysisRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/security-scan":{"post":{"tags":["security"],"summary":"Security Scan","operationId":"security_scan_api_v1_security_scan_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityScanRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/health":{"get":{"tags":["health"],"summary":"Health check","description":"Health check endpoint — no auth required.","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Health Check Health Get"}}}}},"security":[]}},"/heartbeat":{"get":{"tags":["health"],"summary":"Keep-alive heartbeat","description":"Lightweight heartbeat endpoint to prevent server sleep.\n\nReturns minimal data to keep the server awake when users are active.\nUsed by frontend dashboard to send periodic pings.","operationId":"heartbeat_heartbeat_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Heartbeat Heartbeat Get"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/sso/metadata":{"get":{"tags":["enterprise"],"summary":"SSO/SAML provider metadata","description":"SSO/SAML capability metadata for enterprise procurement.\n\nDocuments the SSO roadmap so enterprise buyers can evaluate VGTC\nagainst their identity-provider requirements.","operationId":"sso_metadata_api_v1_sso_metadata_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Sso Metadata Api V1 Sso Metadata Get"}}}}},"security":[]}},"/api/v1/landed-cost":{"post":{"tags":["costs"],"summary":"Calculate detailed landed cost breakdown","description":"Get Customs Duty + VAT/GST + Shipping + Insurance = Total Landed Cost","operationId":"landed_cost_breakdown_api_v1_landed_cost_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LandedCostRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LandedCostBreakdown"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/country-capabilities":{"get":{"tags":["tariff"],"summary":"List customer-facing country capability levels","operationId":"country_capabilities_api_v1_country_capabilities_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Country Capabilities Api V1 Country Capabilities Get"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/entry-readiness":{"post":{"tags":["entry"],"summary":"Check shipment entry readiness (AD/CVD, ISF, FDA, pre-filings)","description":"Flags active AD/CVD + Section 301 orders, ISF (10+2) data requirements, FDA/PGA regulatory routes, and mandatory pre-filings for an HS code + origin country.","operationId":"entry_readiness_check_api_v1_entry_readiness_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Entry Readiness Check Api V1 Entry Readiness Post"}}}}},"security":[]}},"/api/v1/fta/eligibility":{"post":{"tags":["fta"],"summary":"Check FTA eligibility for origin-destination pair","description":"Determines if a Free Trade Agreement applies and estimates duty savings","operationId":"fta_eligibility_check_api_v1_fta_eligibility_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Fta Eligibility Check Api V1 Fta Eligibility Post"}}}}},"security":[]}},"/api/v1/alerts/preferences":{"post":{"tags":["alerts"],"summary":"Set tariff alert preferences","description":"Set user preferences for tariff change alerts.","operationId":"set_alert_preferences_api_v1_alerts_preferences_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertPreferenceRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Set Alert Preferences Api V1 Alerts Preferences Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/alerts/check":{"get":{"tags":["alerts"],"summary":"Check for tariff changes and send alerts","description":"Check for tariff changes and send email alerts.","operationId":"check_tariff_alerts_api_v1_alerts_check_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Check Tariff Alerts Api V1 Alerts Check Get"}}}}},"security":[]}},"/api/v1/docs":{"get":{"tags":["docs"],"summary":"API Documentation and examples","description":"VGTC API Documentation — Sample requests and responses.","operationId":"api_documentation_api_v1_docs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Api Documentation Api V1 Docs Get"}}}}},"security":[]}},"/api/v1/dashboard/queue":{"get":{"summary":"Get review queue status and items","description":"Get the review queue summary and filtered items.\n\nReturns queue statistics (total, pending, approved, etc.) and\na list of review items matching the optional filters.\n\nArgs:\n    tenant_id: Tenant identifier from X-Tenant-ID header.\n    status: Filter items by review status.\n    assignee: Filter items by assigned reviewer.\n    limit: Maximum number of items to return (1-500).\n\nReturns:\n    QueueSummaryResponse with stats and item list.","operationId":"get_dashboard_queue_api_v1_dashboard_queue_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by status: pending, approved, rejected, in_review, needs_info","title":"Status"},"description":"Filter by status: pending, approved, rejected, in_review, needs_info"},{"name":"assignee","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by assigned reviewer","title":"Assignee"},"description":"Filter by assigned reviewer"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Maximum items to return","default":50,"title":"Limit"},"description":"Maximum items to return"},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Tenant identifier for row-level isolation","title":"X-Tenant-Id"},"description":"Tenant identifier for row-level isolation"}],"responses":{"200":{"description":"Queue summary returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueueSummaryResponse"}}}},"401":{"description":"Missing or invalid API key"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/dashboard/action/{item_id}":{"post":{"summary":"Perform an action on a review item","description":"Perform an action on a review item (approve, reject, request_info).\n\nArgs:\n    item_id: The review item ID to act upon.\n    request: Action details (action type, actor, hs_code, notes).\n    tenant_id: Tenant identifier from X-Tenant-ID header.\n\nReturns:\n    DashboardActionResponse with success status and new item status.\n\nRaises:\n    401: If authentication fails.\n    404: If the review item is not found.\n    409: If the item is already resolved (approved/rejected).\n    422: If the action is invalid for the current item status.","operationId":"dashboard_action_api_v1_dashboard_action__item_id__post","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Tenant identifier for row-level isolation","title":"X-Tenant-Id"},"description":"Tenant identifier for row-level isolation"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardActionRequest"}}}},"responses":{"200":{"description":"Action performed successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardActionResponse"}}}},"401":{"description":"Missing or invalid API key"},"404":{"description":"Review item not found"},"409":{"description":"Item already resolved"},"422":{"description":"Invalid action or parameters"}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/integration/sap/trigger":{"post":{"tags":["ERP Integration"],"summary":"Trigger SAP compliance check","description":"Fetches a SAP S/4HANA sales order via OData, runs HS classification and sanctions screening, and returns a ReviewItem for human approval.","operationId":"trigger_sap_compliance_api_v1_integration_sap_trigger_post","parameters":[{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Tenant identifier for row-level isolation","title":"X-Tenant-Id"},"description":"Tenant identifier for row-level isolation"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SAPTriggerRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ERPTriggerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/integration/odoo/trigger":{"post":{"tags":["ERP Integration"],"summary":"Trigger Odoo compliance check","description":"Fetches an Odoo invoice via JSON-RPC, runs HS classification and sanctions screening, and returns a ReviewItem for human approval.","operationId":"trigger_odoo_compliance_api_v1_integration_odoo_trigger_post","parameters":[{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Tenant identifier for row-level isolation","title":"X-Tenant-Id"},"description":"Tenant identifier for row-level isolation"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OdooTriggerRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ERPTriggerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/compliance/bulk-upload":{"post":{"tags":["bulk"],"summary":"Bulk classify items from CSV or XLSX file","description":"Upload CSV/XLSX with columns: description, quantity, unit_price_usd, origin_country. Max 500 rows.","operationId":"bulk_upload_api_v1_compliance_bulk_upload_post","parameters":[{"name":"destination_country","in":"query","required":false,"schema":{"type":"string","minLength":2,"maxLength":2,"description":"Destination ISO country code","default":"US","title":"Destination Country"},"description":"Destination ISO country code"}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_bulk_upload_api_v1_compliance_bulk_upload_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkUploadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/classify/quick":{"post":{"tags":["classification"],"summary":"Quick HS code classification for a product description","description":"Quickly classify a product description to an HS code.\n\nDelegates to the evidence-based retrieval engine\n(`hs_engine.classify_evidence`) which returns an honest result envelope.\nUnknown inputs are NEVER assigned a fake placeholder code\n(9999.99/0000.00), fabricated confidence, or fabricated duty. Outcomes:\n\n  CLASSIFIED          -> hs_code + calibrated confidence + duty status\n  NEEDS_INFORMATION   -> clarifying_question + ranked candidates\n  REVIEW_REQUIRED     -> best candidate flagged for human review\n  SOURCE_UNAVAILABLE  -> no confident deterministic source","operationId":"quick_classify_api_v1_classify_quick_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Quick Classify Api V1 Classify Quick Post"}}}}},"security":[]}},"/api/v1/classify/asean":{"get":{"tags":["classification"],"summary":"ASEAN tariff & HS lookup (SG/TH/MY/ID/PH/VN)","description":"Look up ASEAN AHTN 8-digit coverage + Philippine duty rates.\n\nAll ASEAN members use the shared AHTN 2022 base; the Philippines\n(PTF 2.0) provides live duty rates. Other countries return the shared\nAHTN 8-digit line (verify national tariff for exact line).","operationId":"asean_tariff_api_v1_classify_asean_get","parameters":[{"name":"hs_code","in":"query","required":true,"schema":{"type":"string","minLength":6,"maxLength":8,"description":"6-digit HS code","title":"Hs Code"},"description":"6-digit HS code"},{"name":"countries","in":"query","required":false,"schema":{"type":"string","description":"Comma-separated ISO codes, e.g. SG,TH,MY,ID","default":"","title":"Countries"},"description":"Comma-separated ISO codes, e.g. SG,TH,MY,ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Asean Tariff Api V1 Classify Asean Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/classify/verify":{"get":{"tags":["classification"],"summary":"Verify an HS code against official government sources","description":"Verify a classified HS code against official government sources.\n\nQueries USITC HTS (US duty rates), UK Trade Tariff API, and CBP CROSS\nrulings, returning a structured proof stack: source, URL, retrieved-at\ntimestamp, status, code, description, and duty rate for each.","operationId":"verify_hs_api_v1_classify_verify_get","parameters":[{"name":"hs_code","in":"query","required":true,"schema":{"type":"string","minLength":6,"maxLength":12,"description":"HS code (6+ digits)","title":"Hs Code"},"description":"HS code (6+ digits)"},{"name":"product_term","in":"query","required":false,"schema":{"type":"string","maxLength":200,"description":"Product description for ruling search","default":"","title":"Product Term"},"description":"Product description for ruling search"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Verify Hs Api V1 Classify Verify Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/classify/rulings":{"get":{"tags":["classification"],"summary":"Search CBP CROSS rulings (BTI-style precedent lookup)","description":"Search US CBP CROSS rulings for a product (precedent retrieval).\n\nSurfaces legally-decided rulings (ruling numbers + HS tariffs) so a\nclassification can cite real precedent, like Digicust's BTI search.\nGracefully returns empty on network failure.","operationId":"cross_rulings_api_v1_classify_rulings_get","parameters":[{"name":"term","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":200,"description":"Product keyword","title":"Term"},"description":"Product keyword"},{"name":"max_results","in":"query","required":false,"schema":{"type":"integer","maximum":10,"minimum":1,"default":5,"title":"Max Results"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Cross Rulings Api V1 Classify Rulings Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/classify/gri":{"post":{"tags":["classification"],"summary":"Classify product using GRI legal reasoning","description":"Classify a product using GRI (General Rules for Interpretation) reasoning.\n\nProvides step-by-step legal classification with GRI Rule 1-6 application,\nessential character analysis, and CROSS ruling citations.","operationId":"gri_classify_api_v1_classify_gri_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Gri Classify Api V1 Classify Gri Post"}}}}},"security":[]}},"/api/v1/audit/entry":{"post":{"tags":["audit"],"summary":"Audit customs entry for overpayments and duty recovery","description":"Audit a customs entry to identify overpayments, misclassifications,\nand duty drawback opportunities.","operationId":"audit_entry_endpoint_api_v1_audit_entry_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Audit Entry Endpoint Api V1 Audit Entry Post"}}}}},"security":[]}},"/api/v1/credits/tiers":{"get":{"tags":["credits"],"summary":"Get available pricing tiers","description":"Return all available pricing tiers and their features.","operationId":"get_tiers_api_v1_credits_tiers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[]}},"/api/v1/credits/usage":{"get":{"tags":["credits"],"summary":"Get current usage and credits remaining","description":"Get usage summary scoped to the authenticated caller.\n\nThe ``api_key`` query parameter is a legacy input retained for the\nauth-disabled development mode. When auth is enabled the usage is\nalways scoped to the server-derived effective tenant of the\nauthenticated credential, so one account cannot read another's\nbalance.","operationId":"get_usage_api_v1_credits_usage_get","parameters":[{"name":"api_key","in":"query","required":false,"schema":{"type":"string","default":"default","title":"Api Key"}},{"name":"tier","in":"query","required":false,"schema":{"type":"string","default":"free","title":"Tier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/policy/alerts":{"get":{"tags":["policy"],"summary":"Get regulatory policy alerts","description":"Get policy alerts with optional filters.","operationId":"get_policy_alerts_api_v1_policy_alerts_get","parameters":[{"name":"alert_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alert Type"}},{"name":"severity","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Severity"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"hs_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hs Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/policy/subscribe":{"post":{"tags":["policy"],"summary":"Subscribe to policy alerts","description":"Create a policy alert subscription.","operationId":"subscribe_policy_alerts_api_v1_policy_subscribe_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[]}},"/api/v1/metrics/accuracy":{"get":{"tags":["metrics"],"summary":"Get published accuracy metrics","description":"Return published accuracy metrics for VGTC classification engine.","operationId":"get_accuracy_metrics_api_v1_metrics_accuracy_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[]}},"/api/v1/account":{"delete":{"summary":"Delete Account","description":"Permanently delete the authenticated user's organisation data (GDPR Art. 17).\n\nThe caller can only ever delete their own organisation (the id comes\nfrom the verified auth principal). Erases org-scoped compliance records,\naudit chain, documents and the Supabase auth identity, returning a\nper-table count plus whether the auth user was actually removed.","operationId":"delete_account_api_v1_account_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/account/export":{"get":{"summary":"Export Account Data","description":"Export the authenticated user's organisation data (GDPR Art. 20).\n\nScoped strictly to the organization resolved from the verified auth\nprincipal (same trust anchor as account deletion). Never returns\nanother tenant's rows. Failures surface as real error responses.","operationId":"export_account_data_api_v1_account_export_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/classify/eccn":{"post":{"tags":["classification"],"summary":"Classify a product description to an ECCN (US BIS/EAR)","description":"Classify a product description to an Export Control Classification Number\n(ECCN) using the US BIS Commerce Control List engine.","operationId":"classify_eccn_api_v1_classify_eccn_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Classify Eccn Api V1 Classify Eccn Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/classify/bti-rulings":{"get":{"tags":["classification"],"summary":"Search EU BTI (Binding Tariff Information) precedents","description":"Search the EU EBTI database for Binding Tariff Information precedents.\n\nA BTI is a legal EU classification decision binding EU-wide for 3 years\n(UCC Art. 34) — the strongest external precedent an HS suggestion can\ncite. No keyless JSON API is documented, so on API failure we return a\npre-filled manual portal link rather than fabricated results.","operationId":"bti_rulings_api_v1_classify_bti_rulings_get","parameters":[{"name":"term","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":200,"description":"Product keyword","title":"Term"},"description":"Product keyword"},{"name":"max_results","in":"query","required":false,"schema":{"type":"integer","maximum":10,"minimum":1,"default":5,"title":"Max Results"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Bti Rulings Api V1 Classify Bti Rulings Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/duty/stacked":{"post":{"tags":["duty"],"summary":"Calculate stacked US import duty (MFN + trade-remedy layers)","description":"Compute the additive US duty stack for one HTS code + origin + entry date.\n\nLayers: MFN (live USITC) + Section 301 China + Section 232 metals +\nSection 122 global surcharge + IEEPA fentanyl/reciprocal.\n\nEntry-date parameterized: answers both 'what do I owe today' AND\n'what was collected on a past entry that may be refundable' after\nLearning Resources v. Trump (SCOTUS, 2026-02-20).","operationId":"stacked_tariff_api_v1_duty_stacked_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stacked Tariff Api V1 Duty Stacked Post"}}}}},"security":[]}},"/api/v1/compliance/validate-shipment":{"post":{"tags":["compliance"],"summary":"Validate multi-document shipment (invoice + packing list + BOL)","description":"Upload all shipment documents (commercial invoice, packing list,\nbill of lading) and cross-check them for consistency.\n\nExtracts structured fields from each document via Gemini vision and\nverifies: HS code agreement, total value vs line sums, invoice vs\npacking-list quantities, and shipper/consignee consistency.","operationId":"validate_shipment_api_v1_compliance_validate_shipment_post","parameters":[{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Tenant identifier for row-level isolation","title":"X-Tenant-Id"},"description":"Tenant identifier for row-level isolation"}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_validate_shipment_api_v1_compliance_validate_shipment_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}},"/api/v1/vnaccs/validate":{"post":{"tags":["Vietnam VNACCS"],"summary":"Vietnam VNACCS pre-submission declaration validator","description":"Validates a Vietnam customs declaration payload against VNACCS field rules (TT 38/2015 as amended by TT 39/2018) BEFORE submission. Returns structured issues with remediation text. Does NOT submit to VNACCS — this is a pre-check only. Free to use — no credits consumed. Rate-limited to 20 requests/minute per IP.","operationId":"validate_vnaccs_public_api_v1_vnaccs_validate_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Validate Vnaccs Public Api V1 Vnaccs Validate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/v1/vnaccs/lookup":{"post":{"tags":["Vietnam VNACCS"],"summary":"Vietnam AHTN 8-digit code lookup from a product description","description":"Searches the WCO HS database (6,940+ codes) for a product description and extends matches to 8-digit Vietnam AHTN lines where known. Returns candidate codes with English and Vietnamese descriptions plus any known duty estimate. Free to use — no credits consumed.","operationId":"vnaccs_lookup_public_api_v1_vnaccs_lookup_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Vnaccs Lookup Public Api V1 Vnaccs Lookup Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}}},"components":{"schemas":{"AIActEvaluateRequest":{"properties":{"task":{"type":"string","maxLength":4000,"minLength":1,"title":"Task"},"context":{"additionalProperties":true,"type":"object","title":"Context"}},"type":"object","required":["task"],"title":"AIActEvaluateRequest"},"AIActRecordRequest":{"properties":{"task":{"type":"string","maxLength":4000,"minLength":1,"title":"Task"},"output":{"type":"string","maxLength":4000,"title":"Output","default":""},"confidence":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Confidence","default":1.0},"model_used":{"type":"string","maxLength":200,"title":"Model Used","default":""}},"type":"object","required":["task"],"title":"AIActRecordRequest"},"APIKeyListItem":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"key_prefix":{"type":"string","title":"Key Prefix"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","title":"Created At"},"last_used_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Used At"},"tenant_id":{"type":"string","title":"Tenant Id"}},"type":"object","required":["id","name","key_prefix","status","created_at","tenant_id"],"title":"APIKeyListItem","description":"API key list item (no plaintext)."},"AcceptInviteRequest":{"properties":{"token":{"type":"string","title":"Token"},"user_id":{"type":"string","title":"User Id","description":"Supabase user ID of the accepting user"},"user_email":{"type":"string","title":"User Email","description":"Email of the accepting user"}},"type":"object","required":["token","user_id","user_email"],"title":"AcceptInviteRequest"},"AgentResponse":{"properties":{"status":{"type":"string","title":"Status"},"result":{"type":"string","title":"Result"},"steps":{"type":"integer","title":"Steps"}},"type":"object","required":["status","result","steps"],"title":"AgentResponse"},"AlertPreferenceRequest":{"properties":{"user_id":{"type":"string","minLength":1,"title":"User Id","description":"User identifier"},"email":{"type":"string","title":"Email","description":"Email for notifications"},"hs_codes":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Hs Codes","description":"HS codes to monitor"},"countries":{"items":{"type":"string"},"type":"array","title":"Countries","description":"Countries to monitor","default":["US"]}},"type":"object","required":["user_id","email","hs_codes"],"title":"AlertPreferenceRequest","description":"Request model for POST /api/v1/alerts/preferences."},"AnalysisResponse":{"properties":{"task_id":{"type":"string","title":"Task Id"},"status":{"type":"string","title":"Status"},"title":{"type":"string","title":"Title"},"summary":{"type":"string","title":"Summary"},"findings_count":{"type":"integer","title":"Findings Count"}},"type":"object","required":["task_id","status","title","summary","findings_count"],"title":"AnalysisResponse"},"AnalyzeRequest":{"properties":{"expected_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expected Version","description":"Optimistic-concurrency guard for the case row"},"eu_evidence":{"type":"boolean","title":"Eu Evidence","description":"Opt-in: also gather official EU classification evidence (EBTI precedent, CJEU case law, CN legal basis) for the first line and persist it on this revision as advisory evidence. Off by default so no external source is contacted unless requested. Advisory only; a conflicting set may downgrade READY to REVIEW, never the reverse.","default":false}},"type":"object","title":"AnalyzeRequest"},"AuditEntryResponse":{"properties":{"id":{"type":"integer","title":"Id"},"organization_id":{"type":"string","title":"Organization Id"},"user_id":{"type":"string","title":"User Id"},"user_email":{"type":"string","title":"User Email"},"action":{"type":"string","title":"Action"},"target_type":{"type":"string","title":"Target Type"},"target_id":{"type":"string","title":"Target Id"},"details":{"type":"string","title":"Details"},"ip_address":{"type":"string","title":"Ip Address"},"user_agent":{"type":"string","title":"User Agent"},"timestamp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timestamp"}},"type":"object","required":["id","organization_id","user_id","user_email","action","target_type","target_id","details","ip_address","user_agent"],"title":"AuditEntryResponse"},"AuditLogResponse":{"properties":{"entries":{"items":{"$ref":"#/components/schemas/AuditEntryResponse"},"type":"array","title":"Entries"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["entries","total","limit","offset"],"title":"AuditLogResponse"},"BatchScreeningRequest":{"properties":{"names":{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1,"title":"Names","description":"Names to screen"},"entity_type":{"$ref":"#/components/schemas/EntityType","default":"unknown"},"threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Threshold","default":0.5}},"type":"object","required":["names"],"title":"BatchScreeningRequest","description":"Request for batch sanctions screening."},"BatchScreeningResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/ScreeningResponse"},"type":"array","title":"Results"},"total_screened":{"type":"integer","title":"Total Screened"},"blocked_count":{"type":"integer","title":"Blocked Count"},"high_risk_count":{"type":"integer","title":"High Risk Count"},"medium_risk_count":{"type":"integer","title":"Medium Risk Count"},"low_risk_count":{"type":"integer","title":"Low Risk Count"},"clear_count":{"type":"integer","title":"Clear Count"},"screened_at":{"type":"string","title":"Screened At"}},"type":"object","required":["results","total_screened","blocked_count","high_risk_count","medium_risk_count","low_risk_count","clear_count","screened_at"],"title":"BatchScreeningResponse","description":"Response for batch sanctions screening."},"Body_build_shipment_evidence_api_v1_shipment_evidence_post":{"properties":{"files":{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array","title":"Files"}},"type":"object","required":["files"],"title":"Body_build_shipment_evidence_api_v1_shipment_evidence_post"},"Body_bulk_upload_api_v1_compliance_bulk_upload_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File","description":"CSV or XLSX file with items"}},"type":"object","required":["file"],"title":"Body_bulk_upload_api_v1_compliance_bulk_upload_post"},"Body_check_document_compliance_api_v1_compliance_check_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_check_document_compliance_api_v1_compliance_check_post"},"Body_compliance_check_api_v1_compliance_check_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File","description":"PDF trade document to process"}},"type":"object","required":["file"],"title":"Body_compliance_check_api_v1_compliance_check_post"},"Body_enhanced_compliance_check_api_v1_compliance_enhanced_check_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_enhanced_compliance_check_api_v1_compliance_enhanced_check_post"},"Body_extract_invoice_api_v1_compliance_extract_invoice_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_extract_invoice_api_v1_compliance_extract_invoice_post"},"Body_fba_assessment_api_v1_compliance_fba_assessment_post":{"properties":{"files":{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array","title":"Files"},"file":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"File"}},"type":"object","title":"Body_fba_assessment_api_v1_compliance_fba_assessment_post"},"Body_shipment_review_report_api_v1_shipment_review_report_post":{"properties":{"review":{"additionalProperties":true,"type":"object","title":"Review"}},"type":"object","required":["review"],"title":"Body_shipment_review_report_api_v1_shipment_review_report_post"},"Body_validate_shipment_api_v1_compliance_validate_shipment_post":{"properties":{"files":{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array","title":"Files"}},"type":"object","required":["files"],"title":"Body_validate_shipment_api_v1_compliance_validate_shipment_post"},"BulkUploadResponse":{"properties":{"status":{"type":"string","title":"Status"},"total_rows":{"type":"integer","title":"Total Rows"},"processed":{"type":"integer","title":"Processed"},"failed":{"type":"integer","title":"Failed"},"items":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Items"},"processing_time_ms":{"type":"number","title":"Processing Time Ms"},"job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Id"},"credits_charged":{"type":"integer","title":"Credits Charged","default":0}},"type":"object","required":["status","total_rows","processed","failed","items","processing_time_ms"],"title":"BulkUploadResponse","description":"Response model for POST /api/v1/compliance/bulk-upload."},"CBAMAssessmentRequest":{"properties":{"cn_code":{"type":"string","maxLength":16,"title":"Cn Code","default":""},"sector":{"type":"string","maxLength":32,"title":"Sector","default":""},"country_of_origin":{"type":"string","maxLength":2,"title":"Country Of Origin","default":""},"import_date":{"type":"string","maxLength":32,"title":"Import Date","default":""},"reporting_period":{"type":"string","maxLength":32,"title":"Reporting Period","default":""},"quantity_tonnes":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Quantity Tonnes"},"declarant_annual_tonnes":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Declarant Annual Tonnes"},"supplier_legal_name":{"type":"string","maxLength":200,"title":"Supplier Legal Name","default":""},"supplier_country":{"type":"string","maxLength":2,"title":"Supplier Country","default":""},"installation_identity":{"type":"string","maxLength":200,"title":"Installation Identity","default":""},"installation_country":{"type":"string","maxLength":2,"title":"Installation Country","default":""},"installation_operator":{"type":"string","maxLength":200,"title":"Installation Operator","default":""},"installation_identifier":{"type":"string","maxLength":64,"title":"Installation Identifier","default":""},"installation_identifier_source":{"type":"string","maxLength":64,"title":"Installation Identifier Source","default":""},"emissions_method":{"type":"string","maxLength":16,"title":"Emissions Method","default":""},"direct_emissions_tco2e":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Direct Emissions Tco2E"},"indirect_emissions_tco2e":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Indirect Emissions Tco2E"},"embedded_emissions_tco2e":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Embedded Emissions Tco2E"},"emissions_reporting_period":{"type":"string","maxLength":32,"title":"Emissions Reporting Period","default":""},"emissions_source":{"type":"string","maxLength":120,"title":"Emissions Source","default":""},"verifier_identity":{"type":"string","maxLength":200,"title":"Verifier Identity","default":""},"verifier_accreditation_reference":{"type":"string","maxLength":120,"title":"Verifier Accreditation Reference","default":""},"verification_period":{"type":"string","maxLength":32,"title":"Verification Period","default":""},"verification_report_reference":{"type":"string","maxLength":120,"title":"Verification Report Reference","default":""},"verification_date":{"type":"string","maxLength":32,"title":"Verification Date","default":""},"carbon_price_jurisdiction":{"type":"string","maxLength":2,"title":"Carbon Price Jurisdiction","default":""},"carbon_price_amount":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Carbon Price Amount"},"carbon_price_currency":{"type":"string","maxLength":3,"title":"Carbon Price Currency","default":""},"carbon_price_period":{"type":"string","maxLength":32,"title":"Carbon Price Period","default":""},"declarant_status":{"type":"string","maxLength":32,"title":"Declarant Status","default":""},"declarant_authorisation_reference":{"type":"string","maxLength":64,"title":"Declarant Authorisation Reference","default":""},"certificate_price_eur":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Certificate Price Eur"},"certificate_price_period":{"type":"string","maxLength":16,"title":"Certificate Price Period","default":""},"certificate_price_published":{"type":"boolean","title":"Certificate Price Published","default":false},"certificate_price_data_as_of":{"type":"string","maxLength":32,"title":"Certificate Price Data As Of","default":""},"certificate_price_source":{"type":"string","maxLength":200,"title":"Certificate Price Source","default":""},"free_allocation_factor":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Free Allocation Factor"},"evidence":{"additionalProperties":{"$ref":"#/components/schemas/CBAMEvidenceItemInput"},"type":"object","title":"Evidence"}},"type":"object","title":"CBAMAssessmentRequest"},"CBAMEvidenceItemInput":{"properties":{"state":{"type":"string","title":"State","description":"MISSING | REQUESTED | RECEIVED | UNDER_REVIEW | VERIFIED | REJECTED | EXPIRED | NOT_APPLICABLE. RECEIVED is never treated as VERIFIED.","default":"MISSING"},"party":{"type":"string","maxLength":64,"title":"Party","default":""},"reference":{"type":"string","maxLength":200,"title":"Reference","default":""},"covers_period":{"type":"string","maxLength":32,"title":"Covers Period","default":""},"received_at":{"type":"string","maxLength":32,"title":"Received At","default":""}},"type":"object","title":"CBAMEvidenceItemInput"},"CaseCreateRequest":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ReviewLineInput"},"type":"array","maxItems":50,"minItems":1,"title":"Items","description":"Line items to check"},"destination_country":{"type":"string","maxLength":3,"minLength":2,"title":"Destination Country","description":"Ship-to country (ISO-2)","default":"US"},"origin_country":{"anyOf":[{"type":"string","maxLength":3},{"type":"null"}],"title":"Origin Country","description":"Ship-from country (ISO-2)"},"transport_mode":{"type":"string","title":"Transport Mode","description":"vessel | air | truck | rail — drives ISF requirements","default":"air"},"incoterm":{"type":"string","maxLength":6,"title":"Incoterm","description":"Incoterm for VN flows","default":"FOB"},"parties":{"items":{"$ref":"#/components/schemas/ShipmentPartyInput"},"type":"array","maxItems":20,"title":"Parties","description":"Parties to screen for sanctions"},"usd_vnd":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Usd Vnd","description":"Optional USD/VND override"},"temporary_vat_reduction":{"type":"boolean","title":"Temporary Vat Reduction","description":"Apply the temporary 10% -> 8% VAT reduction (Decree 15/2022 et seq.)","default":false},"shipment_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shipment Date","description":"Shipment date (YYYY-MM-DD) for staged rates"},"vn_tax_id":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Vn Tax Id","description":"Declarant tax ID (VNACCS declarations)"},"isf_confirmed":{"type":"boolean","title":"Isf Confirmed","description":"ISF 10+2 broker filing confirmed (required to clear US ocean imports)","default":false},"fta_agreement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fta Agreement","description":"Agreement-level FTA claim applied to lines without declared_fta"},"currency":{"type":"string","maxLength":3,"title":"Currency","description":"Shipment-level currency","default":"USD"},"shipment_reference":{"type":"string","maxLength":120,"title":"Shipment Reference","description":"Caller reference","default":""},"notes":{"type":"string","maxLength":2000,"title":"Notes","description":"Optional free-text notes","default":""},"ownership":{"anyOf":[{"$ref":"#/components/schemas/OwnershipInput"},{"type":"null"}],"description":"Optional ownership graph. Omission produces OWNERSHIP_UNKNOWN, never CLEAR."},"supply_chain":{"anyOf":[{"$ref":"#/components/schemas/SupplyChainInput"},{"type":"null"}],"description":"Optional supplier/manufacturer/facility identities for forced-labour screening."},"uflpa_dossier":{"additionalProperties":{"type":"string"},"type":"object","title":"Uflpa Dossier","description":"Optional UFLPA evidence-item statuses (AVAILABLE/MISSING/UNKNOWN/NOT_APPLICABLE), keyed by the field names the UFLPA screen returns."},"p1_inputs":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"P1 Inputs","description":"Optional structured review inputs. A ``supply_chain`` block here is persisted with the case and screened on every analysis, so a case remembers which supplier/manufacturer/facility identities were checked."},"tariff_components":{"items":{"$ref":"#/components/schemas/TariffComponentInput"},"type":"array","maxItems":20,"title":"Tariff Components","description":"Caller-provided components remain unverified until resolved by an authoritative integration."},"ad_cvd_exposure":{"type":"boolean","title":"Ad Cvd Exposure","description":"Potential exposure signal only; HS alone never establishes AD/CVD applicability.","default":false},"ad_cvd_case_reference":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Ad Cvd Case Reference"},"vnaccs_declaration":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Vnaccs Declaration","description":"Optional declaration fields for deterministic VNACCS pre-filing validation."},"eu_evidence":{"type":"boolean","title":"Eu Evidence","description":"Opt-in: retrieve official EU classification evidence (EBTI precedent, CJEU case law, CN legal basis via the EU Publications Office) for the first line and attach it. Off by default so no external source is contacted unless requested. Advisory evidence only; a conflicting set may downgrade READY to REVIEW, never the reverse.","default":false}},"type":"object","required":["items"],"title":"CaseCreateRequest","description":"Case creation reuses the validated shipment-review input shape."},"CbamAssessmentRequest":{"properties":{"jurisdiction":{"type":"string","title":"Jurisdiction","description":"EU or UK"},"assessment":{"additionalProperties":true,"type":"object","title":"Assessment"},"open_information_requests":{"type":"boolean","title":"Open Information Requests","default":true}},"type":"object","required":["jurisdiction","assessment"],"title":"CbamAssessmentRequest","description":"An EU or UK CBAM assessment to persist against a case.\n\nThe ``assessment`` object is the engine output verbatim (the response body of\n``POST /api/v1/cbam/evidence`` or ``POST /api/v1/cbam/uk/readiness``), so the\npersisted revision always records exactly what VGTC computed and against which\nsource versions."},"CbamCheckResponse":{"properties":{"hs_code":{"type":"string","title":"Hs Code"},"covered":{"type":"boolean","title":"Covered"},"sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector"},"sector_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector Label"},"exclusion_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exclusion Reason"},"cn_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cn Label"},"goods_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Goods Code"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"regulation":{"type":"string","title":"Regulation","default":"Regulation (EU) 2023/956"}},"type":"object","required":["hs_code","covered"],"title":"CbamCheckResponse"},"CbamEstimateRequest":{"properties":{"items":{"items":{"$ref":"#/components/schemas/CbamItemInput"},"type":"array","maxItems":50,"minItems":1,"title":"Items","description":"Line items to estimate"},"year":{"type":"integer","maximum":2034.0,"minimum":2026.0,"title":"Year","description":"Year of import for CBAM factor","default":2026},"certificate_price_eur":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Certificate Price Eur","description":"Optional override of the EU CBAM certificate price"}},"type":"object","required":["items"],"title":"CbamEstimateRequest"},"CbamEstimateResponse":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"year":{"type":"integer","title":"Year"},"currency":{"type":"string","title":"Currency","default":"EUR"},"certificate_price_eur":{"type":"number","title":"Certificate Price Eur"},"certificate_period":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Certificate Period"},"items":{"items":{"$ref":"#/components/schemas/CbamItemResponse"},"type":"array","title":"Items"},"aggregate_status":{"type":"string","title":"Aggregate Status","default":"COMPLETE"},"total_embedded_emissions_t":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Embedded Emissions T"},"total_obligation_eur":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Obligation Eur"},"total_deduction_eur":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Deduction Eur","default":0.0},"total_net_obligation_eur":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Net Obligation Eur","default":0.0},"known_embedded_emissions_t":{"type":"number","title":"Known Embedded Emissions T","default":0.0},"known_obligation_eur":{"type":"number","title":"Known Obligation Eur","default":0.0},"known_deduction_eur":{"type":"number","title":"Known Deduction Eur","default":0.0},"known_net_obligation_eur":{"type":"number","title":"Known Net Obligation Eur","default":0.0},"coverage_flagged":{"type":"integer","title":"Coverage Flagged"},"disclaimer":{"type":"string","title":"Disclaimer"}},"type":"object","required":["year","certificate_price_eur","items","total_embedded_emissions_t","total_obligation_eur","coverage_flagged","disclaimer"],"title":"CbamEstimateResponse"},"CbamItemInput":{"properties":{"hs_code":{"type":"string","maxLength":12,"minLength":3,"title":"Hs Code","description":"CN/HS code to check"},"quantity":{"type":"number","exclusiveMinimum":0.0,"title":"Quantity","description":"Quantity in tonnes (or MWh for electricity)"},"emission_factor":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Emission Factor","description":"Optional override of the default emission factor (tCO2e/unit)"},"origin_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Origin Country","description":"Country of origin; selects the official country-specific default value from Annex I (IR (EU) 2025/2621 as corrected)."},"carbon_price_paid_eur":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Carbon Price Paid Eur","description":"Carbon price actually paid in the country of origin (€/tCO2e). Deducted from the gross obligation under Art. 9 of Regulation (EU) 2023/956 where admissible."}},"type":"object","required":["hs_code","quantity"],"title":"CbamItemInput"},"CbamItemResponse":{"properties":{"hs_code":{"type":"string","title":"Hs Code"},"quantity":{"type":"number","title":"Quantity"},"unit":{"type":"string","title":"Unit"},"covered":{"type":"boolean","title":"Covered"},"sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector"},"sector_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector Label"},"exclusion_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exclusion Reason"},"calculation_status":{"type":"string","title":"Calculation Status","default":"OK"},"required_code_length":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Required Code Length"},"candidate_cn_codes":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Candidate Cn Codes","default":[]},"emission_factor":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Emission Factor","default":0.0},"embedded_emissions_t":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Embedded Emissions T","default":0.0},"cbam_factor":{"type":"number","title":"Cbam Factor","default":0.0},"certificate_price_eur":{"type":"number","title":"Certificate Price Eur","default":0.0},"gross_obligation_eur":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Gross Obligation Eur","default":0.0},"obligation_threshold":{"additionalProperties":true,"type":"object","title":"Obligation Threshold","default":{}},"notes":{"items":{"type":"string"},"type":"array","title":"Notes","default":[]},"origin_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Origin Country"},"emission_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Emission Source"},"default_value_base":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Default Value Base"},"default_markup_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Default Markup Pct"},"default_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Country"},"default_fallback":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Default Fallback"},"default_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Description"},"default_route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Route"},"premium_tco2e":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Premium Tco2E"},"premium_eur":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Premium Eur"},"carbon_price_paid_eur":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Carbon Price Paid Eur"},"deduction_eur":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Deduction Eur"},"net_obligation_eur":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Net Obligation Eur"},"carbon_price_system":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Carbon Price System"}},"type":"object","required":["hs_code","quantity","unit","covered"],"title":"CbamItemResponse"},"CbamProjectItemResponse":{"properties":{"hs_code":{"type":"string","title":"Hs Code"},"quantity":{"type":"number","title":"Quantity"},"unit":{"type":"string","title":"Unit"},"covered":{"type":"boolean","title":"Covered"},"sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector"},"sector_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector Label"},"calculation_status":{"type":"string","title":"Calculation Status","default":"OK"},"required_code_length":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Required Code Length"},"candidate_cn_codes":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Candidate Cn Codes","default":[]},"emission_factor":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Emission Factor","default":0.0},"emission_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Emission Source"},"default_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Country"},"default_value_base":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Default Value Base"},"default_markup_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Default Markup Pct"},"default_fallback":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Default Fallback"},"default_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Description"},"carbon_price_paid_eur":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Carbon Price Paid Eur"},"deduction_eur":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Deduction Eur"},"net_obligation_eur":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Net Obligation Eur"}},"type":"object","required":["hs_code","quantity","unit","covered"],"title":"CbamProjectItemResponse"},"CbamProjectRequest":{"properties":{"items":{"items":{"$ref":"#/components/schemas/CbamItemInput"},"type":"array","maxItems":50,"minItems":1,"title":"Items","description":"Line items to project"},"certificate_price_eur":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Certificate Price Eur","description":"Optional override of the EU CBAM certificate price"}},"type":"object","required":["items"],"title":"CbamProjectRequest"},"CbamProjectResponse":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"currency":{"type":"string","title":"Currency","default":"EUR"},"certificate_price_eur":{"type":"number","title":"Certificate Price Eur"},"origin_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Origin Country"},"years":{"items":{"type":"integer"},"type":"array","title":"Years"},"items":{"items":{"$ref":"#/components/schemas/CbamProjectItemResponse"},"type":"array","title":"Items"},"total_by_year":{"items":{"$ref":"#/components/schemas/CbamProjectYearResponse"},"type":"array","title":"Total By Year"}},"type":"object","required":["certificate_price_eur","years","items","total_by_year"],"title":"CbamProjectResponse"},"CbamProjectYearResponse":{"properties":{"year":{"type":"integer","title":"Year"},"cbam_factor":{"type":"number","title":"Cbam Factor"},"aggregate_status":{"type":"string","title":"Aggregate Status","default":"COMPLETE"},"total_embedded_emissions_t":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Embedded Emissions T"},"total_obligation_eur":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Obligation Eur"},"total_deduction_eur":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Deduction Eur","default":0.0},"total_net_obligation_eur":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Net Obligation Eur","default":0.0},"known_embedded_emissions_t":{"type":"number","title":"Known Embedded Emissions T","default":0.0},"known_obligation_eur":{"type":"number","title":"Known Obligation Eur","default":0.0},"known_deduction_eur":{"type":"number","title":"Known Deduction Eur","default":0.0},"known_net_obligation_eur":{"type":"number","title":"Known Net Obligation Eur","default":0.0}},"type":"object","required":["year","cbam_factor","total_embedded_emissions_t","total_obligation_eur"],"title":"CbamProjectYearResponse"},"CbamSupplierCreateRequest":{"properties":{"supplier_name":{"type":"string","maxLength":256,"minLength":1,"title":"Supplier Name"},"supplier_email":{"type":"string","maxLength":256,"title":"Supplier Email","default":""},"line_items":{"items":{"$ref":"#/components/schemas/SupplierLineItem"},"type":"array","maxItems":50,"minItems":1,"title":"Line Items"},"notes":{"type":"string","maxLength":2000,"title":"Notes","default":""}},"type":"object","required":["supplier_name","line_items"],"title":"CbamSupplierCreateRequest"},"CbamSupplierSubmitRequest":{"properties":{"supplier_name":{"type":"string","maxLength":256,"title":"Supplier Name","default":""},"emissions":{"items":{"$ref":"#/components/schemas/SupplierEmissionInput"},"type":"array","maxItems":50,"minItems":1,"title":"Emissions"},"notes":{"type":"string","maxLength":2000,"title":"Notes","default":""}},"type":"object","required":["emissions"],"title":"CbamSupplierSubmitRequest"},"CheckoutRequest":{"properties":{"plan":{"type":"string","title":"Plan"},"email":{"type":"string","title":"Email"},"user_id":{"type":"string","title":"User Id"},"tenant_id":{"type":"string","title":"Tenant Id"},"billing_period":{"type":"string","title":"Billing Period","default":"monthly"}},"type":"object","required":["plan","email","user_id","tenant_id"],"title":"CheckoutRequest"},"CheckoutResponse":{"properties":{"checkout_url":{"type":"string","title":"Checkout Url"},"session_id":{"type":"string","title":"Session Id"}},"type":"object","required":["checkout_url","session_id"],"title":"CheckoutResponse"},"ClassifyDutySummary":{"properties":{"customs_value":{"type":"number","title":"Customs Value"},"total_duty":{"type":"number","title":"Total Duty"},"total_vat":{"type":"number","title":"Total Vat"},"shipping_cost":{"type":"number","title":"Shipping Cost"},"total_taxes_fees":{"type":"number","title":"Total Taxes Fees"},"total_landed_cost":{"type":"number","title":"Total Landed Cost"},"effective_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Effective Rate"},"calculation_complete":{"type":"boolean","title":"Calculation Complete","default":true},"calculated_items":{"type":"integer","title":"Calculated Items","default":0},"total_items":{"type":"integer","title":"Total Items","default":0},"calculated_customs_value":{"type":"number","title":"Calculated Customs Value","default":0.0}},"type":"object","required":["customs_value","total_duty","total_vat","shipping_cost","total_taxes_fees","total_landed_cost","effective_rate"],"title":"ClassifyDutySummary","description":"Summary of duties and taxes."},"ClassifyItemInput":{"properties":{"description":{"type":"string","maxLength":500,"title":"Description","description":"Item description"},"quantity":{"type":"integer","minimum":1.0,"title":"Quantity","description":"Quantity","default":1},"unit_price_usd":{"type":"number","minimum":0.0,"title":"Unit Price Usd","description":"Unit price in USD","default":0.0},"origin_country":{"type":"string","maxLength":2,"minLength":2,"title":"Origin Country","description":"ISO country code"}},"type":"object","required":["description","origin_country"],"title":"ClassifyItemInput","description":"Single item for HS code classification."},"ClassifyItemOutput":{"properties":{"description":{"type":"string","title":"Description"},"hs_code":{"type":"string","title":"Hs Code","default":""},"taric_description":{"type":"string","title":"Taric Description","default":""},"origin":{"type":"string","title":"Origin"},"customs_value":{"type":"number","title":"Customs Value"},"duty_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duty Rate"},"duty_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duty Amount"},"duty_status":{"type":"string","title":"Duty Status","default":"UNAVAILABLE"},"duty_note":{"type":"string","title":"Duty Note","default":""},"vat_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Vat Rate"},"vat_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Vat Amount"},"total_landed_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Landed Cost"},"notes":{"type":"string","title":"Notes","default":""}},"type":"object","required":["description","origin","customs_value"],"title":"ClassifyItemOutput","description":"Classification result for a single item."},"ClassifyResponse":{"properties":{"status":{"type":"string","title":"Status"},"classified_at":{"type":"string","title":"Classified At"},"destination_country":{"type":"string","title":"Destination Country"},"items":{"items":{"$ref":"#/components/schemas/ItemClassification"},"type":"array","title":"Items"},"summary":{"$ref":"#/components/schemas/DutySummary"},"sanctions_hit":{"type":"boolean","title":"Sanctions Hit","default":false},"job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Id"},"credits_charged":{"type":"integer","title":"Credits Charged","default":0}},"type":"object","required":["status","classified_at","destination_country","items","summary"],"title":"ClassifyResponse"},"ClassifyResultResponse":{"properties":{"status":{"type":"string","title":"Status"},"classified_at":{"type":"string","title":"Classified At"},"destination_country":{"type":"string","title":"Destination Country"},"items":{"items":{"$ref":"#/components/schemas/ClassifyItemOutput"},"type":"array","title":"Items"},"summary":{"$ref":"#/components/schemas/ClassifyDutySummary"}},"type":"object","required":["status","classified_at","destination_country","items","summary"],"title":"ClassifyResultResponse","description":"Response model for POST /api/v1/classify."},"ComplianceCheck":{"properties":{"check_name":{"type":"string","title":"Check Name"},"status":{"$ref":"#/components/schemas/ComplianceStatus"},"risk_level":{"$ref":"#/components/schemas/hermes__api__routers__compliance__RiskLevel"},"details":{"type":"string","title":"Details"},"recommendation":{"type":"string","title":"Recommendation"},"source":{"type":"string","title":"Source"},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["check_name","status","risk_level","details","recommendation","source","timestamp"],"title":"ComplianceCheck","description":"Individual compliance check result."},"ComplianceCheckResponse":{"properties":{"status":{"type":"string","title":"Status","default":"completed"},"item_id":{"type":"string","title":"Item Id","default":""},"review_item":{"additionalProperties":true,"type":"object","title":"Review Item"},"processing_time_ms":{"type":"number","title":"Processing Time Ms","default":0.0}},"type":"object","title":"ComplianceCheckResponse","description":"Response model for POST /api/v1/compliance/check.\n\nAttributes:\n    status: Processing status (\"completed\" or \"pending_review\").\n    item_id: Generated review item ID.\n    review_item: Full ReviewItem dict with extracted data.\n    processing_time_ms: Total pipeline processing time."},"ComplianceReport":{"properties":{"document_info":{"$ref":"#/components/schemas/DocumentInfo"},"checks":{"items":{"$ref":"#/components/schemas/ComplianceCheck"},"type":"array","title":"Checks"},"overall_status":{"$ref":"#/components/schemas/ComplianceStatus"},"overall_risk":{"$ref":"#/components/schemas/hermes__api__routers__compliance__RiskLevel"},"total_checks":{"type":"integer","title":"Total Checks"},"passed_checks":{"type":"integer","title":"Passed Checks"},"failed_checks":{"type":"integer","title":"Failed Checks"},"warnings":{"type":"integer","title":"Warnings"},"recommendations":{"items":{"type":"string"},"type":"array","title":"Recommendations"},"sanctions_hit":{"type":"boolean","title":"Sanctions Hit","default":false},"eccn":{"items":{"type":"string"},"type":"array","title":"Eccn","default":[]},"country_of_origin":{"type":"string","title":"Country Of Origin","default":""},"line_items":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Line Items","default":[]},"reconciliation":{"additionalProperties":true,"type":"object","title":"Reconciliation","default":{}},"extraction_warnings":{"items":{"type":"string"},"type":"array","title":"Extraction Warnings","default":[]},"sanctions_risk":{"type":"string","title":"Sanctions Risk","default":"clear"},"sanctions_evidence":{"additionalProperties":true,"type":"object","title":"Sanctions Evidence","default":{}},"export_control_summary":{"additionalProperties":true,"type":"object","title":"Export Control Summary","default":{}},"processing_diagnostics":{"additionalProperties":true,"type":"object","title":"Processing Diagnostics","default":{}},"processed_at":{"type":"string","title":"Processed At"},"processing_time_ms":{"type":"number","title":"Processing Time Ms"}},"type":"object","required":["document_info","checks","overall_status","overall_risk","total_checks","passed_checks","failed_checks","warnings","recommendations","processed_at","processing_time_ms"],"title":"ComplianceReport","description":"Full compliance report."},"ComplianceStatus":{"type":"string","enum":["pass","fail","warning","review","unknown"],"title":"ComplianceStatus","description":"Compliance check status."},"ConsentRequest":{"properties":{"user_id":{"type":"string","title":"User Id"},"tenant_id":{"type":"string","title":"Tenant Id"},"consent_key":{"type":"string","title":"Consent Key"},"version":{"type":"string","title":"Version"},"accepted":{"type":"boolean","title":"Accepted","default":true}},"type":"object","required":["user_id","tenant_id","consent_key","version"],"title":"ConsentRequest"},"ConsentResponse":{"properties":{"consent_key":{"type":"string","title":"Consent Key"},"version":{"type":"string","title":"Version"},"accepted":{"type":"boolean","title":"Accepted"},"label":{"type":"string","title":"Label"}},"type":"object","required":["consent_key","version","accepted","label"],"title":"ConsentResponse"},"ConsistencyOut":{"properties":{"issue_count":{"type":"integer","title":"Issue Count"},"error_count":{"type":"integer","title":"Error Count"},"issues":{"items":{"$ref":"#/components/schemas/HSConsistencyIssueOut"},"type":"array","title":"Issues"}},"type":"object","required":["issue_count","error_count","issues"],"title":"ConsistencyOut"},"CreateAPIKeyRequest":{"properties":{"name":{"type":"string","title":"Name","default":"API Key"},"sandbox":{"type":"boolean","title":"Sandbox","default":false},"expires_in_hours":{"anyOf":[{"type":"number","maximum":8760.0,"minimum":1.0},{"type":"null"}],"title":"Expires In Hours","description":"Optional hard expiry (hours). Contractors/temporary integrations."}},"type":"object","title":"CreateAPIKeyRequest","description":"Request model for creating an API key."},"CreateAPIKeyResponse":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"key_prefix":{"type":"string","title":"Key Prefix"},"plaintext_key":{"type":"string","title":"Plaintext Key"},"created_at":{"type":"string","title":"Created At"},"message":{"type":"string","title":"Message","default":"API key created successfully. This key will be shown only once."}},"type":"object","required":["id","name","key_prefix","plaintext_key","created_at"],"title":"CreateAPIKeyResponse","description":"Response model for creating an API key."},"CreateOrganizationRequest":{"properties":{"name":{"type":"string","maxLength":256,"minLength":1,"title":"Name","description":"Organization name"},"slug":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[a-z0-9-]+$","title":"Slug","description":"URL-friendly slug (lowercase, numbers, hyphens)"}},"type":"object","required":["name","slug"],"title":"CreateOrganizationRequest"},"DashboardActionRequest":{"properties":{"action":{"type":"string","enum":["approve","reject","request_info"],"title":"Action"},"actor":{"type":"string","title":"Actor","default":"system"},"hs_code":{"type":"string","title":"Hs Code","default":""},"notes":{"type":"string","title":"Notes","default":""},"override":{"type":"boolean","title":"Override","default":false},"override_reason":{"type":"string","title":"Override Reason","default":""}},"type":"object","required":["action"],"title":"DashboardActionRequest","description":"Request model for POST /api/v1/dashboard/action/{item_id}.\n\nAttributes:\n    action: Action to perform (\"approve\", \"reject\", \"request_info\").\n    actor: Actor identifier (email or system ID).\n    hs_code: Final HS code (for approve action).\n    notes: Reason or notes for the action."},"DashboardActionResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"item_id":{"type":"string","title":"Item Id"},"action":{"type":"string","title":"Action"},"new_status":{"type":"string","title":"New Status"}},"type":"object","required":["success","item_id","action","new_status"],"title":"DashboardActionResponse","description":"Response model for POST /api/v1/dashboard/action/{item_id}.\n\nAttributes:\n    success: Whether the action succeeded.\n    item_id: The review item ID.\n    action: The action performed.\n    new_status: The item's status after the action."},"DocumentInfo":{"properties":{"document_type":{"$ref":"#/components/schemas/DocumentType"},"supplier_name":{"type":"string","title":"Supplier Name"},"supplier_country":{"type":"string","title":"Supplier Country"},"buyer_name":{"type":"string","title":"Buyer Name"},"buyer_country":{"type":"string","title":"Buyer Country"},"items":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Items"},"total_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Value"},"currency":{"type":"string","title":"Currency"},"hs_codes":{"items":{"type":"string"},"type":"array","title":"Hs Codes"},"eccn":{"items":{"type":"string"},"type":"array","title":"Eccn","default":[]},"origin_countries":{"items":{"type":"string"},"type":"array","title":"Origin Countries"},"destination_country":{"type":"string","title":"Destination Country"},"country_of_origin":{"type":"string","title":"Country Of Origin","default":""},"sanctions_hit":{"type":"boolean","title":"Sanctions Hit","default":false},"Incoterms":{"type":"string","title":"Incoterms"},"incoterm_named_place":{"type":"string","title":"Incoterm Named Place","default":""},"payment_terms":{"type":"string","title":"Payment Terms"},"document_number":{"type":"string","title":"Document Number","default":""},"document_date":{"type":"string","title":"Document Date","default":""},"supplier_address":{"type":"string","title":"Supplier Address","default":""},"buyer_address":{"type":"string","title":"Buyer Address","default":""},"shipper":{"type":"string","title":"Shipper","default":""},"consignee":{"type":"string","title":"Consignee","default":""},"importer_of_record":{"type":"string","title":"Importer Of Record","default":""},"ship_to":{"type":"string","title":"Ship To","default":""},"freight_forwarder":{"type":"string","title":"Freight Forwarder","default":""},"port_of_loading":{"type":"string","title":"Port Of Loading","default":""},"port_of_discharge":{"type":"string","title":"Port Of Discharge","default":""},"bill_of_lading":{"type":"string","title":"Bill Of Lading","default":""},"subtotal":{"type":"string","title":"Subtotal","default":""},"freight":{"type":"string","title":"Freight","default":""},"insurance":{"type":"string","title":"Insurance","default":""},"taxes":{"type":"string","title":"Taxes","default":""},"other_charges":{"type":"string","title":"Other Charges","default":""},"discount":{"type":"string","title":"Discount","default":""},"declared_total":{"type":"string","title":"Declared Total","default":""},"total_packages":{"type":"string","title":"Total Packages","default":""},"gross_weight":{"type":"string","title":"Gross Weight","default":""},"net_weight":{"type":"string","title":"Net Weight","default":""},"page_count":{"type":"integer","title":"Page Count","default":0},"extraction_method":{"type":"string","title":"Extraction Method","default":""},"extraction_quality":{"type":"number","title":"Extraction Quality","default":0.0},"reconciliation_status":{"type":"string","title":"Reconciliation Status","default":""},"extraction_warnings":{"items":{"type":"string"},"type":"array","title":"Extraction Warnings","default":[]}},"type":"object","required":["document_type","supplier_name","supplier_country","buyer_name","buyer_country","items","currency","hs_codes","origin_countries","destination_country","Incoterms","payment_terms"],"title":"DocumentInfo","description":"Extracted document information."},"DocumentType":{"type":"string","enum":["invoice","bill_of_lading","packing_list","certificate_of_origin","customs_declaration","insurance_certificate","delivery_order","inspection_certificate","dangerous_goods_declaration","sea_waybill","other"],"title":"DocumentType","description":"Document types."},"DriftScanRequest":{"properties":{"tenant_id":{"type":"string","maxLength":128,"title":"Tenant Id","default":""}},"type":"object","title":"DriftScanRequest"},"DutyRiskLineInput":{"properties":{"description":{"type":"string","maxLength":500,"title":"Description","description":"Line item description"},"hs_code":{"type":"string","maxLength":12,"minLength":3,"title":"Hs Code","description":"HS code (invoice)"},"fob_value":{"type":"number","exclusiveMinimum":0.0,"title":"Fob Value","description":"Invoice (FOB) value in `currency`"},"quantity":{"type":"number","exclusiveMinimum":0.0,"title":"Quantity","description":"Quantity for per-unit taxes","default":1.0},"currency":{"type":"string","maxLength":3,"title":"Currency","description":"Invoice currency code","default":"USD"},"country_of_origin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Of Origin","description":"Country of origin — drives FTA preferential rates"},"declared_fta":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Declared Fta","description":"FTA claimed on the certificate of origin (atiga/acfta/evfta/cptpp/rcep/vjepa/vkfta)"},"additional_hs_codes":{"items":{"type":"string"},"type":"array","maxItems":5,"title":"Additional Hs Codes","description":"Other HS codes appearing on the C/O, packing list, etc."}},"type":"object","required":["description","hs_code","fob_value"],"title":"DutyRiskLineInput"},"DutyRiskPartyInput":{"properties":{"role":{"type":"string","pattern":"^(importer|exporter|consignee|carrier|buyer|seller|other)$","title":"Role","description":"Trade party role"},"name":{"type":"string","maxLength":500,"minLength":2,"title":"Name","description":"Party name"},"address":{"type":"string","maxLength":500,"title":"Address","description":"Address-of-record to screen","default":""}},"type":"object","required":["role","name"],"title":"DutyRiskPartyInput"},"DutyRiskRequest":{"properties":{"items":{"items":{"$ref":"#/components/schemas/DutyRiskLineInput"},"type":"array","maxItems":50,"minItems":1,"title":"Items","description":"Line items to check"},"parties":{"items":{"$ref":"#/components/schemas/DutyRiskPartyInput"},"type":"array","maxItems":20,"title":"Parties","description":"Parties to screen for sanctions"},"usd_vnd":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Usd Vnd","description":"Optional USD/VND override"},"temporary_vat_reduction":{"type":"boolean","title":"Temporary Vat Reduction","description":"Apply the temporary 10% -> 8% VAT reduction (Decree 15/2022 et seq.)","default":false}},"type":"object","required":["items"],"title":"DutyRiskRequest"},"DutyRiskResponse":{"properties":{"status":{"type":"string","title":"Status"},"overall_risk":{"type":"string","title":"Overall Risk"},"currency":{"type":"string","title":"Currency"},"trade_direction":{"type":"string","title":"Trade Direction"},"checked_at":{"type":"string","title":"Checked At"},"duty_savings":{"$ref":"#/components/schemas/DutySavingsOut"},"consistency":{"$ref":"#/components/schemas/ConsistencyOut"},"sanctions":{"$ref":"#/components/schemas/SanctionsOut"},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings"},"disclaimer":{"type":"string","title":"Disclaimer"},"free_tier_item_cap":{"type":"boolean","title":"Free Tier Item Cap","default":false},"upgrade_hint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Upgrade Hint"}},"type":"object","required":["status","overall_risk","currency","trade_direction","checked_at","duty_savings","consistency","sanctions","warnings","disclaimer"],"title":"DutyRiskResponse"},"DutySavingsLineOut":{"properties":{"hs_code":{"type":"string","title":"Hs Code"},"description":{"type":"string","title":"Description"},"country_of_origin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Of Origin"},"mfn_rate_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Mfn Rate Pct"},"fta_rate_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Fta Rate Pct"},"fta_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fta Key"},"fta_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fta Label"},"certificate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Certificate"},"fta_status":{"type":"string","title":"Fta Status"},"savings_vnd":{"type":"number","title":"Savings Vnd"},"savings_usd":{"type":"number","title":"Savings Usd"},"notes":{"items":{"type":"string"},"type":"array","title":"Notes"}},"type":"object","required":["hs_code","description","country_of_origin","mfn_rate_pct","fta_rate_pct","fta_key","fta_label","certificate","fta_status","savings_vnd","savings_usd","notes"],"title":"DutySavingsLineOut"},"DutySavingsOut":{"properties":{"currency":{"type":"string","title":"Currency"},"total_savings_usd":{"type":"number","title":"Total Savings Usd"},"total_savings_vnd":{"type":"number","title":"Total Savings Vnd"},"fta_eligible_lines":{"type":"integer","title":"Fta Eligible Lines"},"lines":{"items":{"$ref":"#/components/schemas/DutySavingsLineOut"},"type":"array","title":"Lines"}},"type":"object","required":["currency","total_savings_usd","total_savings_vnd","fta_eligible_lines","lines"],"title":"DutySavingsOut"},"DutySummary":{"properties":{"customs_value":{"type":"number","title":"Customs Value"},"total_duty":{"type":"number","title":"Total Duty"},"total_vat":{"type":"number","title":"Total Vat"},"shipping_cost":{"type":"number","title":"Shipping Cost"},"shipping_note":{"type":"string","title":"Shipping Note","default":""},"total_taxes_fees":{"type":"number","title":"Total Taxes Fees"},"total_landed_cost":{"type":"number","title":"Total Landed Cost"},"effective_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Effective Rate"},"calculation_complete":{"type":"boolean","title":"Calculation Complete","default":true},"calculated_items":{"type":"integer","title":"Calculated Items","default":0},"total_items":{"type":"integer","title":"Total Items","default":0},"calculated_customs_value":{"type":"number","title":"Calculated Customs Value","default":0.0}},"type":"object","required":["customs_value","total_duty","total_vat","shipping_cost","total_taxes_fees","total_landed_cost","effective_rate"],"title":"DutySummary"},"ERPTriggerResponse":{"properties":{"status":{"type":"string","title":"Status","default":"completed"},"item_id":{"type":"string","title":"Item Id","default":""},"review_item":{"additionalProperties":true,"type":"object","title":"Review Item"},"source_system":{"type":"string","title":"Source System","default":""},"source_id":{"type":"string","title":"Source Id","default":""},"mock_mode":{"type":"boolean","title":"Mock Mode","default":false},"processing_time_ms":{"type":"number","title":"Processing Time Ms","default":0.0}},"type":"object","title":"ERPTriggerResponse","description":"Response model for ERP integration triggers.\n\nAttributes:\n    status: Processing status (\"completed\" or \"pending_review\").\n    item_id: Generated review item ID.\n    review_item: Full ReviewItem dict with compliance results.\n    source_system: ERP system identifier (\"sap\" or \"odoo\").\n    source_id: Original ERP document ID.\n    mock_mode: Whether the adapter ran in mock mode.\n    processing_time_ms: Total processing time in milliseconds."},"EntityType":{"type":"string","enum":["individual","organization","vessel","aircraft","unknown"],"title":"EntityType","description":"Entity types for sanctions screening."},"EntryAuditRequest":{"properties":{"header":{"additionalProperties":true,"type":"object","title":"Header","description":"Entry header as filed: entry_number, importer_of_record, entry_date (ISO), port, liquidation_date, total_entered_value, total_duty, currency, reconciliation_flagged."},"lines":{"items":{"$ref":"#/components/schemas/EntryLineInput"},"type":"array","maxItems":500,"title":"Lines","description":"Entry summary lines as filed"},"as_of":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As Of","description":"Date used to evaluate the correction windows (ISO)"}},"type":"object","title":"EntryAuditRequest"},"EntryLineInput":{"properties":{"line_number":{"type":"integer","maximum":9999.0,"minimum":1.0,"title":"Line Number"},"hts_code":{"type":"string","maxLength":16,"title":"Hts Code","default":""},"entered_value":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Entered Value"},"duty_rate_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duty Rate Pct"},"duty_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duty Amount"},"country_of_origin":{"anyOf":[{"type":"string","maxLength":2},{"type":"null"}],"title":"Country Of Origin"},"quantity":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Quantity"},"net_weight_kg":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Net Weight Kg"},"declared_fta":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Declared Fta"},"additional_duties":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Additional Duties"}},"type":"object","required":["line_number"],"title":"EntryLineInput"},"ExpireAPIKeyRequest":{"properties":{"key_id":{"type":"string","title":"Key Id","description":"The API key to expire"},"expires_in_hours":{"type":"number","maximum":8760.0,"minimum":1.0,"title":"Expires In Hours","description":"Hours until hard expiry"}},"type":"object","required":["key_id","expires_in_hours"],"title":"ExpireAPIKeyRequest","description":"Request model for setting a hard expiry on an API key."},"ExportControlRequest":{"properties":{"description":{"type":"string","maxLength":2000,"minLength":2,"title":"Description"},"country_code":{"type":"string","maxLength":2,"title":"Country Code","default":""},"hs_code":{"type":"string","maxLength":20,"title":"Hs Code","default":""},"is_defense_article":{"type":"boolean","title":"Is Defense Article","default":false}},"type":"object","required":["description"],"title":"ExportControlRequest"},"FTACandidateRequest":{"properties":{"hs_code":{"type":"string","maxLength":12,"minLength":3,"title":"Hs Code","description":"Vietnam AHTN HS code"},"country_of_origin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Of Origin","description":"Country of origin (ISO-2/ISO-3 or name)"},"destination":{"type":"string","title":"Destination","description":"Destination country (defaults to VN / Vietnam)","default":"VN"},"shipment_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shipment Date","description":"Shipment date (YYYY-MM-DD); drives legal-effectiveness"},"effective_on":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Effective On","description":"Effective date alias for shipment_date (YYYY-MM-DD)"},"requested_fta":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requested Fta","description":"Optional specific agreement key to assess (e.g. evfta)"}},"type":"object","required":["hs_code"],"title":"FTACandidateRequest"},"GDPRRequest":{"properties":{"data_subject_id":{"type":"string","maxLength":200,"title":"Data Subject Id","default":""},"purpose":{"type":"string","maxLength":200,"title":"Purpose","default":""},"action":{"type":"string","maxLength":50,"title":"Action","description":"export|erase|rectify|consent"},"data":{"additionalProperties":true,"type":"object","title":"Data"},"text":{"type":"string","maxLength":20000,"title":"Text","default":""}},"type":"object","required":["action"],"title":"GDPRRequest"},"HSConsistencyIssueOut":{"properties":{"hs_code":{"type":"string","title":"Hs Code"},"field_a":{"type":"string","title":"Field A"},"field_b":{"type":"string","title":"Field B"},"severity":{"type":"string","title":"Severity"},"message":{"type":"string","title":"Message"}},"type":"object","required":["hs_code","field_a","field_b","severity","message"],"title":"HSConsistencyIssueOut"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HoldEvidence":{"properties":{"entity_name":{"type":"string","title":"Entity Name","default":""},"list_name":{"type":"string","title":"List Name","default":""},"match_type":{"type":"string","title":"Match Type","default":""},"confidence":{"type":"number","title":"Confidence","default":0.0},"source_record_id":{"type":"string","title":"Source Record Id","default":""},"reference":{"type":"string","title":"Reference","default":""},"official_source":{"type":"string","title":"Official Source","default":""},"list_url":{"type":"string","title":"List Url","default":""},"category":{"type":"string","title":"Category","default":""},"disposition":{"type":"string","title":"Disposition","default":""}},"type":"object","title":"HoldEvidence","description":"Evidence record attached to a compliance HOLd."},"HoldRequest":{"properties":{"query":{"type":"string","maxLength":500,"minLength":2,"title":"Query","description":"Screened name"},"entity_type":{"type":"string","title":"Entity Type","default":"unknown"},"risk_level":{"type":"string","title":"Risk Level","default":""},"screening_status":{"type":"string","title":"Screening Status","default":""},"incomplete_sources":{"items":{"type":"string"},"type":"array","title":"Incomplete Sources","default":[]},"reviewer":{"type":"string","title":"Reviewer","default":""},"notes":{"type":"string","title":"Notes","default":""},"evidence":{"items":{"$ref":"#/components/schemas/HoldEvidence"},"type":"array","title":"Evidence","default":[]}},"type":"object","required":["query"],"title":"HoldRequest","description":"Create a compliance review item (HOLD) tied to a screening result."},"HoldResponse":{"properties":{"item_id":{"type":"string","title":"Item Id"},"status":{"type":"string","title":"Status"},"query":{"type":"string","title":"Query"},"risk_level":{"type":"string","title":"Risk Level"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["item_id","status","query","risk_level","created_at"],"title":"HoldResponse","description":"Result of creating a compliance HOLD."},"InformationRequestCreate":{"properties":{"question":{"type":"string","maxLength":2000,"minLength":1,"title":"Question"},"reason":{"type":"string","maxLength":2000,"title":"Reason","default":""},"review_id":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Review Id"}},"type":"object","required":["question"],"title":"InformationRequestCreate"},"InviteRequest":{"properties":{"email":{"type":"string","title":"Email","description":"Email address to invite"},"role":{"type":"string","title":"Role","description":"Role to assign: ADMIN, COMPLIANCE_OFFICER, ANALYST, AUDITOR, VIEWER","default":"COMPLIANCE_OFFICER"}},"type":"object","required":["email"],"title":"InviteRequest"},"InviteResponse":{"properties":{"invite_id":{"type":"string","title":"Invite Id"},"email":{"type":"string","title":"Email"},"role":{"type":"string","title":"Role"},"token":{"type":"string","title":"Token"},"expires_at":{"type":"string","title":"Expires At"}},"type":"object","required":["invite_id","email","role","token","expires_at"],"title":"InviteResponse"},"ItemClassification":{"properties":{"description":{"type":"string","title":"Description"},"hs_code":{"type":"string","title":"Hs Code","default":""},"taric_description":{"type":"string","title":"Taric Description","default":""},"origin":{"type":"string","title":"Origin"},"eccn":{"type":"string","title":"Eccn","default":""},"country_of_origin":{"type":"string","title":"Country Of Origin","default":""},"sanctions_hit":{"type":"boolean","title":"Sanctions Hit","default":false},"cbam_covered":{"type":"boolean","title":"Cbam Covered","default":false},"cbam_code_list_covered":{"type":"boolean","title":"Cbam Code List Covered","default":false},"cbam_destination_applicable":{"type":"boolean","title":"Cbam Destination Applicable","default":false},"cbam_sector":{"type":"string","title":"Cbam Sector","default":""},"customs_value":{"type":"number","title":"Customs Value"},"duty_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duty Rate"},"duty_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duty Amount"},"duty_status":{"type":"string","title":"Duty Status","default":"UNAVAILABLE"},"duty_note":{"type":"string","title":"Duty Note","default":""},"vat_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Vat Rate"},"vat_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Vat Amount"},"total_landed_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Landed Cost"},"notes":{"type":"string","title":"Notes","default":""},"classification_status":{"type":"string","title":"Classification Status","default":""}},"type":"object","required":["description","origin","customs_value"],"title":"ItemClassification"},"ItemInput":{"properties":{"description":{"type":"string","maxLength":500,"title":"Description","description":"Item description"},"quantity":{"type":"integer","minimum":1.0,"title":"Quantity","description":"Quantity","default":1},"unit_price_usd":{"type":"number","minimum":0.0,"title":"Unit Price Usd","description":"Unit price in USD","default":0.0},"origin_country":{"type":"string","maxLength":2,"minLength":2,"title":"Origin Country","description":"ISO country code"}},"type":"object","required":["description","origin_country"],"title":"ItemInput"},"LandedCostBreakdown":{"properties":{"product_value":{"type":"number","title":"Product Value"},"shipping_cost":{"type":"number","title":"Shipping Cost"},"insurance_cost":{"type":"number","title":"Insurance Cost"},"broker_fee":{"type":"number","title":"Broker Fee","default":0.0},"port_charges":{"type":"number","title":"Port Charges","default":0.0},"inland_transport":{"type":"number","title":"Inland Transport","default":0.0},"handling_fee":{"type":"number","title":"Handling Fee","default":0.0},"documentation_fee":{"type":"number","title":"Documentation Fee","default":0.0},"total_ancillary":{"type":"number","title":"Total Ancillary","default":0.0},"cif_value":{"type":"number","title":"Cif Value"},"customs_value":{"type":"number","title":"Customs Value"},"duty_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duty Rate"},"duty_rate_str":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Duty Rate Str"},"duty_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duty Amount"},"ad_cvd_rate":{"type":"number","title":"Ad Cvd Rate","default":0.0},"ad_cvd_amount":{"type":"number","title":"Ad Cvd Amount","default":0.0},"section_301_rate":{"type":"number","title":"Section 301 Rate","default":0.0},"section_301_amount":{"type":"number","title":"Section 301 Amount","default":0.0},"section_232_rate":{"type":"number","title":"Section 232 Rate","default":0.0},"section_232_amount":{"type":"number","title":"Section 232 Amount","default":0.0},"tariff_warnings":{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array","title":"Tariff Warnings"},"fta_opportunity":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Fta Opportunity"},"mpf_rate":{"type":"number","title":"Mpf Rate","default":0.0},"mpf_amount":{"type":"number","title":"Mpf Amount","default":0.0},"hmf_rate":{"type":"number","title":"Hmf Rate","default":0.0},"hmf_amount":{"type":"number","title":"Hmf Amount","default":0.0},"vat_rate":{"type":"number","title":"Vat Rate"},"vat_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Vat Amount"},"total_duties":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Duties"},"total_taxes_fees":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Taxes Fees"},"total_landed_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Landed Cost"},"effective_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Effective Rate"},"duty_source":{"type":"string","title":"Duty Source"},"national_tariff_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"National Tariff Code"},"tariff_source_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tariff Source Version"},"tariff_effective_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tariff Effective Date"},"support_status":{"type":"string","title":"Support Status","default":"UNAVAILABLE"},"customs_jurisdiction":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customs Jurisdiction"},"low_value_treatment":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Low Value Treatment"},"hs_status":{"type":"string","title":"Hs Status","default":"VERIFIED"},"duty_status":{"type":"string","title":"Duty Status","default":"VERIFIED"},"hs_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hs Code"},"notes":{"type":"string","title":"Notes"},"currency":{"type":"string","title":"Currency","default":"USD"},"incoterm":{"type":"string","title":"Incoterm","default":""},"vn_detail":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Vn Detail"}},"type":"object","required":["product_value","shipping_cost","insurance_cost","cif_value","customs_value","vat_rate","duty_source","notes"],"title":"LandedCostBreakdown","description":"Landed cost breakdown response."},"LandedCostRequest":{"properties":{"product_value":{"type":"number","exclusiveMinimum":0.0,"title":"Product Value","description":"Product value in invoice currency"},"hs_code":{"type":"string","title":"Hs Code","description":"HS code for duty calculation (auto-detected if empty)","default":""},"description":{"type":"string","title":"Description","description":"Product description for auto-classification","default":""},"origin_country":{"type":"string","maxLength":3,"minLength":2,"title":"Origin Country","description":"Origin ISO country code"},"destination_country":{"type":"string","maxLength":3,"minLength":2,"title":"Destination Country","description":"Destination ISO country code"},"quantity":{"type":"integer","minimum":1.0,"title":"Quantity","description":"Quantity","default":1},"shipping_cost":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Shipping Cost","description":"International freight (invoice currency, or `amount_currencies.freight`). Omitted (null) means not paid/not known — the VN engine requires it for terms whose price excludes freight (FOB/EXW/...)."},"insurance_cost":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Insurance Cost","description":"International insurance (invoice currency, or `amount_currencies.insurance`). Send explicit 0 when none is paid; omission is treated as missing for terms whose price excludes insurance."},"broker_fee":{"type":"number","minimum":0.0,"title":"Broker Fee","description":"Customs broker fee (invoice currency)","default":0},"port_charges":{"type":"number","minimum":0.0,"title":"Port Charges","description":"Port/terminal handling charges (invoice currency)","default":0},"inland_transport":{"type":"number","minimum":0.0,"title":"Inland Transport","description":"Inland transport (last mile) (invoice currency)","default":0},"handling_fee":{"type":"number","minimum":0.0,"title":"Handling Fee","description":"Warehouse/handling fees (invoice currency)","default":0},"documentation_fee":{"type":"number","minimum":0.0,"title":"Documentation Fee","description":"Documentation/processing fees (invoice currency)","default":0},"currency":{"type":"string","title":"Currency","description":"Invoice currency (VN engine)","default":"USD"},"incoterm":{"type":"string","title":"Incoterm","description":"Incoterms 2020 term, e.g. FOB/CIF (VN engine; default FOB)","default":""},"vat_temporary_reduction":{"type":"boolean","title":"Vat Temporary Reduction","description":"Apply VN temporary VAT 8% reduction (Decree 174/2025) — off by default","default":false},"vat_excluded_goods":{"type":"boolean","title":"Vat Excluded Goods","description":"Goods excluded from the VN temporary VAT reduction (VAT Law 48/2024 art. 9(3))","default":false},"customs_fx_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Customs Fx Rate","description":"Caller-supplied invoice-currency → VND customs rate (overrides provider chain)"},"shipment_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shipment Date","description":"Shipment/declaration date (YYYY-MM-DD). Drives customs-FX freshness: today's live VCB rate is never applied to a past/future declaration."},"amount_currencies":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Amount Currencies","description":"ISO currency per amount field (e.g. {\"freight\": \"CNY\", \"broker_fee\": \"VND\"}). Amounts default to the invoice currency. Values are cross-converted via VND with full provenance in vn_detail.conversions."},"selling_commission":{"type":"number","minimum":0.0,"title":"Selling Commission","description":"Selling-commission addition (VN customs value)","default":0},"container_packing":{"type":"number","minimum":0.0,"title":"Container Packing","description":"Container/packing addition (VN customs value)","default":0},"assists_value":{"type":"number","minimum":0.0,"title":"Assists Value","description":"Free assists addition (VN customs value)","default":0},"royalties_value":{"type":"number","minimum":0.0,"title":"Royalties Value","description":"Royalties/licence addition (VN customs value)","default":0},"proceeds_to_seller":{"type":"number","minimum":0.0,"title":"Proceeds To Seller","description":"Resale-proceeds addition (VN customs value)","default":0},"buying_commission":{"type":"number","minimum":0.0,"title":"Buying Commission","description":"Buying-commission exclusion (VN customs value)","default":0},"post_import_inland_transport":{"type":"number","minimum":0.0,"title":"Post Import Inland Transport","description":"Post-import inland transport (excluded from delivered-term value)","default":0},"import_duties_and_taxes":{"type":"number","minimum":0.0,"title":"Import Duties And Taxes","description":"VN import duties/taxes embedded in a DDP price (excluded)","default":0},"construction_installation":{"type":"number","minimum":0.0,"title":"Construction Installation","description":"Post-import construction/installation (excluded)","default":0},"storage_fee":{"type":"number","minimum":0.0,"title":"Storage Fee","description":"Storage fee (post-import logistics)","default":0},"inspection_fee":{"type":"number","minimum":0.0,"title":"Inspection Fee","description":"Inspection fee (post-import logistics)","default":0},"other_logistics_fee":{"type":"number","minimum":0.0,"title":"Other Logistics Fee","description":"Other post-import logistics","default":0}},"type":"object","required":["product_value","origin_country","destination_country"],"title":"LandedCostRequest","description":"Request model for POST /api/v1/landed-cost."},"LeadCaptureRequest":{"properties":{"email":{"type":"string","maxLength":256,"title":"Email","description":"Opt-in contact email"},"source":{"type":"string","maxLength":32,"title":"Source","description":"Campaign/source tag (e.g. google, meta, cbam)","default":"web"},"page":{"type":"string","maxLength":256,"title":"Page","description":"Page or tool the lead came from","default":""},"company":{"type":"string","maxLength":256,"title":"Company","default":""},"message":{"type":"string","maxLength":2000,"title":"Message","default":""},"consent":{"type":"boolean","title":"Consent","description":"Explicit marketing opt-in","default":true}},"type":"object","required":["email"],"title":"LeadCaptureRequest"},"MCPRequest":{"properties":{"method":{"type":"string","maxLength":64,"title":"Method","description":"MCP method"},"params":{"additionalProperties":true,"type":"object","title":"Params","description":"Method parameters"},"id":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Id","description":"Request ID"}},"type":"object","required":["method"],"title":"MCPRequest"},"MatchDetail":{"properties":{"entity_name":{"type":"string","title":"Entity Name"},"entity_type":{"type":"string","title":"Entity Type"},"confidence":{"type":"number","title":"Confidence"},"match_type":{"type":"string","title":"Match Type"},"matched_name":{"type":"string","title":"Matched Name","default":""},"list_name":{"type":"string","title":"List Name"},"programs":{"items":{"type":"string"},"type":"array","title":"Programs"},"countries":{"items":{"type":"string"},"type":"array","title":"Countries"},"risk_assessment":{"type":"string","title":"Risk Assessment"},"explanation":{"type":"string","title":"Explanation"},"source":{"type":"string","title":"Source","default":""},"source_record_id":{"type":"string","title":"Source Record Id","default":""},"reference":{"type":"string","title":"Reference","default":""},"official_source":{"type":"string","title":"Official Source","default":""},"list_url":{"type":"string","title":"List Url","default":""},"category":{"type":"string","title":"Category","default":""},"disposition":{"type":"string","title":"Disposition","default":""},"designation_date":{"type":"string","title":"Designation Date","default":""}},"type":"object","required":["entity_name","entity_type","confidence","match_type","list_name","programs","countries","risk_assessment","explanation"],"title":"MatchDetail","description":"Individual match detail (includes P4 evidence/provenance fields)."},"MaterialIn":{"properties":{"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"hs_code":{"anyOf":[{"type":"string","maxLength":12},{"type":"null"}],"title":"Hs Code"},"origin_country":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Origin Country"},"value":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Value"},"currency":{"anyOf":[{"type":"string","maxLength":3},{"type":"null"}],"title":"Currency"},"originating_status":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Originating Status"},"supplier_evidence":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Supplier Evidence"}},"type":"object","title":"MaterialIn"},"MemberResponse":{"properties":{"user_id":{"type":"string","title":"User Id"},"user_email":{"type":"string","title":"User Email"},"role":{"type":"string","title":"Role"},"joined_at":{"type":"string","title":"Joined At"}},"type":"object","required":["user_id","user_email","role","joined_at"],"title":"MemberResponse"},"OdooTriggerRequest":{"properties":{"invoice_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Invoice Id","description":"Odoo invoice record ID"},"tenant_id":{"type":"string","maxLength":100,"title":"Tenant Id","description":"Tenant identifier","default":"default"}},"type":"object","required":["invoice_id"],"title":"OdooTriggerRequest","description":"Request model for POST /api/v1/integration/odoo/trigger.\n\nAttributes:\n    invoice_id: Odoo invoice record ID (account.move).\n    tenant_id: Tenant identifier for row-level isolation."},"OpenSanctionsMatch":{"properties":{"entity_name":{"type":"string","title":"Entity Name"},"entity_type":{"type":"string","title":"Entity Type"},"datasets":{"items":{"type":"string"},"type":"array","title":"Datasets"},"score":{"type":"number","title":"Score"},"features":{"additionalProperties":true,"type":"object","title":"Features"},"referents":{"items":{"type":"string"},"type":"array","title":"Referents"}},"type":"object","required":["entity_name","entity_type","datasets","score","features","referents"],"title":"OpenSanctionsMatch","description":"OpenSanctions cross-reference match."},"OrgMembersResponse":{"properties":{"organization":{"$ref":"#/components/schemas/OrganizationResponse"},"members":{"items":{"$ref":"#/components/schemas/MemberResponse"},"type":"array","title":"Members"}},"type":"object","required":["organization","members"],"title":"OrgMembersResponse"},"OrganizationResponse":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"owner_user_id":{"type":"string","title":"Owner User Id"},"member_count":{"type":"integer","title":"Member Count"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","name","slug","owner_user_id","member_count","created_at"],"title":"OrganizationResponse"},"OriginEvaluateRequest":{"properties":{"agreement":{"type":"string","maxLength":40,"minLength":1,"title":"Agreement"},"finished_product_hs":{"type":"string","maxLength":12,"minLength":4,"title":"Finished Product Hs"},"finished_product_country":{"type":"string","maxLength":80,"title":"Finished Product Country","default":"VN"},"production_country":{"type":"string","maxLength":80,"title":"Production Country","default":"VN"},"destination_country":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Destination Country"},"counterparty_country":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Counterparty Country"},"shipment_date":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Shipment Date"},"materials":{"items":{"$ref":"#/components/schemas/MaterialIn"},"type":"array","maxItems":300,"title":"Materials"},"ex_works_price":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Ex Works Price"},"fob_value":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Fob Value"},"material_cost":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Material Cost"},"manufacturing_processes":{"items":{"type":"string"},"type":"array","maxItems":200,"title":"Manufacturing Processes"},"countries_of_processing":{"items":{"type":"string"},"type":"array","maxItems":200,"title":"Countries Of Processing"},"wholly_obtained_evidence":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Wholly Obtained Evidence"},"origin_certificates":{"items":{"type":"string"},"type":"array","maxItems":50,"title":"Origin Certificates"},"supplier_declarations":{"items":{"type":"string"},"type":"array","maxItems":300,"title":"Supplier Declarations"},"transit_countries":{"items":{"type":"string"},"type":"array","maxItems":50,"title":"Transit Countries"},"transport_evidence":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Transport Evidence"}},"type":"object","required":["agreement","finished_product_hs"],"title":"OriginEvaluateRequest"},"OwnershipEdgeInput":{"properties":{"owner":{"type":"string","maxLength":500,"minLength":2,"title":"Owner"},"owned":{"type":"string","maxLength":500,"minLength":2,"title":"Owned"},"percent":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Percent"},"control":{"type":"boolean","title":"Control","default":false}},"type":"object","required":["owner","owned","percent"],"title":"OwnershipEdgeInput"},"OwnershipInput":{"properties":{"subject":{"type":"string","maxLength":500,"title":"Subject","default":""},"jurisdiction":{"type":"string","pattern":"^(US|UK|EU)$","title":"Jurisdiction","default":"US"},"edges":{"items":{"$ref":"#/components/schemas/OwnershipEdgeInput"},"type":"array","maxItems":100,"title":"Edges"},"sanctioned_owners":{"items":{"type":"string"},"type":"array","maxItems":100,"title":"Sanctioned Owners","description":"Caller-provided reference names; public inputs remain REVIEW until verified by an authoritative integration."}},"type":"object","title":"OwnershipInput"},"PIIRequest":{"properties":{"text":{"type":"string","maxLength":20000,"minLength":1,"title":"Text"}},"type":"object","required":["text"],"title":"PIIRequest"},"PartyScreenOut":{"properties":{"role":{"type":"string","title":"Role"},"name":{"type":"string","title":"Name"},"risk_level":{"type":"string","title":"Risk Level"},"status":{"type":"string","title":"Status"},"top_match":{"type":"string","title":"Top Match"},"list_name":{"type":"string","title":"List Name"},"confidence":{"type":"number","title":"Confidence"},"matches_found":{"type":"integer","title":"Matches Found"}},"type":"object","required":["role","name","risk_level","status","top_match","list_name","confidence","matches_found"],"title":"PartyScreenOut"},"PlanResponse":{"properties":{"plan":{"type":"string","title":"Plan"},"monthly_price":{"type":"number","title":"Monthly Price"},"yearly_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Yearly Price"},"credits_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Credits Limit"},"monthly_requests":{"type":"integer","title":"Monthly Requests"},"requests_per_minute":{"type":"integer","title":"Requests Per Minute"},"api_enabled":{"type":"boolean","title":"Api Enabled"},"features":{"items":{"type":"string"},"type":"array","title":"Features"}},"type":"object","required":["plan","monthly_price","monthly_requests","requests_per_minute","api_enabled","features"],"title":"PlanResponse"},"ProvideInformationRequest":{"properties":{"response":{"type":"string","maxLength":4000,"minLength":1,"title":"Response"},"expected_version":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Expected Version"}},"type":"object","required":["response"],"title":"ProvideInformationRequest"},"QueueSummaryResponse":{"properties":{"total":{"type":"integer","title":"Total","default":0},"pending":{"type":"integer","title":"Pending","default":0},"approved":{"type":"integer","title":"Approved","default":0},"rejected":{"type":"integer","title":"Rejected","default":0},"in_review":{"type":"integer","title":"In Review","default":0},"needs_info":{"type":"integer","title":"Needs Info","default":0},"overdue":{"type":"integer","title":"Overdue","default":0},"items":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Items"}},"type":"object","title":"QueueSummaryResponse","description":"Response model for GET /api/v1/dashboard/queue.\n\nAttributes:\n    total: Total items in queue.\n    pending: Items pending review.\n    approved: Approved items.\n    rejected: Rejected items.\n    in_review: Items currently being reviewed.\n    needs_info: Items awaiting information.\n    overdue: Items past deadline.\n    items: List of review item dicts (paginated)."},"RedFlagOut":{"properties":{"role":{"type":"string","title":"Role"},"name":{"type":"string","title":"Name"},"risk_level":{"type":"string","title":"Risk Level"},"entity_name":{"type":"string","title":"Entity Name"},"list_name":{"type":"string","title":"List Name"},"confidence":{"type":"number","title":"Confidence"}},"type":"object","required":["role","name","risk_level","entity_name","list_name","confidence"],"title":"RedFlagOut"},"RefundApproveRequest":{"properties":{"execution_amount_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Execution Amount Cents"},"review_note":{"type":"string","title":"Review Note","default":""}},"type":"object","title":"RefundApproveRequest"},"RefundRejectRequest":{"properties":{"review_note":{"type":"string","title":"Review Note","default":""}},"type":"object","title":"RefundRejectRequest"},"RefundRequestCreate":{"properties":{"user_id":{"type":"string","title":"User Id"},"tenant_id":{"type":"string","title":"Tenant Id"},"payment_id":{"type":"string","title":"Payment Id"},"reason":{"type":"string","title":"Reason","default":""},"idempotency_key":{"type":"string","title":"Idempotency Key","default":""}},"type":"object","required":["user_id","tenant_id","payment_id"],"title":"RefundRequestCreate"},"RefundRequestView":{"properties":{"id":{"type":"string","title":"Id"},"user_id":{"type":"string","title":"User Id"},"tenant_id":{"type":"string","title":"Tenant Id"},"payment_id":{"type":"string","title":"Payment Id"},"subscription_id":{"type":"string","title":"Subscription Id","default":""},"plan":{"type":"string","title":"Plan","default":""},"billing_period":{"type":"string","title":"Billing Period","default":""},"currency":{"type":"string","title":"Currency","default":"USD"},"paid_amount_cents":{"type":"integer","title":"Paid Amount Cents","default":0},"credits_allocated":{"type":"integer","title":"Credits Allocated","default":0},"credits_used":{"type":"integer","title":"Credits Used","default":0},"usage_ratio":{"type":"number","title":"Usage Ratio","default":0.0},"goodwill_refund_cents":{"type":"integer","title":"Goodwill Refund Cents","default":0},"refund_cap_cents":{"type":"integer","title":"Refund Cap Cents","default":0},"cap_verified":{"type":"boolean","title":"Cap Verified","default":false},"execution_amount_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Execution Amount Cents"},"reason":{"type":"string","title":"Reason","default":""},"review_note":{"type":"string","title":"Review Note","default":""},"idempotency_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency Key"},"status":{"type":"string","title":"Status","default":"pending_review"},"requested_at":{"title":"Requested At"},"reviewed_by":{"type":"string","title":"Reviewed By","default":""},"reviewed_at":{"title":"Reviewed At"},"executed_at":{"title":"Executed At"},"dodo_refund_id":{"type":"string","title":"Dodo Refund Id","default":""}},"type":"object","required":["id","user_id","tenant_id","payment_id"],"title":"RefundRequestView"},"RegenerateAPIKeyResponse":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"key_prefix":{"type":"string","title":"Key Prefix"},"plaintext_key":{"type":"string","title":"Plaintext Key"},"old_key_prefix":{"type":"string","title":"Old Key Prefix"},"message":{"type":"string","title":"Message","default":"API key regenerated. Old key has been invalidated."}},"type":"object","required":["id","name","key_prefix","plaintext_key","old_key_prefix"],"title":"RegenerateAPIKeyResponse","description":"Response model for regenerating an API key."},"RepoAnalysisRequest":{"properties":{"owner":{"type":"string","maxLength":100,"title":"Owner","description":"Repository owner"},"repo":{"type":"string","maxLength":100,"title":"Repo","description":"Repository name"}},"type":"object","required":["owner","repo"],"title":"RepoAnalysisRequest"},"ResearchRequest":{"properties":{"query":{"type":"string","maxLength":2000,"title":"Query","description":"Research query"},"description":{"type":"string","maxLength":5000,"title":"Description","description":"Additional description","default":""}},"type":"object","required":["query"],"title":"ResearchRequest"},"ResearchResponse":{"properties":{"task_id":{"type":"string","title":"Task Id"},"status":{"type":"string","title":"Status"},"title":{"type":"string","title":"Title"},"summary":{"type":"string","title":"Summary"},"findings_count":{"type":"integer","title":"Findings Count"}},"type":"object","required":["task_id","status","title","summary","findings_count"],"title":"ResearchResponse"},"ResolveInformationRequest":{"properties":{"expected_version":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Expected Version"}},"type":"object","title":"ResolveInformationRequest"},"ResolveReviewRequest":{"properties":{"expected_version":{"type":"integer","minimum":1.0,"title":"Expected Version","description":"Review version the reviewer read"},"decision":{"type":"string","maxLength":16,"minLength":1,"title":"Decision"},"structured_reason":{"anyOf":[{"type":"string","maxLength":48},{"type":"null"}],"title":"Structured Reason"},"notes":{"type":"string","maxLength":4000,"title":"Notes","default":""}},"type":"object","required":["expected_version","decision"],"title":"ResolveReviewRequest"},"RetentionRunRequest":{"properties":{"confirm":{"type":"string","title":"Confirm","description":"Required confirmation marker: 'retention-delete'"},"dry_run":{"type":"boolean","title":"Dry Run","description":"Dry-run the pass (scan only, no claims or deletions)","default":false}},"type":"object","required":["confirm"],"title":"RetentionRunRequest"},"RetentionScanRequest":{"properties":{"dry_run":{"type":"boolean","title":"Dry Run","description":"Scan-only pass (default true; never deletes)","default":true}},"type":"object","title":"RetentionScanRequest"},"RetentionStatusResponse":{"properties":{"enabled":{"type":"boolean","title":"Enabled"},"dry_run":{"type":"boolean","title":"Dry Run"},"scheduler_interval_hours":{"type":"number","title":"Scheduler Interval Hours"},"free_document_days":{"type":"integer","title":"Free Document Days"},"paid_grace_days":{"type":"integer","title":"Paid Grace Days"},"scan_limit":{"type":"integer","title":"Scan Limit"},"batch_size":{"type":"integer","title":"Batch Size"},"claim_stale_minutes":{"type":"integer","title":"Claim Stale Minutes"},"storage_purge_enabled":{"type":"boolean","title":"Storage Purge Enabled"},"running":{"type":"boolean","title":"Running"},"last_outcome":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Last Outcome"},"last_run":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Last Run"},"eligible_counts":{"additionalProperties":{"type":"integer"},"type":"object","title":"Eligible Counts"}},"type":"object","required":["enabled","dry_run","scheduler_interval_hours","free_document_days","paid_grace_days","scan_limit","batch_size","claim_stale_minutes","storage_purge_enabled","running"],"title":"RetentionStatusResponse"},"ReviewLineInput":{"properties":{"description":{"type":"string","maxLength":500,"minLength":1,"title":"Description","description":"What are you shipping?"},"hs_code":{"type":"string","maxLength":12,"title":"Hs Code","description":"Declared HS code, if known","default":""},"fob_value":{"type":"number","minimum":0.0,"title":"Fob Value","description":"Line value in `currency`","default":0.0},"quantity":{"type":"number","exclusiveMinimum":0.0,"title":"Quantity","description":"Quantity","default":1.0},"currency":{"type":"string","maxLength":3,"title":"Currency","default":"USD"},"country_of_origin":{"anyOf":[{"type":"string","maxLength":3},{"type":"null"}],"title":"Country Of Origin"},"declared_fta":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Declared Fta"},"additional_hs_codes":{"items":{"type":"string"},"type":"array","maxItems":5,"title":"Additional Hs Codes"}},"type":"object","required":["description"],"title":"ReviewLineInput","description":"Minimal product line. Declared HS is optional — VGTC can classify."},"RotateAPIKeyRequest":{"properties":{"key_id":{"type":"string","title":"Key Id","description":"The API key to rotate"},"overlap_hours":{"type":"number","maximum":168.0,"minimum":1.0,"title":"Overlap Hours","description":"Hours the OLD key stays active during rotation","default":24},"name":{"type":"string","title":"Name","default":"API Key"}},"type":"object","required":["key_id"],"title":"RotateAPIKeyRequest","description":"Request model for rotating an API key with a graceful overlap window."},"RunAgentRequest":{"properties":{"task":{"type":"string","maxLength":2000,"title":"Task","description":"Task to execute"},"strategy":{"type":"string","title":"Strategy","description":"Reasoning strategy","default":"react"}},"type":"object","required":["task"],"title":"RunAgentRequest"},"SAPTriggerRequest":{"properties":{"sales_order_id":{"type":"string","maxLength":50,"minLength":1,"title":"Sales Order Id","description":"SAP sales order number (e.g. ORD-2025-0001)"},"tenant_id":{"type":"string","maxLength":100,"title":"Tenant Id","description":"Tenant identifier","default":"default"}},"type":"object","required":["sales_order_id"],"title":"SAPTriggerRequest","description":"Request model for POST /api/v1/integration/sap/trigger.\n\nAttributes:\n    sales_order_id: SAP sales order number to process.\n    tenant_id: Tenant identifier for row-level isolation."},"SanctionsOut":{"properties":{"red_flag_count":{"type":"integer","title":"Red Flag Count"},"parties_screened":{"items":{"$ref":"#/components/schemas/PartyScreenOut"},"type":"array","title":"Parties Screened"},"red_flags":{"items":{"$ref":"#/components/schemas/RedFlagOut"},"type":"array","title":"Red Flags"}},"type":"object","required":["red_flag_count","parties_screened","red_flags"],"title":"SanctionsOut"},"ScreeningRequest":{"properties":{"name":{"type":"string","maxLength":500,"minLength":2,"title":"Name","description":"Name to screen"},"entity_type":{"$ref":"#/components/schemas/EntityType","description":"Type of entity","default":"unknown"},"country":{"anyOf":[{"type":"string","maxLength":2},{"type":"null"}],"title":"Country","description":"ISO country code"},"address":{"type":"string","maxLength":500,"title":"Address","description":"Address/address-of-record to screen (BIS/OFAC best practice)","default":""},"include_aliases":{"type":"boolean","title":"Include Aliases","description":"Include alias matching","default":true},"threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Threshold","description":"Minimum confidence threshold","default":0.5}},"type":"object","required":["name"],"title":"ScreeningRequest","description":"Request for sanctions screening."},"ScreeningResponse":{"properties":{"query":{"type":"string","title":"Query"},"risk_level":{"$ref":"#/components/schemas/hermes__api__routers__screening__RiskLevel"},"confidence":{"type":"number","title":"Confidence"},"matches":{"items":{"$ref":"#/components/schemas/MatchDetail"},"type":"array","title":"Matches"},"opensanctions_matches":{"items":{"$ref":"#/components/schemas/OpenSanctionsMatch"},"type":"array","title":"Opensanctions Matches"},"verification_links":{"items":{"$ref":"#/components/schemas/VerificationLink"},"type":"array","title":"Verification Links"},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings"},"screened_at":{"type":"string","title":"Screened At"},"dataset_version":{"type":"string","title":"Dataset Version","default":""},"dataset_loaded_at":{"type":"number","title":"Dataset Loaded At","default":0.0},"processing_time_ms":{"type":"number","title":"Processing Time Ms"},"data_sources":{"items":{"type":"string"},"type":"array","title":"Data Sources"},"methodology":{"type":"string","title":"Methodology"},"screening_status":{"type":"string","title":"Screening Status","default":"COMPLETE"},"incomplete_sources":{"items":{"type":"string"},"type":"array","title":"Incomplete Sources","default":[]},"source_freshness":{"additionalProperties":{"type":"string"},"type":"object","title":"Source Freshness","default":{}},"engine_version":{"type":"string","title":"Engine Version","default":""}},"type":"object","required":["query","risk_level","confidence","matches","opensanctions_matches","verification_links","warnings","screened_at","processing_time_ms","data_sources","methodology"],"title":"ScreeningResponse","description":"Response for sanctions screening."},"SecurityResponse":{"properties":{"task_id":{"type":"string","title":"Task Id"},"status":{"type":"string","title":"Status"},"title":{"type":"string","title":"Title"},"summary":{"type":"string","title":"Summary"},"findings_count":{"type":"integer","title":"Findings Count"}},"type":"object","required":["task_id","status","title","summary","findings_count"],"title":"SecurityResponse"},"SecurityScanRequest":{"properties":{"path":{"type":"string","maxLength":500,"title":"Path","description":"File or directory path to scan"}},"type":"object","required":["path"],"title":"SecurityScanRequest"},"ShipmentLineInput":{"properties":{"description":{"type":"string","maxLength":500,"title":"Description","description":"Line item description"},"hs_code":{"type":"string","maxLength":12,"minLength":3,"title":"Hs Code","description":"HS code (invoice)"},"fob_value":{"type":"number","exclusiveMinimum":0.0,"title":"Fob Value","description":"Invoice (FOB) value in `currency`"},"quantity":{"type":"number","exclusiveMinimum":0.0,"title":"Quantity","description":"Quantity for per-unit taxes","default":1.0},"currency":{"type":"string","maxLength":3,"title":"Currency","description":"Invoice currency code","default":"USD"},"country_of_origin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Of Origin","description":"Country of origin — drives FTA preferential rates"},"declared_fta":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Declared Fta","description":"FTA claimed on the certificate of origin (atiga/acfta/evfta/cptpp/rcep/vjepa/vkfta)"},"additional_hs_codes":{"items":{"type":"string"},"type":"array","maxItems":5,"title":"Additional Hs Codes","description":"Other HS codes appearing on the C/O, packing list, etc."}},"type":"object","required":["description","hs_code","fob_value"],"title":"ShipmentLineInput"},"ShipmentPartyInput":{"properties":{"role":{"type":"string","pattern":"^(importer|exporter|consignee|carrier|buyer|seller|other)$","title":"Role","description":"Trade party role"},"name":{"type":"string","maxLength":500,"minLength":2,"title":"Name","description":"Party name"},"address":{"type":"string","maxLength":500,"title":"Address","description":"Address-of-record to screen","default":""}},"type":"object","required":["role","name"],"title":"ShipmentPartyInput"},"ShipmentReviewRequest":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ReviewLineInput"},"type":"array","maxItems":50,"minItems":1,"title":"Items","description":"Line items to check"},"destination_country":{"type":"string","maxLength":3,"minLength":2,"title":"Destination Country","description":"Ship-to country (ISO-2)","default":"US"},"origin_country":{"anyOf":[{"type":"string","maxLength":3},{"type":"null"}],"title":"Origin Country","description":"Ship-from country (ISO-2)"},"transport_mode":{"type":"string","title":"Transport Mode","description":"vessel | air | truck | rail — drives ISF requirements","default":"air"},"incoterm":{"type":"string","maxLength":6,"title":"Incoterm","description":"Incoterm for VN flows","default":"FOB"},"parties":{"items":{"$ref":"#/components/schemas/ShipmentPartyInput"},"type":"array","maxItems":20,"title":"Parties","description":"Parties to screen for sanctions"},"usd_vnd":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Usd Vnd","description":"Optional USD/VND override"},"temporary_vat_reduction":{"type":"boolean","title":"Temporary Vat Reduction","description":"Apply the temporary 10% -> 8% VAT reduction (Decree 15/2022 et seq.)","default":false},"shipment_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shipment Date","description":"Shipment date (YYYY-MM-DD) for staged rates"},"vn_tax_id":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Vn Tax Id","description":"Declarant tax ID (VNACCS declarations)"},"isf_confirmed":{"type":"boolean","title":"Isf Confirmed","description":"ISF 10+2 broker filing confirmed (required to clear US ocean imports)","default":false},"fta_agreement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fta Agreement","description":"Agreement-level FTA claim applied to lines without declared_fta"},"currency":{"type":"string","maxLength":3,"title":"Currency","description":"Shipment-level currency","default":"USD"},"shipment_reference":{"type":"string","maxLength":120,"title":"Shipment Reference","description":"Caller reference","default":""},"notes":{"type":"string","maxLength":2000,"title":"Notes","description":"Optional free-text notes","default":""},"ownership":{"anyOf":[{"$ref":"#/components/schemas/OwnershipInput"},{"type":"null"}],"description":"Optional ownership graph. Omission produces OWNERSHIP_UNKNOWN, never CLEAR."},"supply_chain":{"anyOf":[{"$ref":"#/components/schemas/SupplyChainInput"},{"type":"null"}],"description":"Optional supplier/manufacturer/facility identities for forced-labour screening."},"uflpa_dossier":{"additionalProperties":{"type":"string"},"type":"object","title":"Uflpa Dossier","description":"Optional UFLPA evidence-item statuses (AVAILABLE/MISSING/UNKNOWN/NOT_APPLICABLE), keyed by the field names the UFLPA screen returns."},"p1_inputs":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"P1 Inputs","description":"Optional structured review inputs. A ``supply_chain`` block here is persisted with the case and screened on every analysis, so a case remembers which supplier/manufacturer/facility identities were checked."},"tariff_components":{"items":{"$ref":"#/components/schemas/TariffComponentInput"},"type":"array","maxItems":20,"title":"Tariff Components","description":"Caller-provided components remain unverified until resolved by an authoritative integration."},"ad_cvd_exposure":{"type":"boolean","title":"Ad Cvd Exposure","description":"Potential exposure signal only; HS alone never establishes AD/CVD applicability.","default":false},"ad_cvd_case_reference":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Ad Cvd Case Reference"},"vnaccs_declaration":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Vnaccs Declaration","description":"Optional declaration fields for deterministic VNACCS pre-filing validation."},"eu_evidence":{"type":"boolean","title":"Eu Evidence","description":"Opt-in: retrieve official EU classification evidence (EBTI precedent, CJEU case law, CN legal basis via the EU Publications Office) for the first line and attach it. Off by default so no external source is contacted unless requested. Advisory evidence only; a conflicting set may downgrade READY to REVIEW, never the reverse.","default":false}},"type":"object","required":["items"],"title":"ShipmentReviewRequest","description":"Extends the canonical verdict request with review-only metadata.\n\nDeclared HS is optional per line (the review can classify), and parties are\noptional (only screen what the caller supplies)."},"ShipmentVerdictRequest":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ShipmentLineInput"},"type":"array","maxItems":50,"minItems":1,"title":"Items","description":"Line items to check"},"destination_country":{"type":"string","maxLength":3,"minLength":2,"title":"Destination Country","description":"Ship-to country (ISO-2)","default":"US"},"origin_country":{"anyOf":[{"type":"string","maxLength":3},{"type":"null"}],"title":"Origin Country","description":"Ship-from country (ISO-2)"},"transport_mode":{"type":"string","title":"Transport Mode","description":"vessel | air | truck | rail — drives ISF requirements","default":"air"},"incoterm":{"type":"string","maxLength":6,"title":"Incoterm","description":"Incoterm for VN flows","default":"FOB"},"parties":{"items":{"$ref":"#/components/schemas/ShipmentPartyInput"},"type":"array","maxItems":20,"title":"Parties","description":"Parties to screen for sanctions"},"usd_vnd":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Usd Vnd","description":"Optional USD/VND override"},"temporary_vat_reduction":{"type":"boolean","title":"Temporary Vat Reduction","description":"Apply the temporary 10% -> 8% VAT reduction (Decree 15/2022 et seq.)","default":false},"shipment_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shipment Date","description":"Shipment date (YYYY-MM-DD) for staged rates"},"vn_tax_id":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Vn Tax Id","description":"Declarant tax ID (VNACCS declarations)"},"isf_confirmed":{"type":"boolean","title":"Isf Confirmed","description":"ISF 10+2 broker filing confirmed (required to clear US ocean imports)","default":false},"fta_agreement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fta Agreement","description":"Agreement-level FTA claim applied to lines without declared_fta"}},"type":"object","required":["items"],"title":"ShipmentVerdictRequest"},"ShipmentVerdictResponse":{"properties":{"status":{"type":"string","title":"Status"},"verdict":{"type":"string","title":"Verdict"},"direction":{"type":"string","title":"Direction"},"destination_country":{"type":"string","title":"Destination Country"},"origin_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Origin Country"},"lines_checked":{"type":"integer","title":"Lines Checked"},"checked_at":{"type":"string","title":"Checked At"},"processing_time_ms":{"type":"number","title":"Processing Time Ms"},"subchecks":{"items":{"$ref":"#/components/schemas/SubCheckOut"},"type":"array","title":"Subchecks"},"blocks":{"items":{"$ref":"#/components/schemas/SubCheckOut"},"type":"array","title":"Blocks"},"reviews":{"items":{"$ref":"#/components/schemas/SubCheckOut"},"type":"array","title":"Reviews"},"warning_count":{"type":"integer","title":"Warning Count"},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings"},"system_warning_count":{"type":"integer","title":"System Warning Count"},"system_warnings":{"items":{"type":"string"},"type":"array","title":"System Warnings"},"warning_severity_finding_count":{"type":"integer","title":"Warning Severity Finding Count"},"warning_severity_findings":{"items":{"$ref":"#/components/schemas/SubCheckOut"},"type":"array","title":"Warning Severity Findings"},"disclaimer":{"type":"string","title":"Disclaimer"},"free_tier_item_cap":{"type":"boolean","title":"Free Tier Item Cap","default":false},"upgrade_hint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Upgrade Hint"}},"type":"object","required":["status","verdict","direction","destination_country","origin_country","lines_checked","checked_at","processing_time_ms","subchecks","blocks","reviews","warning_count","warnings","system_warning_count","system_warnings","warning_severity_finding_count","warning_severity_findings","disclaimer"],"title":"ShipmentVerdictResponse"},"SubCheckOut":{"properties":{"check":{"type":"string","title":"Check"},"label":{"type":"string","title":"Label"},"jurisdiction":{"type":"string","title":"Jurisdiction"},"status":{"type":"string","title":"Status"},"severity":{"type":"string","title":"Severity"},"required":{"type":"boolean","title":"Required"},"evidence":{"additionalProperties":true,"type":"object","title":"Evidence"},"notes":{"items":{"type":"string"},"type":"array","title":"Notes"}},"type":"object","required":["check","label","jurisdiction","status","severity","required","evidence","notes"],"title":"SubCheckOut"},"SubscribeRequest":{"properties":{"email":{"type":"string","maxLength":320,"minLength":6,"title":"Email"},"source":{"type":"string","maxLength":32,"title":"Source","default":"insights"}},"type":"object","required":["email"],"title":"SubscribeRequest"},"SubscriptionActionRequest":{"properties":{"user_id":{"type":"string","title":"User Id"},"tenant_id":{"type":"string","title":"Tenant Id"},"dodo_subscription_id":{"type":"string","title":"Dodo Subscription Id"}},"type":"object","required":["user_id","tenant_id","dodo_subscription_id"],"title":"SubscriptionActionRequest"},"SupplierEmissionInput":{"properties":{"cn_code":{"type":"string","maxLength":12,"minLength":3,"title":"Cn Code"},"actual_tco2e_per_unit":{"type":"number","minimum":0.0,"title":"Actual Tco2E Per Unit","description":"Actual/verified tCO2e per tonne (or MWh)"},"evidence_note":{"type":"string","maxLength":2000,"title":"Evidence Note","description":"Evidence reference (e.g. EPD, PCR, laboratory report)","default":""}},"type":"object","required":["cn_code","actual_tco2e_per_unit"],"title":"SupplierEmissionInput"},"SupplierLineItem":{"properties":{"cn_code":{"type":"string","maxLength":12,"minLength":3,"title":"Cn Code","description":"CN/HS code to request actuals for"},"quantity":{"type":"number","exclusiveMinimum":0.0,"title":"Quantity","description":"Imported quantity (tonnes or MWh)"},"description":{"type":"string","maxLength":200,"title":"Description","description":"Optional line description","default":""}},"type":"object","required":["cn_code","quantity"],"title":"SupplierLineItem"},"SupplyChainInput":{"properties":{"supplier":{"type":"string","maxLength":500,"title":"Supplier","default":""},"manufacturer":{"type":"string","maxLength":500,"title":"Manufacturer","default":""},"facility":{"type":"string","maxLength":500,"title":"Facility","default":""},"producer":{"type":"string","maxLength":500,"title":"Producer","default":""},"upstream_supplier":{"type":"string","maxLength":500,"title":"Upstream Supplier","default":""}},"type":"object","title":"SupplyChainInput"},"TariffComponentInput":{"properties":{"kind":{"type":"string","pattern":"^(BASE_DUTY|SECTION_301|SECTION_232|CHAPTER_99|AD_CVD|PREFERENCE|OTHER)$","title":"Kind"},"status":{"type":"string","pattern":"^(VERIFIED|UNVERIFIED|NOT_APPLICABLE|UNAVAILABLE)$","title":"Status","default":"UNVERIFIED"},"rate_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rate Pct"},"source":{"type":"string","maxLength":1000,"title":"Source","default":""},"effective_from":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Effective From"},"reason":{"type":"string","maxLength":1000,"title":"Reason","default":""},"missing_information":{"type":"string","maxLength":1000,"title":"Missing Information","default":""}},"type":"object","required":["kind"],"title":"TariffComponentInput"},"TaskStatusResponse":{"properties":{"task_id":{"type":"string","title":"Task Id"},"status":{"type":"string","title":"Status"},"result":{"title":"Result"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["task_id","status"],"title":"TaskStatusResponse"},"TextComplianceRequest":{"properties":{"text":{"type":"string","maxLength":50000,"minLength":10,"title":"Text","description":"Raw invoice/document text"},"destination_country":{"type":"string","maxLength":2,"minLength":2,"title":"Destination Country","description":"Destination ISO code"},"supplier_name":{"type":"string","maxLength":500,"title":"Supplier Name","default":""},"buyer_name":{"type":"string","maxLength":500,"title":"Buyer Name","default":""}},"type":"object","required":["text","destination_country"],"title":"TextComplianceRequest","description":"Request body for text-based compliance checking."},"UBOScreenRequest":{"properties":{"primary_entity":{"type":"string","maxLength":500,"title":"Primary Entity","description":"Invoice consignee / direct entity"},"parent_entity":{"type":"string","maxLength":500,"title":"Parent Entity","description":"Parent / UBO entity (from invoice)","default":""},"denied_parties":{"items":{"type":"string"},"type":"array","maxItems":50,"title":"Denied Parties"},"pep_list":{"items":{"type":"string"},"type":"array","maxItems":50,"title":"Pep List"}},"type":"object","required":["primary_entity"],"title":"UBOScreenRequest"},"UKCBAMReadinessRequest":{"properties":{"importer_name":{"type":"string","maxLength":200,"title":"Importer Name","default":""},"declaration_in_own_name":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Declaration In Own Name"},"eori":{"type":"string","maxLength":32,"title":"Eori","default":""},"vat_number":{"type":"string","maxLength":32,"title":"Vat Number","default":""},"imports":{"items":{"$ref":"#/components/schemas/UKImportInput"},"type":"array","maxItems":2000,"title":"Imports"},"emissions_basis":{"type":"string","maxLength":16,"title":"Emissions Basis","default":""},"emissions_intensity_tco2e_per_unit":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Emissions Intensity Tco2E Per Unit"},"functional_unit":{"type":"string","maxLength":48,"title":"Functional Unit","default":""},"monitoring_period":{"type":"string","maxLength":32,"title":"Monitoring Period","default":""},"emissions_reporting_option":{"type":"string","maxLength":8,"title":"Emissions Reporting Option","default":""},"installation_identity":{"type":"string","maxLength":200,"title":"Installation Identity","default":""},"installation_operator":{"type":"string","maxLength":200,"title":"Installation Operator","default":""},"verification_report_reference":{"type":"string","maxLength":120,"title":"Verification Report Reference","default":""},"verifier_identity":{"type":"string","maxLength":200,"title":"Verifier Identity","default":""},"verifier_accreditation_reference":{"type":"string","maxLength":120,"title":"Verifier Accreditation Reference","default":""},"scheme_name":{"type":"string","maxLength":200,"title":"Scheme Name","default":""},"scheme_jurisdiction":{"type":"string","maxLength":2,"title":"Scheme Jurisdiction","default":""},"carbon_price_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Carbon Price Amount"},"carbon_price_currency":{"type":"string","maxLength":3,"title":"Carbon Price Currency","default":""},"carbon_pricing_form_reference":{"type":"string","maxLength":120,"title":"Carbon Pricing Form Reference","default":""},"cbam_rate_gbp_per_tco2e":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cbam Rate Gbp Per Tco2E"},"cbam_rate_published":{"type":"boolean","title":"Cbam Rate Published","default":false},"cbam_rate_period":{"type":"string","maxLength":16,"title":"Cbam Rate Period","default":""},"default_value_tco2e":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Default Value Tco2E"},"default_value_published":{"type":"boolean","title":"Default Value Published","default":false},"default_value_period":{"type":"string","maxLength":32,"title":"Default Value Period","default":""},"evidence":{"additionalProperties":{"type":"string"},"type":"object","title":"Evidence","description":"evidence item -> state (MISSING|REQUESTED|RECEIVED|UNDER_REVIEW|VERIFIED|REJECTED|EXPIRED|NOT_APPLICABLE). RECEIVED is never treated as VERIFIED."},"as_of":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"As Of"}},"type":"object","title":"UKCBAMReadinessRequest"},"UKImportInput":{"properties":{"import_date":{"type":"string","maxLength":32,"title":"Import Date","default":""},"commodity_code":{"type":"string","maxLength":16,"title":"Commodity Code","default":""},"value_gbp":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value Gbp"},"weight_kg":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Weight Kg"},"country_of_origin":{"type":"string","maxLength":2,"title":"Country Of Origin","default":""},"passed_tax_point":{"type":"boolean","title":"Passed Tax Point","default":true},"excluded_reason":{"type":"string","maxLength":120,"title":"Excluded Reason","default":""},"expected_future":{"type":"boolean","title":"Expected Future","default":false}},"type":"object","title":"UKImportInput"},"USDutyStackRequest":{"properties":{"hts_code":{"type":"string","maxLength":12,"title":"Hts Code","description":"HTS / HS code (HS6 or national line)"},"origin_country":{"type":"string","maxLength":3,"title":"Origin Country","description":"ISO-2 country of origin"},"entry_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entry Date","description":"ISO date of entry (default: current state)"},"value_usd":{"type":"number","minimum":0.0,"title":"Value Usd","default":0.0},"declared_fta":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Declared Fta"}},"type":"object","required":["hts_code","origin_country"],"title":"USDutyStackRequest","description":"Standalone US stacked-duty composition input."},"UflpaDossierInput":{"properties":{"evidence":{"additionalProperties":true,"type":"object","title":"Evidence","description":"field -> state, where state is AVAILABLE | MISSING | UNKNOWN | NOT_APPLICABLE. Field keys are the ones returned by this endpoint under dossier.evidence."},"references":{"additionalProperties":true,"type":"object","title":"References","description":"field -> a business-record reference (invoice/PO number, file id)"}},"type":"object","title":"UflpaDossierInput"},"UflpaParty":{"properties":{"role":{"type":"string","title":"Role","description":"supply-chain role: supplier | manufacturer | producer | exporter | facility | upstream_supplier"},"name":{"type":"string","title":"Name","description":"the party's legal or trading name as recorded"}},"type":"object","required":["role","name"],"title":"UflpaParty"},"UflpaScreenRequest":{"properties":{"parties":{"items":{"$ref":"#/components/schemas/UflpaParty"},"type":"array","title":"Parties","description":"the parties whose names should be screened"},"dossier":{"anyOf":[{"$ref":"#/components/schemas/UflpaDossierInput"},{"type":"null"}],"description":"the evidence the caller holds; omitted means none recorded"}},"type":"object","title":"UflpaScreenRequest"},"UkCbamCheckResponse":{"properties":{"hs_code":{"type":"string","title":"Hs Code"},"covered":{"type":"boolean","title":"Covered"},"sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector"},"sector_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector Label"},"exclusion_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exclusion Reason"},"cn_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cn Label"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"regulation":{"type":"string","title":"Regulation","default":"Finance Act 2026, Part 5 (UK CBAM)"}},"type":"object","required":["hs_code","covered"],"title":"UkCbamCheckResponse"},"UkCbamEstimateRequest":{"properties":{"items":{"items":{"$ref":"#/components/schemas/UkCbamItemInput"},"type":"array","maxItems":50,"minItems":1,"title":"Items","description":"Line items to assess"},"year":{"type":"integer","maximum":2035.0,"minimum":2027.0,"title":"Year","description":"Year of import for the UK CBAM factor (free-allowance phase-out)","default":2027},"sectoral_carbon_price_gbp":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Sectoral Carbon Price Gbp","description":"Reserved for compatibility; no monetary estimate is produced until the official UK CBAM rate is published."}},"type":"object","required":["items"],"title":"UkCbamEstimateRequest"},"UkCbamEstimateResponse":{"properties":{"status":{"type":"string","title":"Status","default":"MONETARY_ESTIMATE_UNAVAILABLE"},"year":{"type":"integer","title":"Year"},"currency":{"type":"string","title":"Currency","default":"GBP"},"sectoral_carbon_price_gbp":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Sectoral Carbon Price Gbp"},"items":{"items":{"$ref":"#/components/schemas/UkCbamItemResponse"},"type":"array","title":"Items"},"total_embedded_emissions_t":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Embedded Emissions T"},"total_charge_gbp":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Charge Gbp"},"total_relief_gbp":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Relief Gbp"},"total_net_charge_gbp":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Net Charge Gbp"},"coverage_flagged":{"type":"integer","title":"Coverage Flagged"},"registration_required":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Registration Required"},"monetary_estimate_status":{"type":"string","title":"Monetary Estimate Status","default":"MONETARY_ESTIMATE_UNAVAILABLE"},"official_rate_published":{"type":"boolean","title":"Official Rate Published","default":false},"disclaimer":{"type":"string","title":"Disclaimer"}},"type":"object","required":["year","items","coverage_flagged","disclaimer"],"title":"UkCbamEstimateResponse"},"UkCbamItemInput":{"properties":{"hs_code":{"type":"string","maxLength":12,"minLength":3,"title":"Hs Code","description":"CN/HS code to check"},"quantity":{"type":"number","exclusiveMinimum":0.0,"title":"Quantity","description":"Quantity in tonnes"},"emission_factor":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Emission Factor","description":"Optional caller-supplied verified emission factor (tCO2e/tonne)"},"value_gbp":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Value Gbp","description":"Value of the imported goods in GBP — drives the £50,000 registration-threshold flag."},"carbon_price_paid_gbp":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Carbon Price Paid Gbp","description":"Reserved for compatibility; relief cannot be calculated until the official UK CBAM rate is published."}},"type":"object","required":["hs_code","quantity"],"title":"UkCbamItemInput"},"UkCbamItemResponse":{"properties":{"hs_code":{"type":"string","title":"Hs Code"},"quantity":{"type":"number","title":"Quantity"},"unit":{"type":"string","title":"Unit"},"covered":{"type":"boolean","title":"Covered"},"sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector"},"sector_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector Label"},"exclusion_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exclusion Reason"},"emission_factor":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Emission Factor"},"embedded_emissions_t":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Embedded Emissions T"},"cbam_factor":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cbam Factor"},"sectoral_carbon_price_gbp":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Sectoral Carbon Price Gbp"},"gross_charge_gbp":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Gross Charge Gbp"},"carbon_price_relief_gbp":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Carbon Price Relief Gbp"},"net_charge_gbp":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Net Charge Gbp"},"registration_required":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Registration Required"},"registration_threshold_gbp":{"type":"number","title":"Registration Threshold Gbp","default":0.0},"notes":{"items":{"type":"string"},"type":"array","title":"Notes","default":[]}},"type":"object","required":["hs_code","quantity","unit","covered"],"title":"UkCbamItemResponse"},"UkCbamProjectRequest":{"properties":{"items":{"items":{"$ref":"#/components/schemas/UkCbamItemInput"},"type":"array","maxItems":50,"minItems":1,"title":"Items","description":"Line items to project"},"sectoral_carbon_price_gbp":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Sectoral Carbon Price Gbp","description":"Reserved for compatibility; no monetary projection is produced until the official UK CBAM rate is published."}},"type":"object","required":["items"],"title":"UkCbamProjectRequest"},"UkCbamProjectResponse":{"properties":{"status":{"type":"string","title":"Status","default":"MONETARY_ESTIMATE_UNAVAILABLE"},"currency":{"type":"string","title":"Currency","default":"GBP"},"sectoral_carbon_price_gbp":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Sectoral Carbon Price Gbp"},"years":{"items":{"type":"integer"},"type":"array","title":"Years"},"items":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Items"},"total_by_year":{"items":{"$ref":"#/components/schemas/UkCbamProjectYearResponse"},"type":"array","title":"Total By Year"},"monetary_estimate_status":{"type":"string","title":"Monetary Estimate Status","default":"MONETARY_ESTIMATE_UNAVAILABLE"},"official_rate_published":{"type":"boolean","title":"Official Rate Published","default":false}},"type":"object","required":["years","items","total_by_year"],"title":"UkCbamProjectResponse"},"UkCbamProjectYearResponse":{"properties":{"year":{"type":"integer","title":"Year"},"cbam_factor":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cbam Factor"},"total_embedded_emissions_t":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Embedded Emissions T"},"total_charge_gbp":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Charge Gbp"},"total_relief_gbp":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Relief Gbp"},"total_net_charge_gbp":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Net Charge Gbp"}},"type":"object","required":["year"],"title":"UkCbamProjectYearResponse"},"UnsubscribeRequest":{"properties":{"token":{"type":"string","maxLength":128,"minLength":16,"title":"Token"}},"type":"object","required":["token"],"title":"UnsubscribeRequest"},"UpdateRoleRequest":{"properties":{"role":{"type":"string","title":"Role","description":"New role: ADMIN, COMPLIANCE_OFFICER, ANALYST, AUDITOR, VIEWER"}},"type":"object","required":["role"],"title":"UpdateRoleRequest"},"UpgradeRequest":{"properties":{"user_id":{"type":"string","title":"User Id"},"tenant_id":{"type":"string","title":"Tenant Id"},"dodo_subscription_id":{"type":"string","title":"Dodo Subscription Id"},"new_plan":{"type":"string","title":"New Plan"}},"type":"object","required":["user_id","tenant_id","dodo_subscription_id","new_plan"],"title":"UpgradeRequest"},"UsageResponse":{"properties":{"plan":{"type":"string","title":"Plan"},"monthly_limit":{"type":"integer","title":"Monthly Limit"},"used":{"type":"integer","title":"Used"},"remaining":{"type":"integer","title":"Remaining"},"percentage_used":{"type":"number","title":"Percentage Used"}},"type":"object","required":["plan","monthly_limit","used","remaining","percentage_used"],"title":"UsageResponse"},"UsageSummary":{"properties":{"requests_used":{"type":"integer","title":"Requests Used"},"requests_remaining":{"type":"integer","title":"Requests Remaining"},"plan_monthly_limit":{"type":"integer","title":"Plan Monthly Limit"},"plan":{"type":"string","title":"Plan"},"api_enabled":{"type":"boolean","title":"Api Enabled"},"rate_limit_rpm":{"type":"integer","title":"Rate Limit Rpm"}},"type":"object","required":["requests_used","requests_remaining","plan_monthly_limit","plan","api_enabled","rate_limit_rpm"],"title":"UsageSummary","description":"API usage summary."},"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"},"ValuationRequest":{"properties":{"price_paid_or_payable":{"type":"number","title":"Price Paid Or Payable","description":"Transaction price (USD)"},"currency":{"type":"string","maxLength":3,"title":"Currency","default":"USD"},"selling_commissions":{"type":"number","title":"Selling Commissions","default":0.0},"assists_total":{"type":"number","title":"Assists Total","default":0.0},"royalties_total":{"type":"number","title":"Royalties Total","default":0.0},"proceeds_to_seller":{"type":"number","title":"Proceeds To Seller","default":0.0},"buying_commissions":{"type":"number","title":"Buying Commissions","default":0.0},"international_freight":{"type":"number","title":"International Freight","default":0.0},"international_insurance":{"type":"number","title":"International Insurance","default":0.0},"import_duties":{"type":"number","title":"Import Duties","default":0.0},"inland_freight_in_us":{"type":"number","title":"Inland Freight In Us","default":0.0},"related_parties":{"type":"boolean","title":"Related Parties","default":false},"relationship_type":{"type":"string","maxLength":50,"title":"Relationship Type","default":""},"country_of_origin":{"type":"string","maxLength":2,"title":"Country Of Origin","default":""},"product_description":{"type":"string","maxLength":1000,"title":"Product Description","default":""},"hs_code":{"type":"string","maxLength":20,"title":"Hs Code","default":""}},"type":"object","required":["price_paid_or_payable"],"title":"ValuationRequest"},"VerificationLink":{"properties":{"portal":{"type":"string","title":"Portal"},"url":{"type":"string","title":"Url"},"description":{"type":"string","title":"Description"},"lists_covered":{"items":{"type":"string"},"type":"array","title":"Lists Covered"}},"type":"object","required":["portal","url","description","lists_covered"],"title":"VerificationLink","description":"Government verification link."},"VnaccsDutyCheckResponse":{"properties":{"hs_code":{"type":"string","title":"Hs Code"},"matched_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Matched Key"},"is_specific":{"type":"boolean","title":"Is Specific","default":false},"description":{"type":"string","title":"Description","default":""},"mfn_rate_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Mfn Rate Pct"},"vat_rate_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Vat Rate Pct"},"sct_rate_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Sct Rate Pct"},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit"},"fta_rates":{"additionalProperties":{"type":"number"},"type":"object","title":"Fta Rates","default":{}},"fta_rate_statuses":{"additionalProperties":{"type":"string"},"type":"object","title":"Fta Rate Statuses","default":{}},"trade_remedies":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Trade Remedies","default":[]},"conditional_goods":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Conditional Goods","default":[]}},"type":"object","required":["hs_code"],"title":"VnaccsDutyCheckResponse"},"VnaccsDutyItemInput":{"properties":{"hs_code":{"type":"string","maxLength":12,"minLength":3,"title":"Hs Code","description":"Vietnam AHTN 8-digit HS code"},"fob_value":{"type":"number","exclusiveMinimum":0.0,"title":"Fob Value","description":"Invoice (FOB) value in `currency`"},"quantity":{"type":"number","exclusiveMinimum":0.0,"title":"Quantity","description":"Quantity for per-unit taxes (EPT)","default":1.0},"currency":{"type":"string","maxLength":3,"title":"Currency","description":"Invoice currency code (USD/EUR/...)","default":"USD"},"country_of_origin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Of Origin","description":"Country of origin — drives FTA preferential rates"},"effective_on":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Effective On","description":"Shipment/effective date (YYYY-MM-DD) for staged-rate selection"},"shipment_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shipment Date","description":"Alias for effective_on; shipment date (YYYY-MM-DD)"}},"type":"object","required":["hs_code","fob_value"],"title":"VnaccsDutyItemInput"},"VnaccsDutyItemResponse":{"properties":{"hs_code":{"type":"string","title":"Hs Code"},"matched_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Matched Key"},"is_specific":{"type":"boolean","title":"Is Specific","default":false},"description":{"type":"string","title":"Description","default":""},"unit":{"type":"string","title":"Unit","default":"kg"},"cif_vnd":{"type":"number","title":"Cif Vnd","default":0.0},"fob_vnd":{"type":"number","title":"Fob Vnd","default":0.0},"freight_vnd":{"type":"number","title":"Freight Vnd","default":0.0},"insurance_vnd":{"type":"number","title":"Insurance Vnd","default":0.0},"import_duty_rate_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Import Duty Rate Pct","default":0.0},"import_duty_used":{"type":"string","title":"Import Duty Used","default":"mfn"},"fta_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fta Label"},"fta_certificate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fta Certificate"},"import_duty_vnd":{"type":"number","title":"Import Duty Vnd","default":0.0},"sct_rate_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Sct Rate Pct"},"sct_vnd":{"type":"number","title":"Sct Vnd","default":0.0},"ept_vnd":{"type":"number","title":"Ept Vnd","default":0.0},"ept_unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ept Unit"},"vat_rate_pct":{"type":"number","title":"Vat Rate Pct","default":0.0},"vat_vnd":{"type":"number","title":"Vat Vnd","default":0.0},"landed_cost_vnd":{"type":"number","title":"Landed Cost Vnd","default":0.0},"notes":{"items":{"type":"string"},"type":"array","title":"Notes","default":[]},"trade_remedies":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Trade Remedies","default":[]},"conditional_goods":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Conditional Goods","default":[]},"effective_on":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Effective On"},"shipment_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shipment Date"},"rate_status":{"type":"string","title":"Rate Status","default":"VERIFIED"},"rate_provenance":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Rate Provenance"},"rate_requires_more_specific_code":{"type":"boolean","title":"Rate Requires More Specific Code","default":false},"rate_requires_more_specific_fta":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rate Requires More Specific Fta"},"preference_certificate_required":{"type":"boolean","title":"Preference Certificate Required","default":false}},"type":"object","required":["hs_code"],"title":"VnaccsDutyItemResponse"},"VnaccsDutyRequest":{"properties":{"items":{"items":{"$ref":"#/components/schemas/VnaccsDutyItemInput"},"type":"array","maxItems":50,"minItems":1,"title":"Items","description":"Line items to estimate"},"usd_vnd":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Usd Vnd","description":"Optional USD/VND rate override"},"temporary_vat_reduction":{"type":"boolean","title":"Temporary Vat Reduction","description":"Apply the temporary 10%->8% VAT reduction (Decree 15/2022 et seq.)","default":false},"force_fta":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Force Fta","description":"Force a specific FTA key (atiga/evfta/...)"}},"type":"object","required":["items"],"title":"VnaccsDutyRequest"},"VnaccsDutyResponse":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"currency":{"type":"string","title":"Currency","default":"VND"},"usd_vnd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Usd Vnd"},"items":{"items":{"$ref":"#/components/schemas/VnaccsDutyItemResponse"},"type":"array","title":"Items"},"total_cif_vnd":{"type":"number","title":"Total Cif Vnd","default":0.0},"total_import_duty_vnd":{"type":"number","title":"Total Import Duty Vnd","default":0.0},"total_sct_vnd":{"type":"number","title":"Total Sct Vnd","default":0.0},"total_ept_vnd":{"type":"number","title":"Total Ept Vnd","default":0.0},"total_vat_vnd":{"type":"number","title":"Total Vat Vnd","default":0.0},"total_landed_cost_vnd":{"type":"number","title":"Total Landed Cost Vnd","default":0.0},"trade_remedies_flagged":{"type":"integer","title":"Trade Remedies Flagged","default":0},"disclaimer":{"type":"string","title":"Disclaimer"}},"type":"object","required":["items","disclaimer"],"title":"VnaccsDutyResponse"},"WebhookRegisterRequest":{"properties":{"endpoint_url":{"type":"string","maxLength":2000,"title":"Endpoint Url"},"events":{"items":{"type":"string"},"type":"array","maxItems":50,"title":"Events"},"secret":{"type":"string","maxLength":256,"title":"Secret","default":""}},"type":"object","required":["endpoint_url"],"title":"WebhookRegisterRequest"},"WebhookRegisterResponse":{"properties":{"registration_id":{"type":"string","title":"Registration Id"},"endpoint_url":{"type":"string","title":"Endpoint Url"},"events":{"items":{"type":"string"},"type":"array","title":"Events"},"message":{"type":"string","title":"Message"}},"type":"object","required":["registration_id","endpoint_url","events","message"],"title":"WebhookRegisterResponse"},"hermes__api__routers__classify__ClassifyRequest":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ItemInput"},"type":"array","maxItems":50,"minItems":1,"title":"Items","description":"Items to classify"},"destination_country":{"type":"string","maxLength":2,"minLength":2,"title":"Destination Country","description":"Destination ISO country code"},"filename_metadata":{"type":"string","maxLength":255,"title":"Filename Metadata","default":""}},"type":"object","required":["items","destination_country"],"title":"ClassifyRequest"},"hermes__api__routers__compliance__RiskLevel":{"type":"string","enum":["critical","high","medium","low","clear"],"title":"RiskLevel","description":"Risk levels."},"hermes__api__routers__screening__RiskLevel":{"type":"string","enum":["blocked","high","medium","low","clear","incomplete"],"title":"RiskLevel","description":"Risk levels for sanctions screening.\n\nMirrors the screening engine's risk scale (P4). ``blocked`` is reserved\nfor exact matches at >=0.99 confidence; ``incomplete`` means one or more\nrequired source lists are missing/stale and the result must NOT be\ntreated as a clean record."},"hermes__api__server__ClassifyRequest":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ClassifyItemInput"},"type":"array","maxItems":50,"minItems":1,"title":"Items","description":"Items to classify"},"destination_country":{"type":"string","maxLength":2,"minLength":2,"title":"Destination Country","description":"Destination ISO country code"}},"type":"object","required":["items","destination_country"],"title":"ClassifyRequest","description":"Request model for POST /api/v1/classify."}},"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT or VGTC API key (SECURITY_API_KEY / vgk_* / sk_test_*)","description":"Authorize with either a Supabase JWT or a VGTC API key (SECURITY_API_KEY, or a user vgk_/sk_test_ key) sent as `Authorization: Bearer <token>`."},"ApiKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Static SECURITY_API_KEY or user vgk_/sk_test_ key sent in the X-API-Key header."}}}}