# 📄 Submit invoice file (Factur-X, UBL, CII)

Submit an invoice file for outbound Peppol transmission.
Supported formats:
- Factur-X: Franco-German e-invoicing standard (EN16931 compliant)
- UBL: Universal Business Language XML (Peppol BIS 3.0)
- CII: Cross Industry Invoice XML (EN16931)

The returned `invoice_id` can be used with `/lifecycle-events` to track
lifecycle updates.

Endpoint: POST /invoicing/files/submit
Version: 0.29.6
Security: APIKeyHeader

## Header parameters:

  - `X-PDP-Client-Id` (string, required)
    ID of the PDP Client for which the operation is performed

## Request fields (multipart/form-data):

  - `file` (string, required)
    Invoice file (FacturX PDF, UBL XML or CII XML)

## Response 201 fields (application/json):

  - `invoice_id` (string, required)
    Generated invoice ID

  - `status` (string, required)
    Invoice lifecycle status.
Aligned with DGFIP e-invoicing status codes (statuts de cycle de vie):
- **draft** — Pre-submission state
- **submitted** (200) — Invoice deposited and validated by the sending PDP *(mandatory)*
- **received** (202) — Invoice received by the receiving PDP
- **processed** — Invoice accepted for routing
- **accepted** (205) — Recipient accepted the invoice
- **partially_accepted** (206) — Recipient approved only part of the invoice
- **refused** (210) — Recipient refused the invoice *(mandatory)*
- **paid** (211) — Buyer marked the invoice as paid
- **rejected** (213) — PDP detected an anomaly on the invoice *(mandatory)*
- **cashed** (212) — Supplier confirmed receipt of payment *(mandatory)*
    Enum: "draft", "submitted", "received", "processed", "accepted", "partially_accepted", "refused", "paid", "rejected", "cashed"

  - `file_name` (string, required)
    Original file name

  - `file_size` (integer, required)
    File size in bytes

  - `extracted_data` (any)
    Summary of the submitted invoice

  - `extracted_data.invoice_id` (string, required)

  - `extracted_data.invoice_number` (any)

  - `extracted_data.type_code` (any)

  - `extracted_data.status` (any)

  - `extracted_data.direction` (any)

  - `extracted_data.original_invoice_type` (string, required)
    Enum: "CII_EN16931_FR", "CII_EXTENDED_CTC_FR", "UBL_EN16931_FR", "UBL_EXTENDED_CTC_FR", "UBL_BIS3", "FACTURX_BASICWL", "FACTURX_EN16931", "FACTURX_EXTENDED", "UNKNOWN"

  - `extracted_data.seller` (object, required)

  - `extracted_data.seller.name` (any, required)

  - `extracted_data.seller.peppol_id` (any)

  - `extracted_data.buyer_reference` (any)

  - `extracted_data.currency_code` (any)

  - `extracted_data.total_amount` (any)

  - `extracted_data.issue_date` (any)

  - `extracted_data.seller_identifier` (any)

  - `extracted_data.seller_identifier_scheme` (any)

  - `extracted_data.buyer_identifier` (any)

  - `extracted_data.buyer_legal_registration_id` (any)

  - `extracted_data.created_at` (any)

  - `extracted_data.status_details` (any)
    Typed status-transition details; shape depends on `status`.

  - `extracted_data.status_details.PeppolSendingFailed` (any)

  - `extracted_data.status_details.NotPeppolRoutable` (any)

  - `extracted_data.status_details.InvoiceSerializationFailed` (any)

  - `extracted_data.status_details.InvalidInputError` (any)

  - `extracted_data.status_details.reason_code` (any)
    Deposit reason code (MDT-113); NON_TRANSMISE when the recipient is not reachable.

  - `extracted_data.status_details.reason_text` (any)
    Deposit reason label (MDT-114).

  - `extracted_data.status_details.approval_reason_code` (any)
    Partial-approval motive (MDT-113); present only on a partial approval (206).

  - `extracted_data.status_details.approval_reason_text` (any)
    Partial-approval motive label (MDT-114).

  - `extracted_data.status_details.approval_amounts` (any)
    Approved and unapproved amounts (MDG-43); present only on a partial approval.

  - `extracted_data.status_details.approval_amounts.type` (any)
    Amount type (MDT-207): MAP/MAPTTC/MNA/MNATTC.

  - `extracted_data.status_details.approval_amounts.amount` (any)
    The amount (MDT-215, G7.07).

  - `extracted_data.status_details.approval_amounts.tax_rate` (any)
    VAT rate the amount applies to, as a percentage (MDT-224, G1.24).

  - `extracted_data.status_details.comment` (any)
    Free-text note attached to the acceptance (MDT-126).

  - `extracted_data.status_details.refusal_reason_code` (any)
    Refusal reason code (MDT-113).

  - `extracted_data.status_details.refusal_reason_text` (any)
    Refusal reason label (MDT-114).

  - `extracted_data.status_details.refusal_comment` (any)
    Comment explaining the refusal (MDT-126).

  - `extracted_data.status_details.rejection_reason_code` (any, required)
    Deprecated alias of refusal_reason_code.

  - `extracted_data.status_details.rejection_reason_text` (any, required)
    Deprecated alias of refusal_reason_text.

  - `extracted_data.status_details.rejection_comment` (any, required)
    Deprecated alias of refusal_comment.

  - `extracted_data.status_details.rejection_reason_code` (any)
    Rejection reason code (MDT-113).

  - `extracted_data.status_details.rejection_reason_text` (any)
    Rejection reason label (MDT-114).

  - `extracted_data.status_details.rejection_comment` (any)
    Comment explaining the rejection (MDT-126).

  - `extracted_data.status_details.payment_amount` (any)
    Amount paid, plain notation (MDT-215, G7.07). Absent when full payment was reported.

  - `extracted_data.status_details.payment_tax_rate` (any)
    VAT rate the payment applies to, as a percentage (MDT-224, G1.24).

  - `extracted_data.status_details.payment_date` (any)
    Date the payment was made, as YYYYMMDD text.

  - `extracted_data.status_details.comment` (any)
    Free-text note attached to the payment (MDT-126).

  - `extracted_data.status_details.payment_breakdowns` (any)
    Per-VAT-rate collected amounts (MDG-43, G7.45).

  - `extracted_data.status_details.payment_breakdowns.amount` (any)
    Amount collected incl. VAT for this rate, plain notation (MDT-215, G7.07).

  - `extracted_data.status_details.payment_breakdowns.tax_rate` (any)
    VAT rate this amount applies to, as a percentage (MDT-224, G1.24).

  - `extracted_data.status_details.comment` (any)
    Free-text note attached to the cash receipt (MDT-126).

  - `en16931_invoice` (any)
    Complete EN16931-compliant invoice if processing succeeded

  - `en16931_invoice.specification_identifier` (string)
    Specification identifier (BT-24)

  - `en16931_invoice.issue_date` (string, required)
    Invoice issue date (BT-2)

  - `en16931_invoice.due_date` (any)
    Payment due date (BT-9)

  - `en16931_invoice.type_code` (string, required)
    Enum: "380", "381", "383", "384", "389"

  - `en16931_invoice.currency_code` (string, required)
    Invoice currency code (BT-5) - ISO 4217

  - `en16931_invoice.tax_currency_code` (any)
    VAT accounting currency code (BT-6) - ISO 4217

  - `en16931_invoice.tax_point_date` (any)
    Tax point date (BT-7)

  - `en16931_invoice.value_added_tax_point_date` (any)
    Value added tax point date (BT-8)

  - `en16931_invoice.business_process_type` (any)
    Business process type (BT-23)

  - `en16931_invoice.buyer_reference` (any)
    Buyer reference (BT-10) - An identifier assigned by the buyer used for internal routing. Either buyer_reference or purchase_order_reference must be provided.

  - `en16931_invoice.purchase_order_reference` (any)
    Purchase order reference (BT-13)

  - `en16931_invoice.sales_order_reference` (any)
    Sales order reference (BT-14)

  - `en16931_invoice.receiving_advice_reference` (any)
    Receiving advice reference (BT-15)

  - `en16931_invoice.despatch_advice_reference` (any)
    Despatch advice reference (BT-16)

  - `en16931_invoice.tender_or_lot_reference` (any)
    Tender or lot reference (BT-17)

  - `en16931_invoice.invoice_object_identifier` (any)
    Invoiced object identifier (BT-18)

  - `en16931_invoice.buyer_accounting_reference` (any)
    Buyer accounting reference (BT-19)

  - `en16931_invoice.project_reference` (any)
    Project reference (BT-11)

  - `en16931_invoice.contract_reference` (any)
    Contract reference (BT-12)

  - `en16931_invoice.seller` (object, required)
    Seller party information (BG-4).

  - `en16931_invoice.seller.name` (string, required)
    Seller name

  - `en16931_invoice.seller.postal_address` (object, required)

  - `en16931_invoice.seller.postal_address.street_name` (any)

  - `en16931_invoice.seller.postal_address.additional_street_name` (any)

  - `en16931_invoice.seller.postal_address.city_name` (string, required)

  - `en16931_invoice.seller.postal_address.postal_zone` (any)

  - `en16931_invoice.seller.postal_address.country_subdivision` (any)

  - `en16931_invoice.seller.postal_address.country_code` (string, required)
    ISO 3166-1 alpha-2 country code

  - `en16931_invoice.seller.electronic_address` (any)

  - `en16931_invoice.seller.electronic_address.scheme_id` (string, required)
    Electronic address scheme identifier

  - `en16931_invoice.seller.electronic_address.value` (string, required)
    Electronic address

  - `en16931_invoice.seller.tax_registrations` (any)

  - `en16931_invoice.seller.tax_registrations.scheme_id` (string, required)
    Tax registration scheme (e.g., 'VAT')

  - `en16931_invoice.seller.tax_registrations.value` (string, required)
    Tax registration number

  - `en16931_invoice.seller.legal_registration_name` (any)

  - `en16931_invoice.seller.trading_name` (any)

  - `en16931_invoice.seller.party_identifier` (any)
    Party identifier

  - `en16931_invoice.seller.party_identifier_scheme` (any)
    Party identifier scheme

  - `en16931_invoice.seller.seller_identifier` (any)
    Seller identifier (BT-29)

  - `en16931_invoice.seller.seller_identifier_scheme` (any)
    Seller identifier scheme

  - `en16931_invoice.seller.seller_vat_identifier` (any)
    Seller VAT identifier (BT-31)

  - `en16931_invoice.seller.seller_tax_registration_identifier` (any)
    Seller tax registration identifier (BT-32)

  - `en16931_invoice.seller.seller_additional_legal_information` (any)
    Seller additional legal information (BT-33)

  - `en16931_invoice.buyer` (object, required)
    Buyer party information (BG-7).

  - `en16931_invoice.buyer.name` (string, required)
    Buyer name

  - `en16931_invoice.buyer.electronic_address` (any)

  - `en16931_invoice.buyer.tax_registrations` (any)

  - `en16931_invoice.buyer.legal_registration_name` (any)

  - `en16931_invoice.buyer.trading_name` (any)

  - `en16931_invoice.buyer.party_identifier` (any)
    Party identifier

  - `en16931_invoice.buyer.party_identifier_scheme` (any)
    Party identifier scheme

  - `en16931_invoice.buyer.buyer_identifier` (any)
    Buyer identifier (BT-46)

  - `en16931_invoice.buyer.buyer_identifier_scheme` (any)
    Buyer identifier scheme

  - `en16931_invoice.buyer.buyer_legal_registration_identifier` (any)
    Buyer legal registration identifier (BT-47)

  - `en16931_invoice.buyer.buyer_vat_identifier` (any)
    Buyer VAT identifier (BT-48)

  - `en16931_invoice.payee` (any)
    Payee party (BG-10)

  - `en16931_invoice.payee.name` (string, required)
    Payee name (BT-59)

  - `en16931_invoice.payee.identifier` (any)
    Payee identifier (BT-60)

  - `en16931_invoice.payee.identifier_scheme` (any)
    Payee identifier scheme

  - `en16931_invoice.payee.legal_registration_id` (any)
    Payee legal registration identifier (BT-61)

  - `en16931_invoice.payee.legal_registration_id_scheme` (any)
    Payee legal registration identifier scheme (BT-61 schemeID)

  - `en16931_invoice.seller_tax_representative` (any)
    Seller tax representative party (BG-11)

  - `en16931_invoice.seller_tax_representative.name` (string, required)
    Seller tax representative name (BT-62)

  - `en16931_invoice.seller_tax_representative.vat_identifier` (any)
    Seller tax representative VAT identifier (BT-63)

  - `en16931_invoice.invoice_lines` (array, required)
    Invoice lines (BG-25)

  - `en16931_invoice.invoice_lines.line_id` (string, required)
    Invoice line identifier

  - `en16931_invoice.invoice_lines.invoiced_quantity` (string, required)
    Invoiced quantity

  - `en16931_invoice.invoice_lines.unit_of_measure` (string, required)
    Unit of measure code (BT-130) - Must be valid UN/ECE Recommendation 20 code (BR-CL-23). Common codes: C62 (unit/piece), HUR (hour), DAY (day), MON (month), MTR (meter), KGM (kilogram), LTR (liter)

  - `en16931_invoice.invoice_lines.line_net_amount` (string, required)
    Invoice line net amount

  - `en16931_invoice.invoice_lines.item_name` (string, required)
    Item name

  - `en16931_invoice.invoice_lines.item_description` (any)

  - `en16931_invoice.invoice_lines.item_seller_identifier` (any)
    Item Seller's identifier (BT-155)

  - `en16931_invoice.invoice_lines.item_buyer_identifier` (any)
    Item Buyer's identifier (BT-156)

  - `en16931_invoice.invoice_lines.item_standard_identifier` (any)
    Item standard identifier (BT-157), e.g. GTIN

  - `en16931_invoice.invoice_lines.item_standard_identifier_scheme` (any)
    Scheme identifier for BT-157 (BT-157-1), e.g. 0160 for GTIN

  - `en16931_invoice.invoice_lines.item_classification_identifiers` (any)
    Item classification identifiers (BT-158), e.g. UNSPSC codes

  - `en16931_invoice.invoice_lines.item_price` (string, required)
    Item net price

  - `en16931_invoice.invoice_lines.item_price_discount` (any)
    Item price discount (BT-147) - subtracted from the gross price (BT-148) to obtain the net price (BT-146). Requires item_gross_price.

  - `en16931_invoice.invoice_lines.item_gross_price` (any)
    Item gross price (BT-148) - the unit price before the item price discount (BT-147)

  - `en16931_invoice.invoice_lines.item_price_base_quantity` (any)
    Item price base quantity (BT-149) - The number of item units to which the price applies. When set, line_net_amount = (invoiced_quantity × item_price) / item_price_base_quantity. Useful for prices expressed per 100 or 1000 units to avoid rounding errors. Defaults to 1.

  - `en16931_invoice.invoice_lines.item_price_base_quantity_unit` (any)
    Item price base quantity unit of measure code (BT-150). Must be a valid UN/ECE Recommendation 20 code. Defaults to unit_of_measure if not set.

  - `en16931_invoice.invoice_lines.vat_category_code` (string, required)
    VAT category code (BT-118), the UNTDID 5305 subset rule G2.31 accepts.

