{"openapi":"3.1.0","info":{"title":"BizzLink API","description":"PEPPOL e-Invoicing API.\n\n## Authentication\n\nAll API requests require two headers:\n- `Authorization: Bearer <api-token>` — your encrypted API key\n- `X-Bizzlink-Signature: t=<timestamp>,v1=<hmac>` — HMAC-SHA256 signature\n\nSee [Authentication](https://docs.bizzlink.lu/docs/getting-started/authentication/) for details.\n\n## Features\n\n- **Invoice Generation** — Generate UBL 2.1 Invoice XML from JSON (PEPPOL BIS 3.0 compliant)\n- **Credit Note Generation** — Generate UBL 2.1 Credit Note XML from JSON (PEPPOL BIS 3.0 compliant)\n- **XML Validation** — Validate UBL XML against PEPPOL Schematron rules\n- **Format Conversion** — Convert ZUGFeRD/CII to UBL 2.1\n- **Document Status** — Track document processing and delivery\n- **Webhooks** — Receive real-time notifications for document events\n","contact":{"name":"VIGASOFT SARL-S","url":"https://www.vigasoft.lu"},"version":"2026-04-14"},"servers":[{"url":"https://gateway.vigasoft.lu/bizzlink","description":"Production"}],"security":[{"BearerAuth":[],"HmacSignature":[]}],"tags":[{"name":"Partner Legal Entities","description":"Manage legal entities on child tenants (Partner API only)"},{"name":"Partner Peppol IDs","description":"Manage Peppol IDs on legal entities (Partner API only)"},{"name":"Validation","description":"PEPPOL BIS 3.0 Schematron validation"},{"name":"Lookup","description":"Look up Peppol participants (ERP integration helpers)"},{"name":"Webhooks","description":"Configure webhook notifications for document events"},{"name":"Document","description":"Create, convert and send documents via the Peppol network"},{"name":"Ping","description":"Health check and authentication probe."},{"name":"Partner Tenants","description":"Create and manage child tenants (Partner API only)"},{"name":"Email Templates","description":"Manage email templates for document notifications"},{"name":"Notification Emails","description":"Configure email notifications for inbound documents"}],"paths":{"/api/v1/webhooks":{"get":{"tags":["Webhooks"],"summary":"List all webhook configurations visible to the caller in the caller's environment (own tenant + sub-tenants if caller is a PARTNER)","operationId":"listWebhooks","parameters":[],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/JsonApiScopedListDocumentWebhookAttributes"}}}}}},"post":{"tags":["Webhooks"],"summary":"Create a webhook configuration. Scope (tenant/legal-entity/partner) is set via meta.scope. PARTNER callers may target sub-tenants via tenant.value=<sub-tenant-uuid> or by referencing a sub-tenant's Peppol ID.","operationId":"createWebhook","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"JSON:API-compliant envelope for creating a resource. The actual resource fields live under 'data.attributes'; ownership is declared under 'data.meta.scope'.","properties":{"data":{"type":"object","description":"Resource envelope. 'attributes' holds the domain fields; 'meta.scope' declares whether the resource belongs to the whole tenant or to a specific legal entity (Peppol ID).","properties":{"type":{"type":"string","description":"Must be 'webhooks' for this endpoint.","enum":["webhooks"],"example":"webhooks"},"attributes":{"$ref":"#/components/schemas/WebhookAttributesRequest","description":"The actual resource fields."},"meta":{"$ref":"#/components/schemas/JsonApiMeta","description":"Optional JSON:API meta. Only used by scoped resources (e.g. email templates, notification emails) to declare their ownership scope."}},"required":["attributes"]}},"required":["data"]}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/JsonApiScopedDocumentWebhookAttributes"}}}}}}},"/api/v1/webhooks/{id}/actions/test":{"post":{"tags":["Webhooks"],"summary":"Send a test webhook","operationId":"testWebhook","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/WebhookTestResponse"}}}}}}},"/api/v1/webhooks/{id}/actions/rotate-secret":{"post":{"tags":["Webhooks"],"summary":"Rotate the webhook signing secret","operationId":"rotateWebhookSecret","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/JsonApiScopedDocumentWebhookAttributes"}}}}}}},"/api/v1/tenants":{"get":{"tags":["Partner Tenants"],"summary":"List child tenants","description":"Lists all tenants owned by the calling partner.","operationId":"listPartnerTenants","parameters":[],"responses":{"200":{"description":"Tenant list","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiListDocumentTenantResponseAttributes"},{"properties":{"data":{"items":{"properties":{"type":{"type":"string","description":"Must be 'tenants' for this endpoint.","enum":["tenants"],"example":"tenants"}}}}}}]}}}},"403":{"description":"Caller is not a partner","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiListDocumentTenantResponseAttributes"},{"properties":{"data":{"items":{"properties":{"type":{"type":"string","description":"Must be 'tenants' for this endpoint.","enum":["tenants"],"example":"tenants"}}}}}}]}}}}}},"post":{"tags":["Partner Tenants"],"summary":"Create a child tenant","description":"Creates a new tenant as a child of the calling partner tenant. Automatically creates a default legal entity and Peppol IDs based on VAT number.","operationId":"createPartnerTenant","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"JSON:API-compliant envelope for creating a resource. The actual resource fields live under 'data.attributes'; ownership is declared under 'data.meta.scope'.","properties":{"data":{"type":"object","description":"Resource envelope. 'attributes' holds the domain fields; 'meta.scope' declares whether the resource belongs to the whole tenant or to a specific legal entity (Peppol ID).","properties":{"type":{"type":"string","description":"Must be 'tenants' for this endpoint.","enum":["tenants"],"example":"tenants"},"attributes":{"$ref":"#/components/schemas/TenantCreateAttributes","description":"The actual resource fields."},"meta":{"$ref":"#/components/schemas/JsonApiMeta","description":"Optional JSON:API meta. Only used by scoped resources (e.g. email templates, notification emails) to declare their ownership scope."}},"required":["attributes"]}},"required":["data"]}}},"required":true},"responses":{"201":{"description":"Tenant created","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentTenantResponseAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'tenants' for this endpoint.","enum":["tenants"],"example":"tenants"}}}}}]}}}},"403":{"description":"Caller is not a partner","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentTenantResponseAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'tenants' for this endpoint.","enum":["tenants"],"example":"tenants"}}}}}]}}}},"422":{"description":"Validation error","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentTenantResponseAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'tenants' for this endpoint.","enum":["tenants"],"example":"tenants"}}}}}]}}}}}}},"/api/v1/tenants/{tenantId}/legal-entities":{"get":{"tags":["Partner Legal Entities"],"summary":"List legal entities on child tenant","operationId":"listLegalEntities","parameters":[{"name":"tenantId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Legal entity list","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiListDocumentLegalEntityResponseAttributes"},{"properties":{"data":{"items":{"properties":{"type":{"type":"string","description":"Must be 'legal-entities' for this endpoint.","enum":["legal-entities"],"example":"legal-entities"}}}}}}]}}}},"403":{"description":"Not a partner or tenant not a child","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiListDocumentLegalEntityResponseAttributes"},{"properties":{"data":{"items":{"properties":{"type":{"type":"string","description":"Must be 'legal-entities' for this endpoint.","enum":["legal-entities"],"example":"legal-entities"}}}}}}]}}}},"404":{"description":"Tenant not found","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiListDocumentLegalEntityResponseAttributes"},{"properties":{"data":{"items":{"properties":{"type":{"type":"string","description":"Must be 'legal-entities' for this endpoint.","enum":["legal-entities"],"example":"legal-entities"}}}}}}]}}}}}},"post":{"tags":["Partner Legal Entities"],"summary":"Create legal entity on child tenant","operationId":"createLegalEntity","parameters":[{"name":"tenantId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"JSON:API-compliant envelope for creating a resource. The actual resource fields live under 'data.attributes'; ownership is declared under 'data.meta.scope'.","properties":{"data":{"type":"object","description":"Resource envelope. 'attributes' holds the domain fields; 'meta.scope' declares whether the resource belongs to the whole tenant or to a specific legal entity (Peppol ID).","properties":{"type":{"type":"string","description":"Must be 'legal-entities' for this endpoint.","enum":["legal-entities"],"example":"legal-entities"},"attributes":{"$ref":"#/components/schemas/LegalEntityCreateAttributes","description":"The actual resource fields."},"meta":{"$ref":"#/components/schemas/JsonApiMeta","description":"Optional JSON:API meta. Only used by scoped resources (e.g. email templates, notification emails) to declare their ownership scope."}},"required":["attributes"]}},"required":["data"]}}},"required":true},"responses":{"201":{"description":"Legal entity created","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentLegalEntityResponseAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'legal-entities' for this endpoint.","enum":["legal-entities"],"example":"legal-entities"}}}}}]}}}},"403":{"description":"Not a partner or tenant not a child","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentLegalEntityResponseAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'legal-entities' for this endpoint.","enum":["legal-entities"],"example":"legal-entities"}}}}}]}}}},"404":{"description":"Tenant not found","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentLegalEntityResponseAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'legal-entities' for this endpoint.","enum":["legal-entities"],"example":"legal-entities"}}}}}]}}}}}}},"/api/v1/tenants/{tenantId}/legal-entities/{leId}/peppol-ids":{"get":{"tags":["Partner Peppol IDs"],"summary":"List Peppol IDs on legal entity","operationId":"listPeppolIds","parameters":[{"name":"tenantId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"leId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Peppol ID list","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiListDocumentPeppolIdResponseAttributes"},{"properties":{"data":{"items":{"properties":{"type":{"type":"string","description":"Must be 'peppol-ids' for this endpoint.","enum":["peppol-ids"],"example":"peppol-ids"}}}}}}]}}}},"403":{"description":"Not a partner or tenant not a child","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiListDocumentPeppolIdResponseAttributes"},{"properties":{"data":{"items":{"properties":{"type":{"type":"string","description":"Must be 'peppol-ids' for this endpoint.","enum":["peppol-ids"],"example":"peppol-ids"}}}}}}]}}}},"404":{"description":"Tenant or legal entity not found","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiListDocumentPeppolIdResponseAttributes"},{"properties":{"data":{"items":{"properties":{"type":{"type":"string","description":"Must be 'peppol-ids' for this endpoint.","enum":["peppol-ids"],"example":"peppol-ids"}}}}}}]}}}}}},"post":{"tags":["Partner Peppol IDs"],"summary":"Create Peppol ID on legal entity","description":"Creates a new Peppol identifier on a legal entity. SchemeId and participantId are validated against the official Peppol scheme registry. If isDefault=true, all other Peppol IDs on this legal entity are set to non-default.","operationId":"createPeppolId","parameters":[{"name":"X-Bizzlink-Environment","in":"header","required":false,"schema":{"type":"string","default":"LIVE"}},{"name":"tenantId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"leId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"JSON:API-compliant envelope for creating a resource. The actual resource fields live under 'data.attributes'; ownership is declared under 'data.meta.scope'.","properties":{"data":{"type":"object","description":"Resource envelope. 'attributes' holds the domain fields; 'meta.scope' declares whether the resource belongs to the whole tenant or to a specific legal entity (Peppol ID).","properties":{"type":{"type":"string","description":"Must be 'peppol-ids' for this endpoint.","enum":["peppol-ids"],"example":"peppol-ids"},"attributes":{"$ref":"#/components/schemas/PeppolIdCreateAttributes","description":"The actual resource fields."},"meta":{"$ref":"#/components/schemas/JsonApiMeta","description":"Optional JSON:API meta. Only used by scoped resources (e.g. email templates, notification emails) to declare their ownership scope."}},"required":["attributes"]}},"required":["data"]}}},"required":true},"responses":{"201":{"description":"Peppol ID created","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentPeppolIdResponseAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'peppol-ids' for this endpoint.","enum":["peppol-ids"],"example":"peppol-ids"}}}}}]}}}},"403":{"description":"Not a partner or tenant not a child","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentPeppolIdResponseAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'peppol-ids' for this endpoint.","enum":["peppol-ids"],"example":"peppol-ids"}}}}}]}}}},"404":{"description":"Tenant or legal entity not found","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentPeppolIdResponseAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'peppol-ids' for this endpoint.","enum":["peppol-ids"],"example":"peppol-ids"}}}}}]}}}},"422":{"description":"Invalid scheme or participant ID","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentPeppolIdResponseAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'peppol-ids' for this endpoint.","enum":["peppol-ids"],"example":"peppol-ids"}}}}}]}}}}}}},"/api/v1/tenants/{tenantId}/legal-entities/{leId}/peppol-ids/{peppolIdId}/register":{"post":{"tags":["Partner Peppol IDs"],"summary":"Register Peppol ID at the SMP","description":"Registers the Peppol ID at the SMP of ITS environment (LIVE → production Peppol SMP, SANDBOX → test Peppol SMP) — so prod and test are registered separately, each via the Peppol ID created for that environment. Seeds the default document types if none are linked yet. Idempotent (re-runnable).","operationId":"registerPeppolId","parameters":[{"name":"tenantId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"leId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"peppolIdId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Registered","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentPeppolIdResponseAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'peppol-ids' for this endpoint.","enum":["peppol-ids"],"example":"peppol-ids"}}}}}]}}}},"403":{"description":"Not a partner or tenant not a child","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentPeppolIdResponseAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'peppol-ids' for this endpoint.","enum":["peppol-ids"],"example":"peppol-ids"}}}}}]}}}},"404":{"description":"Peppol ID not found","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentPeppolIdResponseAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'peppol-ids' for this endpoint.","enum":["peppol-ids"],"example":"peppol-ids"}}}}}]}}}},"502":{"description":"SMP rejected the registration","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentPeppolIdResponseAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'peppol-ids' for this endpoint.","enum":["peppol-ids"],"example":"peppol-ids"}}}}}]}}}}}}},"/api/v1/tenants/{tenantId}/legal-entities/{leId}/peppol-ids/{peppolIdId}/deregister":{"post":{"tags":["Partner Peppol IDs"],"summary":"Deregister Peppol ID from the SMP","description":"Removes the Peppol ID (ServiceGroup + all ServiceMetadata) from the SMP of its environment and clears the smpRegistered flag.","operationId":"deregisterPeppolId","parameters":[{"name":"tenantId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"leId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"peppolIdId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Deregistered","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentPeppolIdResponseAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'peppol-ids' for this endpoint.","enum":["peppol-ids"],"example":"peppol-ids"}}}}}]}}}},"403":{"description":"Not a partner or tenant not a child","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentPeppolIdResponseAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'peppol-ids' for this endpoint.","enum":["peppol-ids"],"example":"peppol-ids"}}}}}]}}}},"404":{"description":"Peppol ID not found","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentPeppolIdResponseAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'peppol-ids' for this endpoint.","enum":["peppol-ids"],"example":"peppol-ids"}}}}}]}}}}}}},"/api/v1/notification-emails":{"get":{"tags":["Notification Emails"],"summary":"List all notification email configurations for the tenant","operationId":"listNotificationEmails","parameters":[],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/JsonApiScopedListDocumentNotificationEmailAttributes"}}}}}},"post":{"tags":["Notification Emails"],"summary":"Create a notification email configuration","operationId":"createNotificationEmail","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"JSON:API-compliant envelope for creating a resource. The actual resource fields live under 'data.attributes'; ownership is declared under 'data.meta.scope'.","properties":{"data":{"type":"object","description":"Resource envelope. 'attributes' holds the domain fields; 'meta.scope' declares whether the resource belongs to the whole tenant or to a specific legal entity (Peppol ID).","properties":{"type":{"type":"string","description":"Must be 'notification-emails' for this endpoint.","enum":["notification-emails"],"example":"notification-emails"},"attributes":{"$ref":"#/components/schemas/NotificationEmailAttributesRequest","description":"The actual resource fields."},"meta":{"$ref":"#/components/schemas/JsonApiMeta","description":"Optional JSON:API meta. Only used by scoped resources (e.g. email templates, notification emails) to declare their ownership scope."}},"required":["attributes"]}},"required":["data"]}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/JsonApiScopedDocumentNotificationEmailAttributes"}}}}}}},"/api/v1/email-templates":{"get":{"tags":["Email Templates"],"summary":"List all email templates visible to the tenant","operationId":"listEmailTemplates","parameters":[],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/JsonApiScopedListDocumentEmailTemplateAttributes"}}}}}},"post":{"tags":["Email Templates"],"summary":"Create an email template","operationId":"createEmailTemplate","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"JSON:API-compliant envelope for creating a resource. The actual resource fields live under 'data.attributes'; ownership is declared under 'data.meta.scope'.","properties":{"data":{"type":"object","description":"Resource envelope. 'attributes' holds the domain fields; 'meta.scope' declares whether the resource belongs to the whole tenant or to a specific legal entity (Peppol ID).","properties":{"type":{"type":"string","description":"Must be 'email-templates' for this endpoint.","enum":["email-templates"],"example":"email-templates"},"attributes":{"$ref":"#/components/schemas/EmailTemplateAttributesRequest","description":"The actual resource fields."},"meta":{"$ref":"#/components/schemas/JsonApiMeta","description":"Optional JSON:API meta. Only used by scoped resources (e.g. email templates, notification emails) to declare their ownership scope."}},"required":["attributes"]}},"required":["data"]}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/JsonApiScopedDocumentEmailTemplateAttributes"}}}}}}},"/api/v1/documents/xml":{"post":{"tags":["Document"],"summary":"Send a document from an XML file","description":"Accepts a UBL 2.1 Invoice or Credit Note XML, validates it asynchronously against\nPEPPOL BIS 3.0 Schematron rules, and sends it into the Peppol network.\n\nRequest body is a JSON:API resource envelope with `data.type = \"ubl-xml\"`.\nResponse shape: JSON:API collection (`data: [...]`) with one rendition per entry.\nEach entry's JSON:API `type` reflects the detected document kind\n(`invoices` or `credit-notes`).\n\nPoll `GET /documents/{id}/status` per rendition for the validation/delivery outcome.\n","operationId":"sendUblDocument","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"JSON:API-compliant envelope for creating a resource. The actual resource fields live under 'data.attributes'; ownership is declared under 'data.meta.scope'.","properties":{"data":{"type":"object","description":"Resource envelope. 'attributes' holds the domain fields; 'meta.scope' declares whether the resource belongs to the whole tenant or to a specific legal entity (Peppol ID).","properties":{"type":{"type":"string","description":"Must be 'ubl-xml' for this endpoint.","enum":["ubl-xml"],"example":"ubl-xml"},"attributes":{"$ref":"#/components/schemas/UblDocumentRequest","description":"The actual resource fields."},"meta":{"$ref":"#/components/schemas/JsonApiMeta","description":"Optional JSON:API meta. Only used by scoped resources (e.g. email templates, notification emails) to declare their ownership scope."}},"required":["attributes"]}},"required":["data"]}}},"required":true},"responses":{"200":{"description":"Document accepted for async processing","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiListDocumentDocumentAcceptedAttributes"},{"properties":{"data":{"items":{"properties":{"type":{"type":"string","description":"One of [invoices, credit-notes] — depends on the resolved business document kind.","enum":["invoices","credit-notes"],"example":"invoices"}}}}}}]}}}},"403":{"description":"Sender Peppol ID does not belong to the tenant","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiListDocumentDocumentAcceptedAttributes"},{"properties":{"data":{"items":{"properties":{"type":{"type":"string","description":"One of [invoices, credit-notes] — depends on the resolved business document kind.","enum":["invoices","credit-notes"],"example":"invoices"}}}}}}]}}}},"422":{"description":"Synchronous processing failed","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiListDocumentDocumentAcceptedAttributes"},{"properties":{"data":{"items":{"properties":{"type":{"type":"string","description":"One of [invoices, credit-notes] — depends on the resolved business document kind.","enum":["invoices","credit-notes"],"example":"invoices"}}}}}}]}}}},"500":{"description":"Internal server error","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiListDocumentDocumentAcceptedAttributes"},{"properties":{"data":{"items":{"properties":{"type":{"type":"string","description":"One of [invoices, credit-notes] — depends on the resolved business document kind.","enum":["invoices","credit-notes"],"example":"invoices"}}}}}}]}}}}}}},"/api/v1/documents/json":{"post":{"tags":["Document"],"summary":"Send a document from a JSON structure","description":"Accepts a `BusinessDocument` (the same model the on-prem connector plugins build) and\ngenerates one or more wire-format renditions depending on sender/receiver country and\nregulatory requirements. The polymorphic `@type` discriminator\n(`InvoiceDocument` / `CreditNoteDocument`) decides the JSON:API resource type of each\nresponse entry (`invoices` or `credit-notes`).\n\nThe routing layer — based on sender country, receiver country and SMP capabilities —\ndecides which formats/targets the document is rendered into. Examples:\n* LU/AT/BE/NL/DK/SE/IE seller → 1× UBL via Peppol\n* IT seller (any buyer) → FatturaPA via SDI **plus** UBL via Peppol (when receiver is not IT)\n* FR seller (post-2026-09-01) → Factur-X/UBL via PPF/PDP **plus** UBL via Peppol (when receiver is not FR)\n\nResponse is a JSON:API **collection**: `data` is an array with one entry per rendition.\nEach entry has its own `id` (= per-rendition document id, pollable via\n`GET /documents/{id}/status`); all siblings share the same `attributes.processId`,\nlooked up via `GET /documents?processId={uuid}`.\n","operationId":"createAndSendBusinessDocument","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"JSON:API-compliant envelope for creating a resource. The actual resource fields live under 'data.attributes'; ownership is declared under 'data.meta.scope'.","properties":{"data":{"type":"object","description":"Resource envelope. 'attributes' holds the domain fields; 'meta.scope' declares whether the resource belongs to the whole tenant or to a specific legal entity (Peppol ID).","properties":{"type":{"type":"string","description":"Must be 'business-documents' for this endpoint.","enum":["business-documents"],"example":"business-documents"},"attributes":{"description":"The actual resource fields."},"meta":{"$ref":"#/components/schemas/JsonApiMeta","description":"Optional JSON:API meta. Only used by scoped resources (e.g. email templates, notification emails) to declare their ownership scope."}},"required":["attributes"]}},"required":["data"]},"examples":{"InvoiceDocument":{"summary":"Minimal commercial invoice (BT-3 = 380)","description":"InvoiceDocument","value":{"data":{"type":"business-documents","attributes":{"@type":"InvoiceDocument","documentId":"INV-2026-00042","issueDate":"2026-05-05","typeCode":"COMMERCIAL_INVOICE","currency":"EUR","dueDate":"2026-06-04","buyerReference":"PO-7788","paymentTermsText":"Net 30 days","seller":{"name":"Vigasoft S.à r.l.","legalRegistrationId":"LU-RCS-B12345","vatId":"LU12345678","electronicAddress":"LU12345678","electronicAddressSchemeId":"LU_VAT","address":{"street1":"Rue de la Gare 1","city":"Luxembourg","postCode":"L-1611","countryCode":"LU"}},"buyer":{"name":"ACME Italia S.r.l.","vatId":"IT01234567890","electronicAddress":"IT01234567890","electronicAddressSchemeId":"IT_IVA","address":{"street1":"Via Roma 1","city":"Milano","postCode":"20121","countrySubdivision":"MI","countryCode":"IT"}},"delivery":{"deliveryDate":"2026-05-04","locationIdentifier":"4025673","locationIdentifierSchemeId":"0088","partyName":"ACME Italia S.r.l. — Warehouse","address":{"street1":"Via Roma 1","city":"Milano","postCode":"20121","countryCode":"IT"}},"payment":{"paymentMeansCode":"SEPA_CREDIT_TRANSFER","remittanceInformation":"INV-2026-00042","accounts":[{"iban":"LU280019400644750000","bic":"BCEELULL","accountName":"BCEELULL"}]},"taxBreakdown":[{"categoryCode":"S","rate":21.0,"taxableAmount":{"amount":1000.0,"currency":"EUR"}}],"lines":[{"id":"1","quantity":10,"unitCode":"C62","netUnitPrice":{"amount":100.0,"currency":"EUR"},"vatCategoryCode":"S","vatRate":21.0,"itemName":"Widget"}]}}}},"CreditNoteDocument":{"summary":"Credit note (BT-3 = 381) with mandatory original-invoice reference","description":"CreditNoteDocument","value":{"data":{"type":"business-documents","attributes":{"@type":"CreditNoteDocument","documentId":"CN-2026-00007","issueDate":"2026-05-15","typeCode":"CREDIT_NOTE","currency":"EUR","originalInvoiceNumber":"INV-2026-00042","originalInvoiceDate":"2026-05-05","seller":{"name":"Vigasoft S.à r.l.","vatId":"LU12345678","electronicAddress":"LU12345678","electronicAddressSchemeId":"LU_VAT","address":{"street1":"Rue de la Gare 1","city":"Luxembourg","postCode":"L-1611","countryCode":"LU"}},"buyer":{"name":"ACME Italia S.r.l.","vatId":"IT01234567890","electronicAddress":"IT01234567890","electronicAddressSchemeId":"IT_IVA","address":{"street1":"Via Roma 1","city":"Milano","postCode":"20121","countryCode":"IT"}},"taxBreakdown":[{"categoryCode":"S","rate":21.0,"taxableAmount":{"amount":100.0,"currency":"EUR"}}],"lines":[{"id":"1","quantity":1,"unitCode":"C62","netUnitPrice":{"amount":100.0,"currency":"EUR"},"vatCategoryCode":"S","vatRate":21.0,"itemName":"Refund of Widget"}]}}}}}}},"required":true},"responses":{"200":{"description":"Document(s) accepted for async processing","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiListDocumentDocumentAcceptedAttributes"},{"properties":{"data":{"items":{"properties":{"type":{"type":"string","description":"One of [invoices, credit-notes] — depends on the resolved business document kind.","enum":["invoices","credit-notes"],"example":"invoices"}}}}}}]}}}},"403":{"description":"Sender Peppol ID does not belong to the tenant","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiListDocumentDocumentAcceptedAttributes"},{"properties":{"data":{"items":{"properties":{"type":{"type":"string","description":"One of [invoices, credit-notes] — depends on the resolved business document kind.","enum":["invoices","credit-notes"],"example":"invoices"}}}}}}]}}}},"422":{"description":"Synchronous XML generation failed or routing target not supported","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiListDocumentDocumentAcceptedAttributes"},{"properties":{"data":{"items":{"properties":{"type":{"type":"string","description":"One of [invoices, credit-notes] — depends on the resolved business document kind.","enum":["invoices","credit-notes"],"example":"invoices"}}}}}}]}}}},"500":{"description":"Internal server error","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiListDocumentDocumentAcceptedAttributes"},{"properties":{"data":{"items":{"properties":{"type":{"type":"string","description":"One of [invoices, credit-notes] — depends on the resolved business document kind.","enum":["invoices","credit-notes"],"example":"invoices"}}}}}}]}}}}}}},"/api/v1/document/validate":{"post":{"tags":["Validation"],"summary":"Validate UBL XML","description":"Validates a UBL 2.1 Invoice or Credit Note XML document against PEPPOL BIS 3.0 Schematron rules.\n\nRequest body is a JSON:API resource envelope with `data.type = \"validations\"`, and\n`data.attributes.to_validate` containing the UBL XML. The response `data.attributes` has\n`valid` (boolean) and `errors` (list) — populated synchronously.\n","operationId":"validateXml","requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"JSON:API-compliant envelope for creating a resource. The actual resource fields live under 'data.attributes'; ownership is declared under 'data.meta.scope'.","properties":{"data":{"type":"object","description":"Resource envelope. 'attributes' holds the domain fields; 'meta.scope' declares whether the resource belongs to the whole tenant or to a specific legal entity (Peppol ID).","properties":{"type":{"type":"string","description":"Must be 'validations' for this endpoint.","enum":["validations"],"example":"validations"},"attributes":{"$ref":"#/components/schemas/ValidationRequestAttributes","description":"The actual resource fields."},"meta":{"$ref":"#/components/schemas/JsonApiMeta","description":"Optional JSON:API meta. Only used by scoped resources (e.g. email templates, notification emails) to declare their ownership scope."}},"required":["attributes"]}},"required":["data"]}}},"required":true},"responses":{"200":{"description":"Validation completed","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentValidationResultAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'validations' for this endpoint.","enum":["validations"],"example":"validations"}}}}}]}}}},"422":{"description":"Schematron validation error","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentValidationResultAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'validations' for this endpoint.","enum":["validations"],"example":"validations"}}}}}]}}}},"500":{"description":"Internal server error","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentValidationResultAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'validations' for this endpoint.","enum":["validations"],"example":"validations"}}}}}]}}}}}}},"/api/v1/webhooks/{id}":{"get":{"tags":["Webhooks"],"summary":"Get a specific webhook configuration (own tenant or sub-tenant if caller is PARTNER)","operationId":"getWebhook","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/JsonApiScopedDocumentWebhookAttributes"}}}}}},"delete":{"tags":["Webhooks"],"summary":"Delete a webhook configuration","operationId":"deleteWebhook","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}},"patch":{"tags":["Webhooks"],"summary":"Update a webhook configuration. Scope is immutable — only attributes can be patched.","operationId":"updateWebhook","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","description":"Must be 'webhooks' for this endpoint.","enum":["webhooks"],"example":"webhooks"},"id":{"type":"string"},"attributes":{"$ref":"#/components/schemas/WebhookAttributesRequest"},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}},"required":["attributes"]}},"required":["data"]}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/JsonApiScopedDocumentWebhookAttributes"}}}}}}},"/api/v1/tenants/{tenantId}/legal-entities/{leId}":{"patch":{"tags":["Partner Legal Entities"],"summary":"Update legal entity on child tenant","operationId":"updateLegalEntity","parameters":[{"name":"tenantId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"leId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","description":"Must be 'legal-entities' for this endpoint.","enum":["legal-entities"],"example":"legal-entities"},"id":{"type":"string"},"attributes":{"$ref":"#/components/schemas/LegalEntityCreateAttributes"},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}},"required":["attributes"]}},"required":["data"]}}},"required":true},"responses":{"200":{"description":"Legal entity updated","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentLegalEntityResponseAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'legal-entities' for this endpoint.","enum":["legal-entities"],"example":"legal-entities"}}}}}]}}}},"403":{"description":"Not a partner or tenant not a child","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentLegalEntityResponseAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'legal-entities' for this endpoint.","enum":["legal-entities"],"example":"legal-entities"}}}}}]}}}},"404":{"description":"Tenant or legal entity not found","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentLegalEntityResponseAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'legal-entities' for this endpoint.","enum":["legal-entities"],"example":"legal-entities"}}}}}]}}}}}}},"/api/v1/tenants/{id}":{"get":{"tags":["Partner Tenants"],"summary":"Get child tenant details","description":"Returns details of a specific child tenant.","operationId":"getPartnerTenant","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Tenant details","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentTenantResponseAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'tenants' for this endpoint.","enum":["tenants"],"example":"tenants"}}}}}]}}}},"403":{"description":"Caller is not a partner or tenant is not a child","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentTenantResponseAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'tenants' for this endpoint.","enum":["tenants"],"example":"tenants"}}}}}]}}}},"404":{"description":"Tenant not found","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentTenantResponseAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'tenants' for this endpoint.","enum":["tenants"],"example":"tenants"}}}}}]}}}}}},"patch":{"tags":["Partner Tenants"],"summary":"Update child tenant","description":"Updates an existing child tenant.","operationId":"updatePartnerTenant","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","description":"Must be 'tenants' for this endpoint.","enum":["tenants"],"example":"tenants"},"id":{"type":"string"},"attributes":{"$ref":"#/components/schemas/TenantCreateAttributes"},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}},"required":["attributes"]}},"required":["data"]}}},"required":true},"responses":{"200":{"description":"Tenant updated","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentTenantResponseAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'tenants' for this endpoint.","enum":["tenants"],"example":"tenants"}}}}}]}}}},"403":{"description":"Caller is not a partner or tenant is not a child","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentTenantResponseAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'tenants' for this endpoint.","enum":["tenants"],"example":"tenants"}}}}}]}}}},"404":{"description":"Tenant not found","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentTenantResponseAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'tenants' for this endpoint.","enum":["tenants"],"example":"tenants"}}}}}]}}}}}}},"/api/v1/notification-emails/{id}":{"get":{"tags":["Notification Emails"],"summary":"Get a specific notification email configuration","operationId":"getNotificationEmail","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/JsonApiScopedDocumentNotificationEmailAttributes"}}}}}},"delete":{"tags":["Notification Emails"],"summary":"Delete a notification email configuration","operationId":"deleteNotificationEmail","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}},"patch":{"tags":["Notification Emails"],"summary":"Update a notification email configuration","operationId":"updateNotificationEmail","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","description":"Must be 'notification-emails' for this endpoint.","enum":["notification-emails"],"example":"notification-emails"},"id":{"type":"string"},"attributes":{"$ref":"#/components/schemas/NotificationEmailAttributesRequest"},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}},"required":["attributes"]}},"required":["data"]}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/JsonApiScopedDocumentNotificationEmailAttributes"}}}}}}},"/api/v1/email-templates/{id}":{"get":{"tags":["Email Templates"],"summary":"Get a specific email template","operationId":"getEmailTemplate","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/JsonApiScopedDocumentEmailTemplateAttributes"}}}}}},"delete":{"tags":["Email Templates"],"summary":"Delete an email template","operationId":"deleteEmailTemplate","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}},"patch":{"tags":["Email Templates"],"summary":"Update an email template","operationId":"updateEmailTemplate","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","description":"Must be 'email-templates' for this endpoint.","enum":["email-templates"],"example":"email-templates"},"id":{"type":"string"},"attributes":{"$ref":"#/components/schemas/EmailTemplateAttributesRequest"},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}},"required":["attributes"]}},"required":["data"]}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/JsonApiScopedDocumentEmailTemplateAttributes"}}}}}}},"/api/v1/ping":{"get":{"tags":["Ping"],"operationId":"ping","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PingResponse"}}}}}}},"/api/v1/lookup/peppol/participant/{endpointId}":{"get":{"tags":["Lookup"],"summary":"Look up a Peppol participant","description":"Resolves a Peppol endpoint identifier against the SML (production AND test —\nthe same participant ID can be registered on both networks) and queries each\nmatching SMP for the accepted document types and, when published, the Peppol\nDirectory Business Card (official name + country).\n\nTypical ERP use case: before queueing a Peppol document for a new recipient,\ncall this endpoint to confirm the recipient is registered on the network you\ncare about (PROD vs TEST) and accepts the document type you are about to send.\n\nThe `endpointId` path parameter takes the colon-separated `scheme:participant`\nform, e.g. `/api/v1/lookup/peppol/participant/9938:LU18635679`. The response is\na JSON:API resource envelope where `data.id` is the same `endpointId` and\n`data.attributes` carries the lookup result.\n","operationId":"lookupPeppolParticipant","parameters":[{"name":"endpointId","in":"path","description":"Peppol endpoint identifier in `scheme:participant` form","required":true,"schema":{"type":"string"},"example":"9938:LU18635679"}],"responses":{"200":{"description":"Lookup result (always 200 — `attributes.registered=false` and an empty `attributes.environment` list mean the participant is on neither PROD nor TEST)","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentParticipantLookupAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'peppol-participants' for this endpoint.","enum":["peppol-participants"],"example":"peppol-participants"}}}}}]}}}},"400":{"description":"Malformed endpoint identifier","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentParticipantLookupAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'peppol-participants' for this endpoint.","enum":["peppol-participants"],"example":"peppol-participants"}}}}}]}}}}}}},"/api/v1/documents":{"get":{"tags":["Document"],"summary":"List all renditions sharing a processId (sibling lookup)","description":"Returns every document rendition produced by the same create-and-send call,\nidentified by the shared `processId`. Useful when a single business document\nis rendered into multiple wire formats (e.g. IT seller → FatturaPA via SDI\n*plus* UBL via Peppol) and the caller wants the full picture without polling\neach rendition id separately.\n\nTenant-scoped — only renditions owned by the authenticated tenant are returned.\nReturns an empty `data` array if no renditions match.\n","operationId":"listDocuments","parameters":[{"name":"direction","in":"query","description":"Document direction: 'inbound' (received) or 'outbound' (sent)","required":true,"schema":{"type":"string"},"example":"outbound"},{"name":"since","in":"query","description":"Filter documents created at or after this instant (ISO-8601). Optional.","required":false,"schema":{"type":"string"},"example":"2026-01-01T00:00:00Z"},{"name":"page[number]","in":"query","description":"Page number (1-based, JSON:API page strategy)","required":false,"schema":{"type":"string"},"example":1},{"name":"page[size]","in":"query","description":"Page size (max 100)","required":false,"schema":{"type":"string"},"example":20},{"name":"processId","in":"query","description":"The shared processId returned by the create-and-send endpoint","required":true,"schema":{"type":"string"},"example":"8e3a1f2c-1234-4abc-9def-012345678abc"}],"responses":{"200":{"description":"Sibling renditions","content":{"*/*":{"schema":{"oneOf":[{"$ref":"#/components/schemas/JsonApiListDocumentDocumentAttributes"},{"allOf":[{"$ref":"#/components/schemas/JsonApiListDocumentDocumentAttributes"},{"properties":{"data":{"items":{"properties":{"type":{"type":"string","description":"Must be 'documents' for this endpoint.","enum":["documents"],"example":"documents"}}}}}}]}]}}}},"400":{"description":"Invalid direction parameter","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiListDocumentDocumentAttributes"},{"properties":{"data":{"items":{"properties":{"type":{"type":"string","description":"Must be 'documents' for this endpoint.","enum":["documents"],"example":"documents"}}}}}}]}}}}}}},"/api/v1/documents/{documentId}/status":{"get":{"tags":["Document"],"summary":"Get document processing status","description":"Returns the current processing status of a document as a JSON:API resource.\nUse this endpoint to poll the status of asynchronously processed documents.\n\nPossible `attributes.status` values:\n- `ACCEPTED` — Document received and saved\n- `QUEUED_FOR_VALIDATION` — Waiting for Schematron validation\n- `VALID` — Passed validation\n- `INVALID` — Failed validation (see `attributes.errors`)\n- `QUEUED_FOR_SENDING` — Waiting for Peppol transmission\n- `SENT` — Transmitted to Peppol network\n- `DELIVERED` — Delivery confirmed\n- `FAILED` — Processing failed\n","operationId":"getDocumentStatus","parameters":[{"name":"documentId","in":"path","description":"The document ID returned by the create/send endpoint","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Document status retrieved","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentDocumentAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'documents' for this endpoint.","enum":["documents"],"example":"documents"}}}}}]}}}},"403":{"description":"Document belongs to a different tenant","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentDocumentAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'documents' for this endpoint.","enum":["documents"],"example":"documents"}}}}}]}}}},"404":{"description":"Document not found","content":{"*/*":{"schema":{"allOf":[{"$ref":"#/components/schemas/JsonApiDocumentDocumentAttributes"},{"properties":{"data":{"properties":{"type":{"type":"string","description":"Must be 'documents' for this endpoint.","enum":["documents"],"example":"documents"}}}}}]}}}}}}},"/api/v1/tenants/{tenantId}/legal-entities/{leId}/peppol-ids/{peppolIdId}":{"delete":{"tags":["Partner Peppol IDs"],"summary":"Delete Peppol ID","description":"Deactivates a Peppol ID. Cannot delete if SMP-registered.","operationId":"deletePeppolId","parameters":[{"name":"tenantId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"leId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"peppolIdId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Peppol ID deleted"},"403":{"description":"Not a partner or tenant not a child"},"404":{"description":"Peppol ID not found"},"409":{"description":"Cannot delete SMP-registered Peppol ID"}}}}},"components":{"schemas":{"JsonApiCreateDataWebhookAttributesRequest":{"type":"object","description":"Resource envelope. 'attributes' holds the domain fields; 'meta.scope' declares whether the resource belongs to the whole tenant or to a specific legal entity (Peppol ID).","properties":{"type":{"type":"string","description":"JSON:API resource type. When provided, must match the resource type of the target endpoint (e.g. 'invoices' for /api/v1/documents/invoices). Optional — the server infers it from the endpoint when omitted.","example":"invoices"},"attributes":{"$ref":"#/components/schemas/WebhookAttributesRequest","description":"The actual resource fields."},"meta":{"$ref":"#/components/schemas/JsonApiMeta","description":"Optional JSON:API meta. Only used by scoped resources (e.g. email templates, notification emails) to declare their ownership scope."}},"required":["attributes"]},"JsonApiCreateRequestWebhookAttributesRequest":{"type":"object","description":"JSON:API-compliant envelope for creating a resource. The actual resource fields live under 'data.attributes'; ownership is declared under 'data.meta.scope'.","properties":{"data":{"$ref":"#/components/schemas/JsonApiCreateDataWebhookAttributesRequest","description":"The resource envelope. Wraps the resource's attributes and its ownership scope."}},"required":["data"]},"JsonApiMeta":{"type":"object","description":"JSON:API meta object. Carries the resource ownership scope.","properties":{"scope":{"$ref":"#/components/schemas/JsonApiScope"}},"required":["scope"]},"JsonApiScope":{"type":"object","description":"Defines the ownership scope of the resource. Use 'tenant' for resources that apply to the whole tenant (default/fallback). Use 'legal-entity' to scope the resource to a specific Peppol ID — e.g. a webhook that only fires for documents sent/received under that Peppol ID. Use 'partner' (only callable by partner tenants) to receive events for ALL child tenants — the partner-scoped resource fires in addition to any tenant- or legal-entity-scoped resource of the child, and is always triggered (chainEnabled is ignored). When both a legal-entity and a tenant resource exist, the legal-entity one takes precedence; set 'chainEnabled' on the legal-entity resource to also trigger the tenant-level resource in addition.","properties":{"type":{"type":"string","description":"Scope type. 'tenant' = applies to the whole tenant. 'legal-entity' = applies only to the Peppol ID given in 'value'. 'partner' = applies to all child tenants of the calling partner tenant; 'value' must be empty.","enum":["tenant","legal-entity","partner"],"example":"legal-entity","minLength":1,"pattern":"tenant|legal-entity|partner"},"value":{"type":"string","description":"Required when type='legal-entity': the Peppol ID (scheme:identifier) that owns this resource, e.g. '9938:lu28079289'. Must belong to the requesting tenant. Ignored when type='tenant'. Must be empty when type='partner'.","example":"9938:lu28079289"}},"required":["type"]},"WebhookAttributesRequest":{"type":"object","properties":{"url":{"type":"string","description":"Public HTTPS endpoint that will receive POST requests with the event payload. Must not point to an internal host, IP literal, or private/loopback range.","example":"https://example.com/webhooks/bizzlink","minLength":1},"events":{"type":"array","description":"List of events to subscribe to. Defaults to all document events when omitted.","example":["bizzlink.document.status_changed","bizzlink.document.received"],"items":{"type":"string"}},"enabled":{"type":"boolean","default":false,"description":"Whether the webhook is active. Disabled webhooks are not invoked. Defaults to true.","example":true},"chainEnabled":{"type":"boolean","default":false,"description":"Only effective for legal-entity-scoped webhooks: when true, the tenant-level webhook also fires in addition to this one (cascade). Silently forced to false for tenant- and partner-scoped webhooks. Defaults to false.","example":false}},"required":["url"]},"JsonApiScopedDocumentWebhookAttributes":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/JsonApiScopedResourceWebhookAttributes"}}},"JsonApiScopedResourceWebhookAttributes":{"type":"object","description":"JSON:API resource with an ownership scope (meta.scope). Used for configuration resources that can belong either to the whole tenant or to a specific legal entity (Peppol ID).","properties":{"type":{"type":"string","description":"Resource type — matches the endpoint (e.g. 'email-templates', 'notification-emails').","example":"email-templates"},"id":{"type":"string","description":"Unique resource identifier (UUID).","example":"550e8400-e29b-41d4-a716-446655440000"},"attributes":{"$ref":"#/components/schemas/WebhookAttributes","description":"Resource-specific fields."},"meta":{"$ref":"#/components/schemas/JsonApiMeta","description":"Resource-level meta object carrying the ownership scope (tenant vs legal-entity)."}}},"WebhookAttributes":{"type":"object","properties":{"enabled":{"type":"boolean"},"url":{"type":"string"},"secret":{"type":"string"},"events":{"type":"array","items":{"type":"string"}},"environment":{"type":"string"},"chainEnabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"WebhookTestResponse":{"type":"object","properties":{"success":{"type":"boolean"},"httpStatus":{"type":"integer","format":"int32"},"message":{"type":"string"}}},"JsonApiCreateDataTenantCreateAttributes":{"type":"object","description":"Resource envelope. 'attributes' holds the domain fields; 'meta.scope' declares whether the resource belongs to the whole tenant or to a specific legal entity (Peppol ID).","properties":{"type":{"type":"string","description":"JSON:API resource type. When provided, must match the resource type of the target endpoint (e.g. 'invoices' for /api/v1/documents/invoices). Optional — the server infers it from the endpoint when omitted.","example":"invoices"},"attributes":{"$ref":"#/components/schemas/TenantCreateAttributes","description":"The actual resource fields."},"meta":{"$ref":"#/components/schemas/JsonApiMeta","description":"Optional JSON:API meta. Only used by scoped resources (e.g. email templates, notification emails) to declare their ownership scope."}},"required":["attributes"]},"JsonApiCreateRequestTenantCreateAttributes":{"type":"object","description":"JSON:API-compliant envelope for creating a resource. The actual resource fields live under 'data.attributes'; ownership is declared under 'data.meta.scope'.","properties":{"data":{"$ref":"#/components/schemas/JsonApiCreateDataTenantCreateAttributes","description":"The resource envelope. Wraps the resource's attributes and its ownership scope."}},"required":["data"]},"TenantCreateAttributes":{"type":"object","description":"Attributes for creating a new child tenant.","properties":{"companyName":{"type":"string","description":"Company name.","example":"Kunde GmbH","minLength":1},"vatNumber":{"type":"string","description":"VAT number.","example":"LU12345678","minLength":1},"tradeRegisterNumber":{"type":"string","description":"Trade register number.","example":"B123456","minLength":1},"contactName":{"type":"string","description":"Contact person name.","example":"Max Müller"},"contactEmail":{"type":"string","format":"email","description":"Contact email.","example":"max@kunde.lu","minLength":1},"contactPhone":{"type":"string","description":"Contact phone.","example":"+352 123 456"},"addressStreet":{"type":"string","description":"Street address.","example":"Rue de la Gare 1","minLength":1},"addressCity":{"type":"string","description":"City.","example":"Luxembourg","minLength":1},"addressPostalCode":{"type":"string","description":"Postal code.","example":"1234","minLength":1},"addressCountry":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","example":"LU","minLength":1},"defaultLanguage":{"type":"string","description":"Default language (ISO 639-1, lowercase). Defaults to 'fr' if not set.","example":"fr"},"billingModel":{"type":"string","description":"Billing model for this tenant. Must match an active partner subscription.","enum":["SEATS","FLOW"],"example":"SEATS"}},"required":["addressCity","addressCountry","addressPostalCode","addressStreet","billingModel","companyName","contactEmail","tradeRegisterNumber","vatNumber"]},"JsonApiDocumentTenantResponseAttributes":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/JsonApiResourceTenantResponseAttributes"}}},"JsonApiResourceTenantResponseAttributes":{"type":"object","description":"JSON:API resource object. Carries the resource type, its identifier and its attributes.","properties":{"type":{"type":"string","description":"Resource type — matches the endpoint (e.g. 'invoices' for POST /documents/invoices, 'documents' for GET /documents/{id}/status).","example":"invoices"},"id":{"type":"string","description":"Unique resource identifier (UUID). Use this value to poll the status endpoint or to reference the resource in subsequent requests.","example":"770e8400-e29b-41d4-a716-446655440000"},"attributes":{"$ref":"#/components/schemas/TenantResponseAttributes","description":"Resource-specific fields."}}},"TenantResponseAttributes":{"type":"object","description":"Tenant attributes in API responses.","properties":{"tenantCode":{"type":"string","description":"Unique tenant code.","example":"KUNDE-GMBH"},"companyName":{"type":"string","description":"Company name.","example":"Kunde GmbH"},"contactName":{"type":"string","description":"Contact person name.","example":"Max Müller"},"contactEmail":{"type":"string","description":"Contact email.","example":"max@kunde.lu"},"contactPhone":{"type":"string","description":"Contact phone.","example":"+352 123 456"},"addressStreet":{"type":"string","description":"Street address."},"addressCity":{"type":"string","description":"City."},"addressPostalCode":{"type":"string","description":"Postal code."},"addressCountry":{"type":"string","description":"Country code (ISO 3166-1 alpha-2).","example":"LU"},"billingModel":{"type":"string","description":"Billing model assigned to this tenant.","enum":["SEATS","FLOW"],"example":"SEATS"},"active":{"type":"boolean","default":false,"description":"Whether the tenant is active.","example":true},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the tenant was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of last update."}}},"JsonApiCreateDataLegalEntityCreateAttributes":{"type":"object","description":"Resource envelope. 'attributes' holds the domain fields; 'meta.scope' declares whether the resource belongs to the whole tenant or to a specific legal entity (Peppol ID).","properties":{"type":{"type":"string","description":"JSON:API resource type. When provided, must match the resource type of the target endpoint (e.g. 'invoices' for /api/v1/documents/invoices). Optional — the server infers it from the endpoint when omitted.","example":"invoices"},"attributes":{"$ref":"#/components/schemas/LegalEntityCreateAttributes","description":"The actual resource fields."},"meta":{"$ref":"#/components/schemas/JsonApiMeta","description":"Optional JSON:API meta. Only used by scoped resources (e.g. email templates, notification emails) to declare their ownership scope."}},"required":["attributes"]},"JsonApiCreateRequestLegalEntityCreateAttributes":{"type":"object","description":"JSON:API-compliant envelope for creating a resource. The actual resource fields live under 'data.attributes'; ownership is declared under 'data.meta.scope'.","properties":{"data":{"$ref":"#/components/schemas/JsonApiCreateDataLegalEntityCreateAttributes","description":"The resource envelope. Wraps the resource's attributes and its ownership scope."}},"required":["data"]},"LegalEntityCreateAttributes":{"type":"object","description":"Attributes for creating a new legal entity.","properties":{"customerName":{"type":"string","description":"Legal entity name.","example":"ACME Luxembourg S.A.","minLength":1},"vatNumber":{"type":"string","description":"VAT number.","example":"LU12345678"},"tradeRegisterNumber":{"type":"string","description":"Trade register number.","example":"B123456","minLength":1},"contactName":{"type":"string","description":"Contact person name.","example":"Max Müller"},"contactEmail":{"type":"string","format":"email","description":"Contact email.","example":"max@acme.lu","minLength":1},"contactPhone":{"type":"string","description":"Contact phone.","example":"+352 123 456"},"addressStreet":{"type":"string","description":"Street address.","example":"Rue de la Gare 1","minLength":1},"addressCity":{"type":"string","description":"City.","example":"Luxembourg","minLength":1},"addressPostalCode":{"type":"string","description":"Postal code.","example":"1234","minLength":1},"addressCountry":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","example":"LU","minLength":1}},"required":["addressCity","addressCountry","addressPostalCode","addressStreet","contactEmail","customerName","tradeRegisterNumber"]},"JsonApiDocumentLegalEntityResponseAttributes":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/JsonApiResourceLegalEntityResponseAttributes"}}},"JsonApiResourceLegalEntityResponseAttributes":{"type":"object","description":"JSON:API resource object. Carries the resource type, its identifier and its attributes.","properties":{"type":{"type":"string","description":"Resource type — matches the endpoint (e.g. 'invoices' for POST /documents/invoices, 'documents' for GET /documents/{id}/status).","example":"invoices"},"id":{"type":"string","description":"Unique resource identifier (UUID). Use this value to poll the status endpoint or to reference the resource in subsequent requests.","example":"770e8400-e29b-41d4-a716-446655440000"},"attributes":{"$ref":"#/components/schemas/LegalEntityResponseAttributes","description":"Resource-specific fields."}}},"LegalEntityResponseAttributes":{"type":"object","description":"Legal entity attributes in API responses.","properties":{"legalEntityCode":{"type":"string","description":"Legal entity code.","example":"ACME-LU"},"customerName":{"type":"string","description":"Legal entity name.","example":"ACME Luxembourg S.A."},"vatNumber":{"type":"string","description":"VAT number.","example":"LU12345678"},"tradeRegisterNumber":{"type":"string","description":"Trade register number.","example":"B123456"},"contactName":{"type":"string","description":"Contact person name."},"contactEmail":{"type":"string","description":"Contact email."},"contactPhone":{"type":"string","description":"Contact phone."},"addressStreet":{"type":"string","description":"Street address."},"addressCity":{"type":"string","description":"City."},"addressPostalCode":{"type":"string","description":"Postal code."},"addressCountry":{"type":"string","description":"Country code (ISO 3166-1 alpha-2).","example":"LU"},"active":{"type":"boolean","default":false,"description":"Whether the legal entity is active.","example":true},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of last update."}}},"JsonApiCreateDataPeppolIdCreateAttributes":{"type":"object","description":"Resource envelope. 'attributes' holds the domain fields; 'meta.scope' declares whether the resource belongs to the whole tenant or to a specific legal entity (Peppol ID).","properties":{"type":{"type":"string","description":"JSON:API resource type. When provided, must match the resource type of the target endpoint (e.g. 'invoices' for /api/v1/documents/invoices). Optional — the server infers it from the endpoint when omitted.","example":"invoices"},"attributes":{"$ref":"#/components/schemas/PeppolIdCreateAttributes","description":"The actual resource fields."},"meta":{"$ref":"#/components/schemas/JsonApiMeta","description":"Optional JSON:API meta. Only used by scoped resources (e.g. email templates, notification emails) to declare their ownership scope."}},"required":["attributes"]},"JsonApiCreateRequestPeppolIdCreateAttributes":{"type":"object","description":"JSON:API-compliant envelope for creating a resource. The actual resource fields live under 'data.attributes'; ownership is declared under 'data.meta.scope'.","properties":{"data":{"$ref":"#/components/schemas/JsonApiCreateDataPeppolIdCreateAttributes","description":"The resource envelope. Wraps the resource's attributes and its ownership scope."}},"required":["data"]},"PeppolIdCreateAttributes":{"type":"object","description":"Attributes for creating a new Peppol ID.","properties":{"schemeId":{"type":"string","description":"ISO 6523 ICD code (e.g. '9938' for LU:VAT, '0240' for LU:MAT).","example":"9938","minLength":1},"participantId":{"type":"string","description":"Participant identifier within the scheme.","example":"lu12345678","minLength":1},"description":{"type":"string","description":"Description for this Peppol ID.","example":"Headquarter Luxembourg","minLength":1},"smpRegister":{"type":"boolean","default":true,"description":"Whether to register this Peppol ID in the SMP immediately.","example":true},"bcName":{"type":"string","description":"Business card name for the Peppol Directory. Defaults to the legal entity name.","example":"Acme S.A."},"bcCountryCode":{"type":"string","description":"Business card country (ISO 3166-1 alpha-2). Defaults to the legal entity address country.","example":"LU"},"bcGeographicalInfo":{"type":"string","description":"Business card geographical information. Defaults to the legal entity city.","example":"Luxembourg"},"bcAdditionalIdScheme":{"type":"string","description":"Business card additional identifier type/scheme (optional, e.g. a VAT or company-register scheme). Omitted from the card when empty.","example":"VAT"},"bcAdditionalIdValue":{"type":"string","description":"Business card additional identifier value. Defaults to the legal entity VAT number.","example":"LU12345678"},"bcAdditionalInformation":{"type":"string","description":"Business card free-text AdditionalInformation (Peppol Directory). Developer-chosen; omitted from the card when empty.","example":"Acme — invoicing entity"},"bcRegistrationDate":{"type":"string","format":"date","description":"Business card registration date (ISO date). Defaults to the Peppol ID creation date.","example":"2026-05-29"},"default":{"type":"boolean"}},"required":["description","participantId","schemeId"]},"JsonApiDocumentPeppolIdResponseAttributes":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/JsonApiResourcePeppolIdResponseAttributes"}}},"JsonApiResourcePeppolIdResponseAttributes":{"type":"object","description":"JSON:API resource object. Carries the resource type, its identifier and its attributes.","properties":{"type":{"type":"string","description":"Resource type — matches the endpoint (e.g. 'invoices' for POST /documents/invoices, 'documents' for GET /documents/{id}/status).","example":"invoices"},"id":{"type":"string","description":"Unique resource identifier (UUID). Use this value to poll the status endpoint or to reference the resource in subsequent requests.","example":"770e8400-e29b-41d4-a716-446655440000"},"attributes":{"$ref":"#/components/schemas/PeppolIdResponseAttributes","description":"Resource-specific fields."}}},"PeppolIdResponseAttributes":{"type":"object","description":"Peppol ID attributes in API responses.","properties":{"peppolId":{"type":"string","description":"Full Peppol ID (schemeId:participantId).","example":"9938:lu12345678"},"schemeId":{"type":"string","description":"ISO 6523 ICD code.","example":"9938"},"participantId":{"type":"string","description":"Participant identifier.","example":"lu12345678"},"description":{"type":"string","description":"Description.","example":"Hauptsitz Luxembourg"},"isDefault":{"type":"boolean","default":false,"description":"Whether this is the default Peppol ID for the legal entity."},"smpRegistered":{"type":"boolean","default":false,"description":"Whether registered in SMP."},"active":{"type":"boolean","default":false,"description":"Whether the Peppol ID is active."},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when created."},"bcName":{"type":"string","description":"Business card name (Peppol Directory); null = legal entity default."},"bcCountryCode":{"type":"string","description":"Business card country (ISO 3166-1 alpha-2); null = legal entity default."},"bcGeographicalInfo":{"type":"string","description":"Business card geographical information; null = legal entity default."},"bcAdditionalIdScheme":{"type":"string","description":"Business card additional identifier scheme; null = 'bizzlink.lu'."},"bcAdditionalIdValue":{"type":"string","description":"Business card additional identifier value; null = legal entity VAT."},"bcAdditionalInformation":{"type":"string","description":"Business card free-text AdditionalInformation (developer-chosen via API; 'bizzlink.lu' for UI-managed)."},"bcRegistrationDate":{"type":"string","format":"date","description":"Business card registration date (ISO date); null = Peppol ID creation date."}}},"JsonApiCreateDataNotificationEmailAttributesRequest":{"type":"object","description":"Resource envelope. 'attributes' holds the domain fields; 'meta.scope' declares whether the resource belongs to the whole tenant or to a specific legal entity (Peppol ID).","properties":{"type":{"type":"string","description":"JSON:API resource type. When provided, must match the resource type of the target endpoint (e.g. 'invoices' for /api/v1/documents/invoices). Optional — the server infers it from the endpoint when omitted.","example":"invoices"},"attributes":{"$ref":"#/components/schemas/NotificationEmailAttributesRequest","description":"The actual resource fields."},"meta":{"$ref":"#/components/schemas/JsonApiMeta","description":"Optional JSON:API meta. Only used by scoped resources (e.g. email templates, notification emails) to declare their ownership scope."}},"required":["attributes"]},"JsonApiCreateRequestNotificationEmailAttributesRequest":{"type":"object","description":"JSON:API-compliant envelope for creating a resource. The actual resource fields live under 'data.attributes'; ownership is declared under 'data.meta.scope'.","properties":{"data":{"$ref":"#/components/schemas/JsonApiCreateDataNotificationEmailAttributesRequest","description":"The resource envelope. Wraps the resource's attributes and its ownership scope."}},"required":["data"]},"NotificationEmailAttributesRequest":{"type":"object","properties":{"recipients":{"type":"array","items":{"type":"string","format":"email"},"minItems":1},"frequency":{"type":"integer","format":"int32"},"language":{"type":"string","pattern":"DE|FR|EN|IT"},"enabled":{"type":"boolean"},"chainEnabled":{"type":"boolean"},"attachXml":{"type":"boolean"},"attachPdf":{"type":"boolean"}},"required":["recipients"]},"JsonApiScopedDocumentNotificationEmailAttributes":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/JsonApiScopedResourceNotificationEmailAttributes"}}},"JsonApiScopedResourceNotificationEmailAttributes":{"type":"object","description":"JSON:API resource with an ownership scope (meta.scope). Used for configuration resources that can belong either to the whole tenant or to a specific legal entity (Peppol ID).","properties":{"type":{"type":"string","description":"Resource type — matches the endpoint (e.g. 'email-templates', 'notification-emails').","example":"email-templates"},"id":{"type":"string","description":"Unique resource identifier (UUID).","example":"550e8400-e29b-41d4-a716-446655440000"},"attributes":{"$ref":"#/components/schemas/NotificationEmailAttributes","description":"Resource-specific fields."},"meta":{"$ref":"#/components/schemas/JsonApiMeta","description":"Resource-level meta object carrying the ownership scope (tenant vs legal-entity)."}}},"NotificationEmailAttributes":{"type":"object","properties":{"enabled":{"type":"boolean"},"recipients":{"type":"array","items":{"type":"string"}},"frequency":{"type":"integer","format":"int32"},"language":{"type":"string"},"chainEnabled":{"type":"boolean"},"attachXml":{"type":"boolean"},"attachPdf":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"EmailTemplateAttributesRequest":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"minLength":0},"subject":{"type":"string","maxLength":500,"minLength":0},"content":{"type":"string","minLength":1},"language":{"type":"string","maxLength":2,"minLength":2}},"required":["content","name","subject"]},"JsonApiCreateDataEmailTemplateAttributesRequest":{"type":"object","description":"Resource envelope. 'attributes' holds the domain fields; 'meta.scope' declares whether the resource belongs to the whole tenant or to a specific legal entity (Peppol ID).","properties":{"type":{"type":"string","description":"JSON:API resource type. When provided, must match the resource type of the target endpoint (e.g. 'invoices' for /api/v1/documents/invoices). Optional — the server infers it from the endpoint when omitted.","example":"invoices"},"attributes":{"$ref":"#/components/schemas/EmailTemplateAttributesRequest","description":"The actual resource fields."},"meta":{"$ref":"#/components/schemas/JsonApiMeta","description":"Optional JSON:API meta. Only used by scoped resources (e.g. email templates, notification emails) to declare their ownership scope."}},"required":["attributes"]},"JsonApiCreateRequestEmailTemplateAttributesRequest":{"type":"object","description":"JSON:API-compliant envelope for creating a resource. The actual resource fields live under 'data.attributes'; ownership is declared under 'data.meta.scope'.","properties":{"data":{"$ref":"#/components/schemas/JsonApiCreateDataEmailTemplateAttributesRequest","description":"The resource envelope. Wraps the resource's attributes and its ownership scope."}},"required":["data"]},"EmailTemplateAttributes":{"type":"object","properties":{"name":{"type":"string"},"subject":{"type":"string"},"content":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"JsonApiScopedDocumentEmailTemplateAttributes":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/JsonApiScopedResourceEmailTemplateAttributes"}}},"JsonApiScopedResourceEmailTemplateAttributes":{"type":"object","description":"JSON:API resource with an ownership scope (meta.scope). Used for configuration resources that can belong either to the whole tenant or to a specific legal entity (Peppol ID).","properties":{"type":{"type":"string","description":"Resource type — matches the endpoint (e.g. 'email-templates', 'notification-emails').","example":"email-templates"},"id":{"type":"string","description":"Unique resource identifier (UUID).","example":"550e8400-e29b-41d4-a716-446655440000"},"attributes":{"$ref":"#/components/schemas/EmailTemplateAttributes","description":"Resource-specific fields."},"meta":{"$ref":"#/components/schemas/JsonApiMeta","description":"Resource-level meta object carrying the ownership scope (tenant vs legal-entity)."}}},"EmailDeliveryRequest":{"type":"object","description":"Optional email delivery configuration. Email is sent after successful Peppol transmission.","properties":{"from":{"$ref":"#/components/schemas/EmailRecipient","description":"Custom sender address. The domain's SPF record must authorize our mail server. If set, the email is sent from this address instead of noreply@bizzlink.lu, and replyTo becomes optional.","example":{"address":"invoicing@your-company.lu","name":"Your Company"}},"subject":{"type":"string","description":"Email subject with optional {{variable}} placeholders. If empty, a default subject is used: 'Invoice {{invoiceNumber}} from {{sellerName}}'","example":"Invoice {{invoiceNumber}} from {{sellerName}} - Due {{dueDate}}"},"to":{"type":"array","description":"Primary recipients (mandatory, at least one)","items":{"$ref":"#/components/schemas/EmailRecipient"},"minItems":1},"cc":{"type":"array","description":"CC recipients (optional)","items":{"$ref":"#/components/schemas/EmailRecipient"}},"bcc":{"type":"array","description":"BCC recipients (optional)","items":{"$ref":"#/components/schemas/EmailRecipient"}},"replyTo":{"$ref":"#/components/schemas/EmailRecipient","description":"Reply-To address. Required if 'from' is not set (since emails default to noreply@bizzlink.lu). Optional if 'from' is provided."},"attachments":{"type":"array","description":"Attachments to include. Valid values: 'pdf', 'xml'. Default: ['pdf']","example":["pdf"],"items":{"type":"string"}},"context":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom template variables that override or extend variables extracted from the UBL XML. Available in subject and body via {{variableName}} placeholders.","example":{"customNote":"Payment within 30 days please"}},"pdfTemplateId":{"type":"string","format":"uuid","description":"ID of a PDF template owned by the sender. If null, the default Jasper template is used."},"bodyTemplateId":{"type":"string","format":"uuid","description":"ID of an email body template owned by the sender. If null, a default body is used."}},"required":["to"]},"EmailRecipient":{"type":"object","description":"Email recipient with address and optional display name","properties":{"address":{"type":"string","format":"email","description":"Email address","example":"kunde@example.com","minLength":1},"name":{"type":"string","description":"Display name","example":"John Doe"}},"required":["address"]},"JsonApiCreateDataUblDocumentRequest":{"type":"object","description":"Resource envelope. 'attributes' holds the domain fields; 'meta.scope' declares whether the resource belongs to the whole tenant or to a specific legal entity (Peppol ID).","properties":{"type":{"type":"string","description":"JSON:API resource type. When provided, must match the resource type of the target endpoint (e.g. 'invoices' for /api/v1/documents/invoices). Optional — the server infers it from the endpoint when omitted.","example":"invoices"},"attributes":{"$ref":"#/components/schemas/UblDocumentRequest","description":"The actual resource fields."},"meta":{"$ref":"#/components/schemas/JsonApiMeta","description":"Optional JSON:API meta. Only used by scoped resources (e.g. email templates, notification emails) to declare their ownership scope."}},"required":["attributes"]},"JsonApiCreateRequestUblDocumentRequest":{"type":"object","description":"JSON:API-compliant envelope for creating a resource. The actual resource fields live under 'data.attributes'; ownership is declared under 'data.meta.scope'.","properties":{"data":{"$ref":"#/components/schemas/JsonApiCreateDataUblDocumentRequest","description":"The resource envelope. Wraps the resource's attributes and its ownership scope."}},"required":["data"]},"UblDocumentRequest":{"type":"object","description":"Request to send a UBL 2.1 Invoice or Credit Note via Peppol","properties":{"ublXml":{"type":"string","description":"UBL 2.1 Invoice or Credit Note XML content","example":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><Invoice>...</Invoice>","minLength":1},"skipValidation":{"type":"boolean","default":false,"description":"Skip Schematron validation before sending (default: false)","example":false},"emailDelivery":{"$ref":"#/components/schemas/EmailDeliveryRequest","description":"Optional email delivery after successful Peppol transmission"}},"required":["ublXml"]},"DocumentAcceptedAttributes":{"type":"object","description":"Per-rendition acknowledgement attributes. Validation runs asynchronously — poll GET /documents/{id}/status for the outcome of this specific rendition.","properties":{"processId":{"type":"string","format":"uuid","description":"Correlation id shared by all renditions produced by the same create call. Use GET /documents?processId={uuid} to retrieve sibling renditions."},"format":{"type":"string","description":"Wire format of the generated XML for this rendition.","enum":["UBL_PEPPOL_BIS_3","UBL_PINT_MY","UBL_PINT_AE","UBL_PINT_AUNZ","FATTURA_PA_1_2","FACTUR_X_1_07","XRECHNUNG_3_0","KSEF_FA_3"]},"target":{"type":"string","description":"Destination network/platform this rendition will be delivered to.","enum":["PEPPOL","SDI_IT","PPF_FR","XRECHNUNG_DE","KSEF_PL"]},"status":{"type":"string","description":"Status at the time of acknowledgement. Typically QUEUED_FOR_VALIDATION (awaiting async validation), VALID (when validation was skipped), or FAILED (on synchronous generation/conversion error).","enum":["QUEUED_FOR_VALIDATION","VALID","FAILED"],"example":"QUEUED_FOR_VALIDATION"},"xml":{"type":"string","description":"Generated XML content in the indicated format. Present when generation succeeded."}}},"JsonApiLinks":{"type":"object","description":"JSON:API navigation links for paginated collections. `prev` is null on the first page, `next` is null on the last page.","properties":{"self":{"type":"string","description":"URL of the current page.","example":"https://gateway.vigasoft.lu/bizzlink/documents?page%5Bnumber%5D=3&page%5Bsize%5D=20"},"first":{"type":"string","description":"URL of the first page.","example":"https://gateway.vigasoft.lu/bizzlink/documents?page%5Bnumber%5D=1&page%5Bsize%5D=20"},"last":{"type":"string","description":"URL of the last page.","example":"https://gateway.vigasoft.lu/bizzlink/documents?page%5Bnumber%5D=7&page%5Bsize%5D=20"},"prev":{"type":"string","description":"URL of the previous page, null on first page.","example":"https://gateway.vigasoft.lu/bizzlink/documents?page%5Bnumber%5D=2&page%5Bsize%5D=20"},"next":{"type":"string","description":"URL of the next page, null on last page.","example":"https://gateway.vigasoft.lu/bizzlink/documents?page%5Bnumber%5D=4&page%5Bsize%5D=20"}}},"JsonApiListDocumentDocumentAcceptedAttributes":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/JsonApiResourceDocumentAcceptedAttributes"}},"links":{"$ref":"#/components/schemas/JsonApiLinks"},"meta":{"$ref":"#/components/schemas/JsonApiPaginationMeta"}}},"JsonApiPaginationMeta":{"type":"object","description":"Pagination metadata for paginated collections. Per JSON:API, all meta members are implementation-specific.","properties":{"page":{"type":"integer","format":"int32","description":"1-based index of the current page.","example":1},"size":{"type":"integer","format":"int32","description":"Number of items per page.","example":20},"totalElements":{"type":"integer","format":"int64","description":"Total number of items across all pages.","example":137},"totalPages":{"type":"integer","format":"int32","description":"Total number of pages.","example":7}}},"JsonApiResourceDocumentAcceptedAttributes":{"type":"object","description":"JSON:API resource object. Carries the resource type, its identifier and its attributes.","properties":{"type":{"type":"string","description":"Resource type — matches the endpoint (e.g. 'invoices' for POST /documents/invoices, 'documents' for GET /documents/{id}/status).","example":"invoices"},"id":{"type":"string","description":"Unique resource identifier (UUID). Use this value to poll the status endpoint or to reference the resource in subsequent requests.","example":"770e8400-e29b-41d4-a716-446655440000"},"attributes":{"$ref":"#/components/schemas/DocumentAcceptedAttributes","description":"Resource-specific fields."}}},"JsonApiCreateDataObject":{"type":"object","description":"Resource envelope. 'attributes' holds the domain fields; 'meta.scope' declares whether the resource belongs to the whole tenant or to a specific legal entity (Peppol ID).","properties":{"type":{"type":"string","description":"JSON:API resource type. When provided, must match the resource type of the target endpoint (e.g. 'invoices' for /api/v1/documents/invoices). Optional — the server infers it from the endpoint when omitted.","example":"invoices"},"attributes":{"description":"The actual resource fields."},"meta":{"$ref":"#/components/schemas/JsonApiMeta","description":"Optional JSON:API meta. Only used by scoped resources (e.g. email templates, notification emails) to declare their ownership scope."}},"required":["attributes"]},"JsonApiCreateRequest":{"type":"object","description":"JSON:API-compliant envelope for creating a resource. The actual resource fields live under 'data.attributes'; ownership is declared under 'data.meta.scope'.","properties":{"data":{"$ref":"#/components/schemas/JsonApiCreateDataObject","description":"The resource envelope. Wraps the resource's attributes and its ownership scope."}},"required":["data"]},"JsonApiCreateDataValidationRequestAttributes":{"type":"object","description":"Resource envelope. 'attributes' holds the domain fields; 'meta.scope' declares whether the resource belongs to the whole tenant or to a specific legal entity (Peppol ID).","properties":{"type":{"type":"string","description":"JSON:API resource type. When provided, must match the resource type of the target endpoint (e.g. 'invoices' for /api/v1/documents/invoices). Optional — the server infers it from the endpoint when omitted.","example":"invoices"},"attributes":{"$ref":"#/components/schemas/ValidationRequestAttributes","description":"The actual resource fields."},"meta":{"$ref":"#/components/schemas/JsonApiMeta","description":"Optional JSON:API meta. Only used by scoped resources (e.g. email templates, notification emails) to declare their ownership scope."}},"required":["attributes"]},"JsonApiCreateRequestValidationRequestAttributes":{"type":"object","description":"JSON:API-compliant envelope for creating a resource. The actual resource fields live under 'data.attributes'; ownership is declared under 'data.meta.scope'.","properties":{"data":{"$ref":"#/components/schemas/JsonApiCreateDataValidationRequestAttributes","description":"The resource envelope. Wraps the resource's attributes and its ownership scope."}},"required":["data"]},"ValidationRequestAttributes":{"type":"object","description":"Attributes for a Schematron validation request.","properties":{"to_validate":{"type":"string","description":"UBL 2.1 Invoice or Credit Note XML content to validate.","example":"<?xml version=\"1.0\"?>...","minLength":1}},"required":["to_validate"]},"JsonApiDocumentValidationResultAttributes":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/JsonApiResourceValidationResultAttributes"}}},"JsonApiResourceValidationResultAttributes":{"type":"object","description":"JSON:API resource object. Carries the resource type, its identifier and its attributes.","properties":{"type":{"type":"string","description":"Resource type — matches the endpoint (e.g. 'invoices' for POST /documents/invoices, 'documents' for GET /documents/{id}/status).","example":"invoices"},"id":{"type":"string","description":"Unique resource identifier (UUID). Use this value to poll the status endpoint or to reference the resource in subsequent requests.","example":"770e8400-e29b-41d4-a716-446655440000"},"attributes":{"$ref":"#/components/schemas/ValidationResultAttributes","description":"Resource-specific fields."}}},"ValidationError":{"type":"object","description":"Schematron validation error detail","properties":{"id":{"type":"string","description":"Schematron rule ID","example":"BR-01"},"location":{"type":"string","description":"XPath location of the error in the XML","example":"/Invoice/cac:AccountingSupplierParty"},"text":{"type":"string","description":"Human-readable error message","example":"An Invoice shall have a Specification identifier"},"flag":{"type":"string","description":"Raw schematron severity flag id (e.g. fatal_error, warn)","example":"fatal_error"},"severity":{"type":"string","description":"Parsed severity; ERROR/FATAL_ERROR block sending, WARNING/INFO do not","enum":["INFO","WARNING","ERROR","FATAL_ERROR"],"example":"FATAL_ERROR"}}},"ValidationResultAttributes":{"type":"object","description":"Schematron validation result attributes.","properties":{"valid":{"type":"boolean","default":false,"description":"Whether the XML passed Schematron validation.","example":true},"errors":{"type":"array","description":"List of validation errors (empty if valid).","items":{"$ref":"#/components/schemas/ValidationError"}}}},"JsonApiRequestDataWebhookAttributesRequest":{"type":"object","properties":{"type":{"type":"string"},"id":{"type":"string"},"attributes":{"$ref":"#/components/schemas/WebhookAttributesRequest"},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}},"required":["attributes"]},"JsonApiRequestWebhookAttributesRequest":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/JsonApiRequestDataWebhookAttributesRequest"}},"required":["data"]},"JsonApiRequestDataLegalEntityCreateAttributes":{"type":"object","properties":{"type":{"type":"string"},"id":{"type":"string"},"attributes":{"$ref":"#/components/schemas/LegalEntityCreateAttributes"},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}},"required":["attributes"]},"JsonApiRequestLegalEntityCreateAttributes":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/JsonApiRequestDataLegalEntityCreateAttributes"}},"required":["data"]},"JsonApiRequestDataTenantCreateAttributes":{"type":"object","properties":{"type":{"type":"string"},"id":{"type":"string"},"attributes":{"$ref":"#/components/schemas/TenantCreateAttributes"},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}},"required":["attributes"]},"JsonApiRequestTenantCreateAttributes":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/JsonApiRequestDataTenantCreateAttributes"}},"required":["data"]},"JsonApiRequestDataNotificationEmailAttributesRequest":{"type":"object","properties":{"type":{"type":"string"},"id":{"type":"string"},"attributes":{"$ref":"#/components/schemas/NotificationEmailAttributesRequest"},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}},"required":["attributes"]},"JsonApiRequestNotificationEmailAttributesRequest":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/JsonApiRequestDataNotificationEmailAttributesRequest"}},"required":["data"]},"JsonApiRequestDataEmailTemplateAttributesRequest":{"type":"object","properties":{"type":{"type":"string"},"id":{"type":"string"},"attributes":{"$ref":"#/components/schemas/EmailTemplateAttributesRequest"},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}},"required":["attributes"]},"JsonApiRequestEmailTemplateAttributesRequest":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/JsonApiRequestDataEmailTemplateAttributesRequest"}},"required":["data"]},"JsonApiScopedListDocumentWebhookAttributes":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/JsonApiScopedResourceWebhookAttributes"}},"links":{"$ref":"#/components/schemas/JsonApiLinks"},"meta":{"$ref":"#/components/schemas/JsonApiPaginationMeta"}}},"JsonApiListDocumentTenantResponseAttributes":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/JsonApiResourceTenantResponseAttributes"}},"links":{"$ref":"#/components/schemas/JsonApiLinks"},"meta":{"$ref":"#/components/schemas/JsonApiPaginationMeta"}}},"JsonApiListDocumentLegalEntityResponseAttributes":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/JsonApiResourceLegalEntityResponseAttributes"}},"links":{"$ref":"#/components/schemas/JsonApiLinks"},"meta":{"$ref":"#/components/schemas/JsonApiPaginationMeta"}}},"JsonApiListDocumentPeppolIdResponseAttributes":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/JsonApiResourcePeppolIdResponseAttributes"}},"links":{"$ref":"#/components/schemas/JsonApiLinks"},"meta":{"$ref":"#/components/schemas/JsonApiPaginationMeta"}}},"PingResponse":{"type":"object","properties":{"status":{"type":"string"},"environment":{"type":"string"},"role":{"type":"string"},"timestamp":{"type":"string","format":"date-time"}}},"JsonApiScopedListDocumentNotificationEmailAttributes":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/JsonApiScopedResourceNotificationEmailAttributes"}},"links":{"$ref":"#/components/schemas/JsonApiLinks"},"meta":{"$ref":"#/components/schemas/JsonApiPaginationMeta"}}},"JsonApiDocumentParticipantLookupAttributes":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/JsonApiResourceParticipantLookupAttributes"}}},"JsonApiResourceParticipantLookupAttributes":{"type":"object","description":"JSON:API resource object. Carries the resource type, its identifier and its attributes.","properties":{"type":{"type":"string","description":"Resource type — matches the endpoint (e.g. 'invoices' for POST /documents/invoices, 'documents' for GET /documents/{id}/status).","example":"invoices"},"id":{"type":"string","description":"Unique resource identifier (UUID). Use this value to poll the status endpoint or to reference the resource in subsequent requests.","example":"770e8400-e29b-41d4-a716-446655440000"},"attributes":{"$ref":"#/components/schemas/ParticipantLookupAttributes","description":"Resource-specific fields."}}},"ParticipantLookupAttributes":{"type":"object","description":"Result of a Peppol participant lookup. Combines SML registration (is the participant reachable on the Peppol network) and the SMP service-group (which document types they accept) plus — if the SMP publishes one — the Peppol Directory Business Card (official name + country). The same participant ID can be registered on the production and test networks at the same time, so `environment` is a list.","properties":{"registered":{"type":"boolean","default":false,"description":"Whether the participant is registered on at least one Peppol network (PROD or TEST).","example":true},"environment":{"type":"array","description":"Which Peppol networks the participant is registered on. Possible entries: `PROD` (live network — SML `edelivery.tech.ec.europa.eu`), `TEST` (acceptance network — SML `acc.edelivery.tech.ec.europa.eu`). Empty when `registered=false`.","enum":["PROD","TEST"],"example":["PROD","TEST"],"items":{"type":"string"}},"documentTypes":{"type":"array","description":"Distinct Peppol document type identifiers the participant accepts (union across PROD and TEST). Each entry is the full URL-decoded ID, e.g. `busdox-docid-qns::urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1`.","items":{"type":"string"}},"name":{"type":"string","description":"Official company name from the Peppol Directory Business Card (if the SMP publishes one). `null` when no Business Card is available.","example":"VIGASOFT SARL-S"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code from the Peppol Directory Business Card. `null` when no Business Card is available.","example":"LU"}}},"JsonApiScopedListDocumentEmailTemplateAttributes":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/JsonApiScopedResourceEmailTemplateAttributes"}},"links":{"$ref":"#/components/schemas/JsonApiLinks"},"meta":{"$ref":"#/components/schemas/JsonApiPaginationMeta"}}},"DocumentAttributes":{"type":"object","description":"Document attributes returned when reading a document — current processing status, validation outcome, rendition metadata and timestamps.","properties":{"processId":{"type":"string","format":"uuid","description":"Correlation id shared by all renditions produced by the same create call. Use GET /documents?processId={uuid} to retrieve sibling renditions."},"format":{"type":"string","description":"Wire format of the stored XML.","enum":["UBL_PEPPOL_BIS_3","UBL_PINT_MY","UBL_PINT_AE","UBL_PINT_AUNZ","FATTURA_PA_1_2","FACTUR_X_1_07","XRECHNUNG_3_0","KSEF_FA_3"]},"target":{"type":"string","description":"Destination network/platform this rendition was/will be delivered to.","enum":["PEPPOL","SDI_IT","PPF_FR","XRECHNUNG_DE","KSEF_PL"]},"status":{"type":"string","description":"Symbolic status. Typical values: ACCEPTED, QUEUED_FOR_VALIDATION, VALID, INVALID, QUEUED_FOR_SENDING, SENT, DELIVERED, FAILED.","example":"VALID"},"errors":{"type":"array","description":"Validation errors. Populated after async Schematron validation completes with status INVALID. Null otherwise.","items":{"$ref":"#/components/schemas/ValidationError"}},"acknowledgementStatus":{"type":"string","description":"Acknowledgement outcome of a sent document: SUCCESS (AS4 receipt / positive MLS AP/AB) or FAILURE (send failure / negative MLS RE). Null until acknowledged.","example":"SUCCESS"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the document was first accepted."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of the most recent state change."}}},"JsonApiListDocumentDocumentAttributes":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/JsonApiResourceDocumentAttributes"}},"links":{"$ref":"#/components/schemas/JsonApiLinks"},"meta":{"$ref":"#/components/schemas/JsonApiPaginationMeta"}}},"JsonApiResourceDocumentAttributes":{"type":"object","description":"JSON:API resource object. Carries the resource type, its identifier and its attributes.","properties":{"type":{"type":"string","description":"Resource type — matches the endpoint (e.g. 'invoices' for POST /documents/invoices, 'documents' for GET /documents/{id}/status).","example":"invoices"},"id":{"type":"string","description":"Unique resource identifier (UUID). Use this value to poll the status endpoint or to reference the resource in subsequent requests.","example":"770e8400-e29b-41d4-a716-446655440000"},"attributes":{"$ref":"#/components/schemas/DocumentAttributes","description":"Resource-specific fields."}}},"JsonApiDocumentDocumentAttributes":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/JsonApiResourceDocumentAttributes"}}},"InvoiceDocument":{"properties":{"documentId":{"type":"string"},"issueDate":{"type":"string","format":"date"},"typeCode":{"type":"string","enum":["COMMERCIAL_INVOICE","CREDIT_NOTE","SELF_BILLED_INVOICE","SELF_BILLED_CREDIT_NOTE"]},"currency":{"type":"string","enum":["EUR","USD","CHF","GBP","JPY","CNY","AED","AFN","ALL","AMD","ANG","AOA","ARS","AUD","AWG","AZN","BAM","BBD","BDT","BGN","BHD","BIF","BMD","BND","BOB","BRL","BSD","BTN","BWP","BYN","BZD","CAD","CDF","CLP","COP","CRC","CUC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EGP","ERN","ETB","FJD","FKP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HRK","HTG","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRU","MUR","MVR","MWK","MXN","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SLE","SOS","SRD","SSP","STN","SVC","SYP","SZL","THB","TJS","TMT","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","UYU","UZS","VES","VND","VUV","WST","XAF","XCD","XDR","XOF","XPF","YER","ZAR","ZMW","ZWG"]},"accountingCurrency":{"type":"string","enum":["EUR","USD","CHF","GBP","JPY","CNY","AED","AFN","ALL","AMD","ANG","AOA","ARS","AUD","AWG","AZN","BAM","BBD","BDT","BGN","BHD","BIF","BMD","BND","BOB","BRL","BSD","BTN","BWP","BYN","BZD","CAD","CDF","CLP","COP","CRC","CUC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EGP","ERN","ETB","FJD","FKP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HRK","HTG","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRU","MUR","MVR","MWK","MXN","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SLE","SOS","SRD","SSP","STN","SVC","SYP","SZL","THB","TJS","TMT","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","UYU","UZS","VES","VND","VUV","WST","XAF","XCD","XDR","XOF","XPF","YER","ZAR","ZMW","ZWG"]},"vatPointDate":{"type":"string","format":"date"},"vatPointDateCode":{"type":"string"},"dueDate":{"type":"string","format":"date"},"buyerReference":{"type":"string"},"projectReference":{"type":"string"},"contractReference":{"type":"string"},"purchaseOrderReference":{"type":"string"},"salesOrderReference":{"type":"string"},"receivingAdviceReference":{"type":"string"},"despatchAdviceReference":{"type":"string"},"tenderOrLotReference":{"type":"string"},"invoicedObjectIdentifier":{"type":"string"},"buyerAccountingReference":{"type":"string"},"paymentTermsText":{"type":"string"},"note":{"type":"string"},"businessProcessType":{"type":"string"},"precedingInvoiceReference":{"type":"string"},"precedingInvoiceDate":{"type":"string","format":"date"},"seller":{"$ref":"#/components/schemas/Party"},"buyer":{"$ref":"#/components/schemas/Party"},"delivery":{"$ref":"#/components/schemas/Delivery"},"payment":{"$ref":"#/components/schemas/PaymentInfo"},"documentLevelAllowances":{"type":"array","items":{"$ref":"#/components/schemas/Allowance"}},"documentLevelCharges":{"type":"array","items":{"$ref":"#/components/schemas/Charge"}},"taxBreakdown":{"type":"array","items":{"$ref":"#/components/schemas/TaxBreakdown"}},"prepaidAmount":{"$ref":"#/components/schemas/Money"},"lines":{"type":"array","items":{"$ref":"#/components/schemas/LineItem"}},"additionalIdentifiers":{"type":"object","additionalProperties":{"type":"string"}},"fatturaPa":{"$ref":"#/components/schemas/FatturaPaExtensions"},"xrechnung":{"$ref":"#/components/schemas/XRechnungExtensions"},"facturX":{"$ref":"#/components/schemas/FacturXExtensions"},"peppol":{"$ref":"#/components/schemas/PeppolExtensions"},"attachments":{"type":"array","items":{"$ref":"#/components/schemas/Attachment"}}}},"Address":{"properties":{"street1":{"type":"string"},"street2":{"type":"string"},"additionalStreet":{"type":"string"},"city":{"type":"string"},"postCode":{"type":"string"},"countrySubdivision":{"type":"string"},"countryCode":{"type":"string","enum":["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW"]}}},"Allowance":{"properties":{"amount":{"$ref":"#/components/schemas/Money"},"baseAmount":{"$ref":"#/components/schemas/Money"},"percentage":{"type":"number"},"vatCategoryCode":{"type":"string","enum":["S","Z","E","AE","K","G","O","L","M","SA","SE","HVG","LVG","TTX"]},"vatRate":{"type":"number"},"reasonText":{"type":"string"},"reasonCode":{"type":"string"}}},"Attachment":{"properties":{"filename":{"type":"string"},"contentType":{"type":"string"},"content":{"type":"string"},"description":{"type":"string"}}},"BankAccount":{"properties":{"iban":{"type":"string"},"accountName":{"type":"string"},"bic":{"type":"string"}}},"Charge":{"properties":{"amount":{"$ref":"#/components/schemas/Money"},"baseAmount":{"$ref":"#/components/schemas/Money"},"percentage":{"type":"number"},"vatCategoryCode":{"type":"string","enum":["S","Z","E","AE","K","G","O","L","M","SA","SE","HVG","LVG","TTX"]},"vatRate":{"type":"number"},"reasonText":{"type":"string"},"reasonCode":{"type":"string"}}},"Contact":{"properties":{"name":{"type":"string"},"telephone":{"type":"string"},"email":{"type":"string"}}},"Delivery":{"properties":{"deliveryDate":{"type":"string","format":"date"},"locationIdentifier":{"type":"string"},"locationIdentifierSchemeId":{"type":"string"},"address":{"$ref":"#/components/schemas/Address"},"partyName":{"type":"string"}}},"FacturXExtensions":{"properties":{"profile":{"type":"string","enum":["MINIMUM","BASIC_WL","BASIC","EN16931","EXTENDED"]},"renderHumanReadablePdf":{"type":"boolean"}}},"FatturaPaContractRef":{"properties":{"idDocumento":{"type":"string"},"data":{"type":"string","format":"date"},"codiceCUP":{"type":"string"},"codiceCIG":{"type":"string"}}},"FatturaPaDdtRef":{"properties":{"numeroDdt":{"type":"string"},"dataDdt":{"type":"string","format":"date"}}},"FatturaPaExtensions":{"properties":{"tipoDocumento":{"type":"string","enum":["TD01","TD02","TD03","TD04","TD05","TD06","TD16","TD17","TD18","TD19","TD20","TD24","TD25","TD26","TD27","TD28","TD29"]},"regimeFiscale":{"type":"string","enum":["RF01","RF02","RF04","RF05","RF06","RF07","RF08","RF09","RF10","RF11","RF12","RF13","RF14","RF15","RF16","RF17","RF18","RF19"]},"esigibilitaIVA":{"type":"string","enum":["I","D","S"]},"codiceDestinatario":{"type":"string"},"pecDestinatario":{"type":"string"},"codiceFiscaleSender":{"type":"string"},"naturaPerTaxBreakdown":{"type":"array","items":{"type":"string","enum":["N1","N2_1","N2_2","N3_1","N3_2","N3_3","N3_4","N3_5","N3_6","N4","N5","N6_1","N6_2","N6_3","N6_4","N6_5","N6_6","N6_7","N6_8","N6_9","N7"]}},"datiContratto":{"$ref":"#/components/schemas/FatturaPaContractRef"},"datiDdt":{"$ref":"#/components/schemas/FatturaPaDdtRef"},"modalitaPagamento":{"type":"string","enum":["MP01","MP02","MP03","MP04","MP05","MP06","MP07","MP08","MP09","MP12","MP19","MP20","MP21","MP22","MP23"]},"splitPayment":{"type":"boolean"}}},"LeitwegId":{"properties":{"value":{"type":"string"}}},"LineItem":{"properties":{"id":{"type":"string"},"note":{"type":"string"},"objectIdentifier":{"type":"string"},"quantity":{"type":"number"},"unitCode":{"type":"string","enum":["C62","EA","KGM","GRM","TNE","MTR","CMT","MMT","MTK","CMK","MTQ","LTR","MLT","HUR","DAY","WEE","MON","ANN","MIN","SEC","SET","PR","BX","PA","RO","PK","WHR","KWH","MWH","KJO","MGJ","P1","NX"]},"purchaseOrderLineRef":{"type":"string"},"buyerAccountingRef":{"type":"string"},"periodStart":{"type":"string","format":"date"},"periodEnd":{"type":"string","format":"date"},"allowances":{"type":"array","items":{"$ref":"#/components/schemas/Allowance"}},"charges":{"type":"array","items":{"$ref":"#/components/schemas/Charge"}},"netUnitPrice":{"$ref":"#/components/schemas/Money"},"priceDiscount":{"$ref":"#/components/schemas/Money"},"grossPrice":{"$ref":"#/components/schemas/Money"},"priceBaseQuantity":{"type":"number"},"priceBaseQuantityUnit":{"type":"string","enum":["C62","EA","KGM","GRM","TNE","MTR","CMT","MMT","MTK","CMK","MTQ","LTR","MLT","HUR","DAY","WEE","MON","ANN","MIN","SEC","SET","PR","BX","PA","RO","PK","WHR","KWH","MWH","KJO","MGJ","P1","NX"]},"vatCategoryCode":{"type":"string","enum":["S","Z","E","AE","K","G","O","L","M","SA","SE","HVG","LVG","TTX"]},"vatRate":{"type":"number"},"itemName":{"type":"string"},"itemDescription":{"type":"string"},"sellerItemId":{"type":"string"},"buyerItemId":{"type":"string"},"standardItemId":{"type":"string"},"classificationId":{"type":"string"},"countryOfOrigin":{"type":"string","enum":["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW"]},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/NameValue"}}}},"Money":{"properties":{"amount":{"type":"number"},"currency":{"type":"string","enum":["EUR","USD","CHF","GBP","JPY","CNY","AED","AFN","ALL","AMD","ANG","AOA","ARS","AUD","AWG","AZN","BAM","BBD","BDT","BGN","BHD","BIF","BMD","BND","BOB","BRL","BSD","BTN","BWP","BYN","BZD","CAD","CDF","CLP","COP","CRC","CUC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EGP","ERN","ETB","FJD","FKP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HRK","HTG","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRU","MUR","MVR","MWK","MXN","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SLE","SOS","SRD","SSP","STN","SVC","SYP","SZL","THB","TJS","TMT","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","UYU","UZS","VES","VND","VUV","WST","XAF","XCD","XDR","XOF","XPF","YER","ZAR","ZMW","ZWG"]}}},"NameValue":{"properties":{"name":{"type":"string"},"value":{"type":"string"}}},"Party":{"properties":{"name":{"type":"string"},"tradingName":{"type":"string"},"identifier":{"type":"string"},"legalRegistrationId":{"type":"string"},"vatId":{"type":"string"},"taxRegistration":{"type":"string"},"additionalLegalInfo":{"type":"string"},"electronicAddress":{"type":"string"},"electronicAddressSchemeId":{"type":"string","enum":["0002","0007","0009","0060","0088","0096","0097","0106","0130","0135","0142","0151","0183","0184","0188","0190","0192","0195","0196","0198","0199","0200","0201","0204","0208","0209","0210","0211","0216","0218","0221","0225","0230","0235","0240","0242","0244","0245","0246","0248","9910","9913","9914","9915","9918","9919","9920","9922","9923","9924","9925","9926","9927","9928","9929","9930","9931","9932","9933","9934","9935","9936","9937","9938","9939","9940","9941","9942","9943","9944","9945","9946","9947","9948","9949","9950","9951","9952","9953","9957","9959"]},"address":{"$ref":"#/components/schemas/Address"},"contact":{"$ref":"#/components/schemas/Contact"}}},"PaymentInfo":{"properties":{"paymentMeansCode":{"type":"string","enum":["NOT_DEFINED","AUTOMATED_CLEARING_HOUSE_CREDIT","AUTOMATED_CLEARING_HOUSE_DEBIT","IN_CASH","BANKERS_DRAFT","CERTIFIED_BANKERS_DRAFT","BANK_GIRO","CHEQUE","REGULAR_BANK_TRANSFER","HOME_BANKING","CREDIT_TRANSFER","DEBIT_TRANSFER","PAYMENT_BY_POSTAL_GIRO","BANKERS_DRAFT_BANK_CHEQUE","INTERBANK_DEBIT_TRANSFER","BANK_CARD","DIRECT_DEBIT","PAYMENT_BY_POSTGIRO","BANKGIRO","SEPA_CREDIT_TRANSFER","SEPA_DIRECT_DEBIT","PROMISSORY_NOTE","ONLINE_PAYMENT_SERVICE","CLEARING_BETWEEN_PARTNERS"]},"paymentMeansText":{"type":"string"},"remittanceInformation":{"type":"string"},"accounts":{"type":"array","items":{"$ref":"#/components/schemas/BankAccount"}}}},"PeppolExtensions":{"properties":{"senderSchemeIdOverride":{"type":"string","enum":["0002","0007","0009","0060","0088","0096","0097","0106","0130","0135","0142","0151","0183","0184","0188","0190","0192","0195","0196","0198","0199","0200","0201","0204","0208","0209","0210","0211","0216","0218","0221","0225","0230","0235","0240","0242","0244","0245","0246","0248","9910","9913","9914","9915","9918","9919","9920","9922","9923","9924","9925","9926","9927","9928","9929","9930","9931","9932","9933","9934","9935","9936","9937","9938","9939","9940","9941","9942","9943","9944","9945","9946","9947","9948","9949","9950","9951","9952","9953","9957","9959"]},"receiverSchemeIdOverride":{"type":"string","enum":["0002","0007","0009","0060","0088","0096","0097","0106","0130","0135","0142","0151","0183","0184","0188","0190","0192","0195","0196","0198","0199","0200","0201","0204","0208","0209","0210","0211","0216","0218","0221","0225","0230","0235","0240","0242","0244","0245","0246","0248","9910","9913","9914","9915","9918","9919","9920","9922","9923","9924","9925","9926","9927","9928","9929","9930","9931","9932","9933","9934","9935","9936","9937","9938","9939","9940","9941","9942","9943","9944","9945","9946","9947","9948","9949","9950","9951","9952","9953","9957","9959"]},"profileIdOverride":{"type":"string"}}},"TaxBreakdown":{"properties":{"categoryCode":{"type":"string","enum":["S","Z","E","AE","K","G","O","L","M","SA","SE","HVG","LVG","TTX"]},"rate":{"type":"number"},"taxableAmount":{"$ref":"#/components/schemas/Money"},"exemptionReasonText":{"type":"string"},"exemptionReasonCode":{"type":"string"}}},"XRechnungExtensions":{"properties":{"leitwegId":{"$ref":"#/components/schemas/LeitwegId"},"b2gMode":{"type":"boolean"}}},"CreditNoteDocument":{"properties":{"documentId":{"type":"string"},"issueDate":{"type":"string","format":"date"},"typeCode":{"type":"string","enum":["COMMERCIAL_INVOICE","CREDIT_NOTE","SELF_BILLED_INVOICE","SELF_BILLED_CREDIT_NOTE"]},"currency":{"type":"string","enum":["EUR","USD","CHF","GBP","JPY","CNY","AED","AFN","ALL","AMD","ANG","AOA","ARS","AUD","AWG","AZN","BAM","BBD","BDT","BGN","BHD","BIF","BMD","BND","BOB","BRL","BSD","BTN","BWP","BYN","BZD","CAD","CDF","CLP","COP","CRC","CUC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EGP","ERN","ETB","FJD","FKP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HRK","HTG","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRU","MUR","MVR","MWK","MXN","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SLE","SOS","SRD","SSP","STN","SVC","SYP","SZL","THB","TJS","TMT","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","UYU","UZS","VES","VND","VUV","WST","XAF","XCD","XDR","XOF","XPF","YER","ZAR","ZMW","ZWG"]},"accountingCurrency":{"type":"string","enum":["EUR","USD","CHF","GBP","JPY","CNY","AED","AFN","ALL","AMD","ANG","AOA","ARS","AUD","AWG","AZN","BAM","BBD","BDT","BGN","BHD","BIF","BMD","BND","BOB","BRL","BSD","BTN","BWP","BYN","BZD","CAD","CDF","CLP","COP","CRC","CUC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EGP","ERN","ETB","FJD","FKP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HRK","HTG","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRU","MUR","MVR","MWK","MXN","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SLE","SOS","SRD","SSP","STN","SVC","SYP","SZL","THB","TJS","TMT","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","UYU","UZS","VES","VND","VUV","WST","XAF","XCD","XDR","XOF","XPF","YER","ZAR","ZMW","ZWG"]},"vatPointDate":{"type":"string","format":"date"},"vatPointDateCode":{"type":"string"},"dueDate":{"type":"string","format":"date"},"buyerReference":{"type":"string"},"projectReference":{"type":"string"},"contractReference":{"type":"string"},"purchaseOrderReference":{"type":"string"},"salesOrderReference":{"type":"string"},"receivingAdviceReference":{"type":"string"},"despatchAdviceReference":{"type":"string"},"tenderOrLotReference":{"type":"string"},"invoicedObjectIdentifier":{"type":"string"},"buyerAccountingReference":{"type":"string"},"paymentTermsText":{"type":"string"},"note":{"type":"string"},"businessProcessType":{"type":"string"},"originalInvoiceNumber":{"type":"string"},"originalInvoiceDate":{"type":"string","format":"date"},"creditNoteReasonCode":{"type":"string"},"seller":{"$ref":"#/components/schemas/Party"},"buyer":{"$ref":"#/components/schemas/Party"},"delivery":{"$ref":"#/components/schemas/Delivery"},"payment":{"$ref":"#/components/schemas/PaymentInfo"},"documentLevelAllowances":{"type":"array","items":{"$ref":"#/components/schemas/Allowance"}},"documentLevelCharges":{"type":"array","items":{"$ref":"#/components/schemas/Charge"}},"taxBreakdown":{"type":"array","items":{"$ref":"#/components/schemas/TaxBreakdown"}},"prepaidAmount":{"$ref":"#/components/schemas/Money"},"lines":{"type":"array","items":{"$ref":"#/components/schemas/LineItem"}},"additionalIdentifiers":{"type":"object","additionalProperties":{"type":"string"}},"fatturaPa":{"$ref":"#/components/schemas/FatturaPaExtensions"},"xrechnung":{"$ref":"#/components/schemas/XRechnungExtensions"},"facturX":{"$ref":"#/components/schemas/FacturXExtensions"},"peppol":{"$ref":"#/components/schemas/PeppolExtensions"},"attachments":{"type":"array","items":{"$ref":"#/components/schemas/Attachment"}}}},"BusinessDocument":{"description":"Polymorphic standard-agnostic invoice document. Pick the concrete shape via the @type discriminator: 'InvoiceDocument' (commercial invoice / corrected / prepayment / self-billed) or 'CreditNoteDocument' (credit note with mandatory reference to the original invoice).","discriminator":{"propertyName":"@type","mapping":{"InvoiceDocument":"#/components/schemas/InvoiceDocument","CreditNoteDocument":"#/components/schemas/CreditNoteDocument"}},"oneOf":[{"$ref":"#/components/schemas/InvoiceDocument"},{"$ref":"#/components/schemas/CreditNoteDocument"}]}},"securitySchemes":{"BearerAuth":{"type":"http","description":"API Token from Settings → API Keys","scheme":"bearer","bearerFormat":"JWE"},"HmacSignature":{"type":"apiKey","description":"HMAC-SHA256 signature: t={timestamp},v1={hmac}","name":"X-Bizzlink-Signature","in":"header"}}}}