The two remaining UNTDID 5305 entries, L (Canary Islands) and M (Ceuta and Melilla), are
excluded: G2.31 lists them as not relevant to France.
    Enum: "S", "Z", "E", "AE", "K", "G", "O"

  - `en16931_invoice.invoice_lines.vat_rate` (any)
    VAT rate as percentage

  - `en16931_invoice.invoice_lines.allowances` (any)
    Invoice line allowances (BG-27) — per-line commercial discounts. Each amount (BT-136) is subtracted from the line net amount; the discount nature is implicit in this list.

  - `en16931_invoice.invoice_lines.allowances.amount` (string, required)
    Invoice line allowance amount (BT-136)

  - `en16931_invoice.invoice_lines.allowances.base_amount` (any)
    Invoice line allowance base amount (BT-137)

  - `en16931_invoice.invoice_lines.allowances.percentage` (any)
    Invoice line allowance percentage (BT-138)

  - `en16931_invoice.invoice_lines.allowances.reason` (any)
    Invoice line allowance reason (BT-139)

  - `en16931_invoice.invoice_lines.allowances.reason_code` (any)
    Invoice line allowance reason code (BT-140), from UNTDID 5189

  - `en16931_invoice.invoice_lines.charges` (any)
    Invoice line charges (BG-28) — per-line surcharges or assimilated taxes (e.g. eco-contribution). Each amount (BT-141) is added to the line net amount.

  - `en16931_invoice.invoice_lines.charges.amount` (string, required)
    Invoice line charge amount (BT-141)

  - `en16931_invoice.invoice_lines.charges.base_amount` (any)
    Invoice line charge base amount (BT-142)

  - `en16931_invoice.invoice_lines.charges.percentage` (any)
    Invoice line charge percentage (BT-143)

  - `en16931_invoice.invoice_lines.charges.reason` (any)
    Invoice line charge reason (BT-144)

  - `en16931_invoice.invoice_lines.charges.reason_code` (any)
    Invoice line charge reason code (BT-145), from UNTDID 7161

  - `en16931_invoice.vat_breakdowns` (array, required)
    VAT breakdown (BG-23)

  - `en16931_invoice.vat_breakdowns.rate` (any)
    VAT rate as percentage

  - `en16931_invoice.vat_breakdowns.taxable_amount` (string, required)
    VAT taxable amount

  - `en16931_invoice.vat_breakdowns.tax_amount` (string, required)
    VAT amount

  - `en16931_invoice.vat_breakdowns.exemption_reason` (any)

  - `en16931_invoice.vat_breakdowns.exemption_reason_code` (any)
    VAT exemption reason code (BT-121), e.g. a CEF VATEX code

  - `en16931_invoice.document_totals` (object, required)

  - `en16931_invoice.document_totals.sum_of_line_net_amounts` (string, required)
    Sum of Invoice line net amount (BT-106)

  - `en16931_invoice.document_totals.sum_of_allowances` (any)
    Sum of allowances on document level

  - `en16931_invoice.document_totals.sum_of_charges` (any)
    Sum of charges on document level

  - `en16931_invoice.document_totals.invoice_total_without_vat` (string, required)
    Invoice total amount without VAT (BT-109)

  - `en16931_invoice.document_totals.invoice_total_vat_amount` (string, required)
    Invoice total VAT amount (BT-110)

  - `en16931_invoice.document_totals.invoice_total_with_vat` (string, required)
    Invoice total amount with VAT (BT-112)

  - `en16931_invoice.document_totals.paid_amount` (any)
    Paid amount

  - `en16931_invoice.document_totals.rounding_amount` (any)
    Rounding amount

  - `en16931_invoice.document_totals.amount_due_for_payment` (string, required)
    Amount due for payment (BT-115)

  - `en16931_invoice.payment_terms` (any)
    Payment instructions (BG-16)

  - `en16931_invoice.payment_terms.description` (any)
    Payment terms text (BT-20)

  - `en16931_invoice.payment_terms.due_date` (any)

  - `en16931_invoice.payment_means_type_code` (any)
    Payment means type code (BT-81)

  - `en16931_invoice.payment_means_text` (any)
    Payment means text (BT-82)

  - `en16931_invoice.remittance_information` (any)
    Remittance information (BT-83)

  - `en16931_invoice.payment_account_identifier` (any)
    Payment account identifier / IBAN (BT-84)

  - `en16931_invoice.payment_account_name` (any)
    Payment account name (BT-85)

  - `en16931_invoice.payment_service_provider_identifier` (any)
    Payment service provider identifier / BIC (BT-86)

  - `en16931_invoice.notes` (any)
    Invoice notes with optional subject codes (BT-22)

  - `en16931_invoice.notes.content` (string, required)
    Note content

  - `en16931_invoice.notes.subject_code` (any)
    Note subject code (e.g., PMT, PMD, AAB)

  - `en16931_invoice.order_reference` (any)
    Deprecated: use purchase_order_reference instead

  - `en16931_invoice.invoice_note` (any)
    Deprecated: use notes instead. Invoice note (BT-22)

  - `en16931_invoice.preceding_invoice_reference` (any)
    For credit notes - reference to original invoice (BT-25)

  - `en16931_invoice.preceding_invoice_issue_date` (any)
    For credit notes - issue date of the referenced original invoice (BT-26)

  - `en16931_invoice.delivery` (any)
    Delivery information (BG-13) and deliver to address (BG-15)

  - `en16931_invoice.delivery.deliver_to_party_name` (any)
    Deliver to party name (BT-70)

  - `en16931_invoice.delivery.location_identifier` (any)
    Deliver to location identifier (BT-71)

  - `en16931_invoice.delivery.location_identifier_scheme` (any)
    Scheme identifier for the deliver to location identifier (BT-71-1)

  - `en16931_invoice.delivery.actual_delivery_date` (any)
    Actual delivery date (BT-72)

  - `en16931_invoice.delivery.deliver_to_address` (any)
    Deliver to address (BG-15)

  - `en16931_invoice.delivery.deliver_to_address.address_line_1` (any)
    Deliver to address line 1 (BT-75)

  - `en16931_invoice.delivery.deliver_to_address.address_line_2` (any)
    Deliver to address line 2 (BT-76)

  - `en16931_invoice.delivery.deliver_to_address.address_line_3` (any)
    Deliver to address line 3 (BT-163)

  - `en16931_invoice.delivery.deliver_to_address.city_name` (any)
    Deliver to city (BT-77)

  - `en16931_invoice.delivery.deliver_to_address.postal_zone` (any)
    Deliver to post code (BT-78)

  - `en16931_invoice.delivery.deliver_to_address.country_subdivision` (any)
    Deliver to country subdivision (BT-79)

  - `en16931_invoice.delivery.deliver_to_address.country_code` (any)
    Deliver to country code (BT-80) - ISO 3166-1 alpha-2. Mandatory when a deliver to address (BG-15) is present (BR-57).

  - `en16931_invoice.invoice_number` (string, required)
    Invoice number (BT-1)

  - `en16931_invoice.processing_timestamp` (any)
    When the invoice was processed by the system

  - `en16931_invoice.invoice_period_start_date` (any)
    Invoice period start date (BT-73)

  - `en16931_invoice.invoice_period_end_date` (any)
    Invoice period end date (BT-74)

  - `en16931_invoice.document_level_allowance_amount` (any)
    Sum of allowances on document level (BT-107)

  - `en16931_invoice.document_level_charge_amount` (any)
    Sum of charges on document level (BT-108)

  - `en16931_invoice.document_allowances` (any)
    Document level allowances (BG-20) — discounts applying to the invoice as a whole, each assigned to a VAT category (BT-95). Their sum is BT-107.

  - `en16931_invoice.document_allowances.amount` (string, required)
    Document level allowance amount (BT-92)

  - `en16931_invoice.document_allowances.base_amount` (any)
    Document level allowance base amount (BT-93)

  - `en16931_invoice.document_allowances.percentage` (any)
    Document level allowance percentage (BT-94)

  - `en16931_invoice.document_allowances.vat_rate` (any)
    Document level allowance VAT rate as percentage (BT-96)

  - `en16931_invoice.document_allowances.reason` (any)
    Document level allowance reason (BT-97)

  - `en16931_invoice.document_allowances.reason_code` (any)
    Document level allowance reason code (BT-98), from UNTDID 5189

  - `en16931_invoice.document_charges` (any)
    Document level charges (BG-21) — surcharges applying to the invoice as a whole, each assigned to a VAT category (BT-102). Their sum is BT-108.

  - `en16931_invoice.document_charges.amount` (string, required)
    Document level charge amount (BT-99)

  - `en16931_invoice.document_charges.base_amount` (any)
    Document level charge base amount (BT-100)

  - `en16931_invoice.document_charges.percentage` (any)
    Document level charge percentage (BT-101)

  - `en16931_invoice.document_charges.vat_rate` (any)
    Document level charge VAT rate as percentage (BT-103)

  - `en16931_invoice.document_charges.reason` (any)
    Document level charge reason (BT-104)

  - `en16931_invoice.document_charges.reason_code` (any)
    Document level charge reason code (BT-105), from UNTDID 7161

  - `en16931_invoice.en16931_validation_status` (any)
    EN16931 validation status (system field)

  - `en16931_invoice.validation_errors` (any)
    List of validation errors if any (system field)

  - `en16931_invoice.status_details` (any)
    Current status details for the invoice (same value as GET /invoicing/invoices/{id}).

## Response 422 fields (application/json):

  - `type` (string, required)
    Enum: "problems/invoice/error", "problems/invoice/invalid-xml", "problems/invoice/unresolvable-type", "problems/invoice/parsing-error", "problems/invoice/unknown-type", "problems/invoice/generation-error", "problems/invoice/type-not-supported-by-france", "problems/invoice/not-peppol-routable", "problems/invoice/xsd-validation-error", "problems/invoice/schematron-validation-error", "problems/invoice/vat-rate-not-applicable"

  - `type_url` (string)
    Absolute URL resolving to problem type documentation

  - `warnings` (array)
    Non-blocking warnings

  - `errors` (array, required)
    Error details - multiple items for validation errors, single item otherwise

