API reference · 2026-10-15-github-archives-release
E-Rechnung
XML-Upload und gepinnte asynchrone Validierung sind nachgewiesen; Issuance benötigt Releaseevidenz.
Availability: Limited
Current service status ↗Versioned guides and examples
Published local documents for revision 2026-10-15-github-archives-release. SDK guidance describes
integration options; no external SDK download is implied.
Overview · overview.md
# E-Rechnung — Produktion
Die öffentliche Maschinen-API deckt Dokumente und Validierungen ab. Sie stellt keine Rechnung aus und versendet keine Rechnung.
Quelle: devacc-einvoice-platform Commit d4a456dd25a52d250bf003b6984f96d297e8fe2f, api/openapi.yaml. Diese Dokumentation und der gefilterte OpenAPI-Vertrag sind unveränderliche Snapshots. Quellqualifikation bedeutet keine bestätigte Live-Verfügbarkeit.
Die jeweils andere Umgebung benötigt eigene Clients, Grants, Daten und Signaturschlüssel. OAuth-Issuer: https://auth.d0.eu; Ressource: https://api.d0.eu/einvoice. Maschine: Client Credentials mit private_key_jwt und DPoP. Signaturschlüssel bleiben ausschließlich im Serverprozess.
Quickstart · quickstart.md
# E-Rechnung: Produktion in vier Schritten
1. Produkt und Organisationsberechtigung in der Console prüfen. Für Produktion einen eigenen Maschinenclient in d0-auth registrieren; nur die unten genannten Scopes freigeben.
2. Über `https://auth.d0.eu` ein Access Token für `https://api.d0.eu/einvoice` mit `private_key_jwt` und DPoP beziehen. Den DPoP-Proof an genau den Ziel-Request binden; Nonce-Antworten gemäß Auth-Transport behandeln.
3. Mit einvoice.policies:read GET /einvoice/v1/validation-policies eine Policy wählen. Dokumentbytes mit Content-Digest SHA-256 und stabilem Idempotency-Key an POST /einvoice/v1/documents senden; anschließend mit einvoice.validations:write eine Validierung starten und ihren Status/Ergebnis abrufen.
4. Nur die im `public-openapi.json` dieser Revision gelisteten Operationen verwenden. Bei 429 die veröffentlichten technischen Limits beachten.
Verfügbare Produktions-Scopes: `einvoice.documents:write`, `einvoice.documents:read`, `einvoice.validations:write`, `einvoice.validations:read`, `einvoice.policies:read`, `einvoice.issuance:write`, `einvoice.issuance:read`. Pro Client nur den tatsächlich benötigten Teil beantragen.
Go v0.1.0 ist über den öffentlichen Go-Modul-Proxy installierbar. TypeScript und Python v0.1.0 samt gemeinsamem Auth-Transport sind als geprüfte Archive im [GitHub-Release](https://github.com/dev-null-GmbH/d0-sdk/releases/tag/sdk-2026-10-15) verfügbar; die genauen Installationsschritte stehen in den SDK-Guides. Die drei Beispiele sind Offline-Fixtures ohne Live-Credentials oder Live-Requests.
Examples · examples/typescript.mjs
import { EInvoiceClient, resourceFor } from "../dist/index.js";
const documentId = "doc_abcdefghijklmnopqrst";
const operationId = "vop_abcdefghijklmnopqrst";
const policyId = "vpol_abcdefghijklmnopqrst";
for (const profile of ["production", "test"]) {
const transport = {
async request(target) {
if (!String(target).startsWith(resourceFor(profile) + "/v1/")) throw new Error("profile crossover");
const path = new URL(target).pathname;
let status = 200;
let body;
switch (path) {
case "/einvoice/v1/validation-policies": body = { items: [{ id: policyId }] }; break;
case "/einvoice/v1/documents": status = 201; body = { id: documentId }; break;
case "/einvoice/v1/validation-operations": status = 202; body = { id: operationId, status: "queued" }; break;
case "/einvoice/v1/validation-operations/" + operationId: body = { id: operationId, status: "succeeded" }; break;
case "/einvoice/v1/validation-operations/" + operationId + "/result": body = { operationId, valid: false, issues: [{ code: "fixture.invalid" }] }; break;
default: throw new Error("unexpected fixture route");
}
return new Response(JSON.stringify(body), { status, headers: { "Content-Type": "application/json" } });
},
};
const client = new EInvoiceClient(profile, transport);
const policies = await client.listValidationPolicies();
const document = await client.createDocument(new TextEncoder().encode("<synthetic/>"), "fixture-upload-00000001");
const operation = await client.createValidationOperation(document.id, policies.items[0].id, "fixture-validate-00000001");
const terminal = await client.waitValidation(operation.id, 2000);
const result = await client.getValidationResult(terminal.id);
process.stdout.write(profile + " fixture: operation=" + terminal.id + " valid=" + result.valid + "\n");
}
Examples · examples/go.go
package main
import (
"context"
"fmt"
"io"
"net/http"
"strings"
"time"
einvoice "github.com/dev-null-GmbH/d0-sdk/einvoice/go"
)
// This synthetic transport exercises the real product SDK without network
// access or credentials. The shared machine transport is used for live clients.
type fixture struct{ resource string }
func (f fixture) RoundTrip(r *http.Request) (*http.Response, error) {
if !strings.HasPrefix(r.URL.String(), f.resource+"/v1/") {
return nil, fmt.Errorf("profile crossover")
}
status, body := 200, "{}"
switch r.URL.Path {
case "/einvoice/v1/validation-policies":
body = `{"items":[{"id":"vpol_abcdefghijklmnopqrst"}]}`
case "/einvoice/v1/documents":
status, body = 201, `{"id":"doc_abcdefghijklmnopqrst"}`
case "/einvoice/v1/validation-operations":
status, body = 202, `{"id":"vop_abcdefghijklmnopqrst","status":"queued"}`
case "/einvoice/v1/validation-operations/vop_abcdefghijklmnopqrst":
body = `{"id":"vop_abcdefghijklmnopqrst","status":"succeeded"}`
case "/einvoice/v1/validation-operations/vop_abcdefghijklmnopqrst/result":
body = `{"operationId":"vop_abcdefghijklmnopqrst","valid":false,"issues":[{"severity":"error","code":"fixture.invalid","message":"Synthetic"}]}`
default:
return nil, fmt.Errorf("unexpected fixture route")
}
return &http.Response{StatusCode: status, Header: http.Header{"Content-Type": {"application/json"}}, Body: io.NopCloser(strings.NewReader(body))}, nil
}
func main() {
for _, profile := range []einvoice.Profile{einvoice.Production, einvoice.Test} {
resource, _ := profile.Resource()
client, err := einvoice.NewClient(profile, &http.Client{Transport: fixture{resource}})
if err != nil {
panic(err)
}
ctx := context.Background()
policies, err := client.ListValidationPolicies(ctx, 50, "")
if err != nil {
panic(err)
}
document, err := client.CreateDocument(ctx, []byte("<synthetic/>"), "fixture-upload-00000001")
if err != nil {
panic(err)
}
operation, err := client.CreateValidationOperation(ctx, document.ID, policies.Items[0].ID, "fixture-validate-00000001")
if err != nil {
panic(err)
}
terminal, err := client.WaitValidation(ctx, operation.ID, 2*time.Second)
if err != nil {
panic(err)
}
result, err := client.GetValidationResult(ctx, terminal.ID)
if err != nil {
panic(err)
}
fmt.Printf("%s fixture: operation=%s valid=%t\n", profile, terminal.ID, result.Valid)
}
}
Examples · examples/python.py
"""Run both fixed product profiles against a synthetic in-memory transport."""
import io
import json
from urllib.parse import urlsplit
from d0_auth_machine import MachineClient
from d0_einvoice import EInvoiceClient, resource_for
DOCUMENT = "doc_abcdefghijklmnopqrst"
OPERATION = "vop_abcdefghijklmnopqrst"
POLICY = "vpol_abcdefghijklmnopqrst"
class Response:
def __init__(self, status, value):
self.status = status
self.headers = {"Content-Type": "application/json"}
self.body = io.BytesIO(json.dumps(value).encode())
def read(self, length):
return self.body.read(length)
def close(self):
self.body.close()
class FixtureMachine(MachineClient):
def __init__(self, profile):
self.resource = resource_for(profile)
def request(self, url, **options):
if not url.startswith(self.resource + "/v1/"):
raise ValueError("profile crossover")
path = urlsplit(url).path
if path == "/einvoice/v1/validation-policies":
return Response(200, {"items": [{"id": POLICY}]})
if path == "/einvoice/v1/documents":
return Response(201, {"id": DOCUMENT})
if path == "/einvoice/v1/validation-operations":
return Response(202, {"id": OPERATION, "status": "queued"})
if path == "/einvoice/v1/validation-operations/" + OPERATION:
return Response(200, {"id": OPERATION, "status": "succeeded"})
if path == "/einvoice/v1/validation-operations/" + OPERATION + "/result":
return Response(200, {"operationId": OPERATION, "valid": False, "issues": [{"code": "fixture.invalid"}]})
raise ValueError("unexpected fixture route")
for profile in ("production", "test"):
client = EInvoiceClient(profile, FixtureMachine(profile))
policies = client.list_validation_policies()
document = client.create_document(b"<synthetic/>", "fixture-upload-00000001")
operation = client.create_validation_operation(document["id"], policies["items"][0]["id"], "fixture-validate-00000001")
terminal = client.wait_validation(operation["id"], 2)
result = client.get_validation_result(terminal["id"])
print(profile, "fixture: operation=", terminal["id"], "valid=", result["valid"])
Error catalog · errors.md
# E-Rechnung — Fehler und Wiederholung
Der genaue Fehlerkörper und die operationellen Antworten stehen in `public-openapi.json`. In den öffentlichen Operationen dieser Revision sind die Statuscodes `200`, `201`, `202`, `304`, `400`, `401`, `403`, `404`, `409`, `410`, `411`, `413`, `415`, `422`, `429`, `500`, `503`, `default` deklariert. Nicht jeder Code gilt für jede Operation.
- `400`/`422`: Eingabe und geforderte Header gegen die konkrete Operation prüfen; keinen veränderten Request unter demselben Idempotency-Key wiederholen.
- `401`: Token, DPoP-Proof, Nonce, Audience und Clientprofil prüfen.
- `403`: Scope, Organisationsrolle und fachliche Zuordnung prüfen; keine breiteren Scopes erraten.
- `404`: Pfad, Ressource und Tenant-Kontext prüfen; keine Existenz fremder Ressourcen ableiten.
- `409`/`412`: Konflikt bzw. ETag-Vorbedingung durch erneutes Lesen und fachliche Entscheidung auflösen.
- `429`: technische Limitantwort und Reset-/Retry-Hinweis beachten.
- `5xx` oder Transportabbruch: Bei Mutationen denselben vom Aufrufer vergebenen Idempotency-Key verwenden, sofern die Operation ihn vorsieht; sonst erst den serverseitigen Zustand lesen. Keine blinde Wiederholung einer nicht-idempotenten Operation.
Problemantworten und Request-ID helfen bei der Diagnose. Keine Tokens, Schlüssel, Dokumentinhalte oder personenbezogenen Daten in Support-Logs kopieren.
Changelog · CHANGELOG.md
# E-Rechnung 2026-10-15-github-archives-release
- Neue unveränderliche Dokumentationsrevision. Die vorige Revision `2026-10-15-go-release` bleibt bytegleich verfügbar; Quell-OpenAPI, öffentlicher Vertrag und klassifizierte Operationen sind unverändert.
- Das [GitHub-Release](https://github.com/dev-null-GmbH/d0-sdk/releases/tag/sdk-2026-10-15) stellt die geprüften TypeScript-Tarballs und Python-Wheels für einvoice v0.1.0 sowie den Auth-Transport v0.1.0 bereit. Der ZIP-Hash ist `6c11b63a5ce5f24dff79d1f3d33c7879ff48831d66dd9029b37abf073152dd93`; der innere `SHA256SUMS`-Katalog wird vor Installation geprüft. Go v0.1.0 bleibt über den öffentlichen Modul-Proxy verfügbar.
- npm und PyPI sind keine Voraussetzungen für diese Distribution. Die installierten Offline-Beispiele wurden im Release-Build geprüft; Service-Rollout und SDK-Download sind getrennte Nachweise.
SDK guidance · sdk-typescript.md
# E-Rechnung typescript SDK
Paket: `@dev-null-gmbh/einvoice` v0.1.0, Auth-Transport `@dev-null-gmbh/auth-machine` v0.1.0. MIT-Lizenz; Node.js 24.21 bis unter 27.
Die [qualifizierte GitHub-Release-Datei](https://github.com/dev-null-GmbH/d0-sdk/releases/tag/sdk-2026-10-15) ist die direkte Distribution. Archiv und Prüfsumme herunterladen, dann äußere und innere SHA-256-Werte prüfen (unter Linux kann `sha256sum -c` statt `shasum -a 256 -c` verwendet werden):
```sh
curl -fLO https://github.com/dev-null-GmbH/d0-sdk/releases/download/sdk-2026-10-15/d0-sdk-2026-10-15.zip
curl -fLO https://github.com/dev-null-GmbH/d0-sdk/releases/download/sdk-2026-10-15/d0-sdk-2026-10-15.sha256
shasum -a 256 -c d0-sdk-2026-10-15.sha256
unzip d0-sdk-2026-10-15.zip -d d0-sdk-2026-10-15
(cd d0-sdk-2026-10-15 && shasum -a 256 -c SHA256SUMS)
```
Der äußere ZIP-Hash lautet `6c11b63a5ce5f24dff79d1f3d33c7879ff48831d66dd9029b37abf073152dd93`. Die Archive stammen aus [dem erfolgreichen Main-Build](https://github.com/dev-null-GmbH/d0-sdk/actions/runs/38748901791) bei `d0-sdk@6f2c39612a661ec557e96e5caff093a057e6e1de`. Das Release enthält SDKs und Auth-Transport, keine privaten Services oder Zugangsdaten.
Die beiden geprüften Tarballs lokal im Serverprojekt installieren (keine npm-Registry-Veröffentlichung erforderlich):
```sh
npm install --ignore-scripts --no-audit --no-fund ./d0-sdk-2026-10-15/npm/dev-null-gmbh-auth-machine-0.1.0.tgz ./d0-sdk-2026-10-15/npm/dev-null-gmbh-einvoice-0.1.0.tgz
```
Das Offline-Beispiel dieser Revision liegt unter `catalog/v1/bundles/einvoice/2026-10-15-github-archives-release/examples/typescript.mjs`. Das Paket ist für vertrauenswürdige Serveranwendungen gedacht; private Signaturschlüssel gehören nicht in Browser-Code. Öffentliche Operationen und Scopes stehen in `public-openapi.json`.
SDK guidance · sdk-go.md
# E-Rechnung Go SDK
Paket: `github.com/dev-null-GmbH/d0-sdk/einvoice/go` v0.1.0. Gemeinsamer Maschinen-Auth-Transport: `github.com/dev-null-GmbH/d0-sdk/auth/go` v0.1.0. Beide sind über den öffentlichen Go-Modul-Proxy mit aktivierter Checksum-Datenbank aus frischer, anonymer Umgebung installierbar. Lizenz: MIT.
```sh
go get github.com/dev-null-GmbH/d0-sdk/einvoice/go@v0.1.0
```
Modul-Tags: `einvoice/go/v0.1.0` und `auth/go/v0.1.0`, beide auf `d0-sdk@a7b1730310ccd3decafc299382f4e2f48ebefda7`. Die Quellrevision des API-Vertrags bleibt `devacc-einvoice-platform@d4a456dd25a52d250bf003b6984f96d297e8fe2f`.
Das unveränderte Offline-Fixture aus `devacc-einvoice-platform@d4a456dd25a52d250bf003b6984f96d297e8fe2f:sdk/go/examples/fixture/main.go` liegt unter `catalog/v1/bundles/einvoice/2026-10-15-github-archives-release/examples/go.go` (SHA-256 `88bd16d86548c5c2888608f2b6c03e94db414efe11364d105c94ed46e37b3eb1`). Es demonstriert den Client mit festem production-Profil ohne Netzaufruf. Öffentliche Operationen und Scopes stehen ausschließlich in public-openapi.json; interne und nicht implementierte Operationen sind kein SDK-Vertrag.
Die übrigen Sprachpakete sind über das [geprüfte GitHub-Release](https://github.com/dev-null-GmbH/d0-sdk/releases/tag/sdk-2026-10-15) verfügbar. Go benötigt nur den oben gezeigten Modulbezug über den öffentlichen Proxy.
SDK guidance · sdk-python.md
# E-Rechnung python SDK
Paket: `d0-einvoice` v0.1.0, Auth-Transport `d0-auth-machine` v0.1.0. MIT-Lizenz; Python 3.14.
Die [qualifizierte GitHub-Release-Datei](https://github.com/dev-null-GmbH/d0-sdk/releases/tag/sdk-2026-10-15) ist die direkte Distribution. Archiv und Prüfsumme herunterladen, dann äußere und innere SHA-256-Werte prüfen (unter Linux kann `sha256sum -c` statt `shasum -a 256 -c` verwendet werden):
```sh
curl -fLO https://github.com/dev-null-GmbH/d0-sdk/releases/download/sdk-2026-10-15/d0-sdk-2026-10-15.zip
curl -fLO https://github.com/dev-null-GmbH/d0-sdk/releases/download/sdk-2026-10-15/d0-sdk-2026-10-15.sha256
shasum -a 256 -c d0-sdk-2026-10-15.sha256
unzip d0-sdk-2026-10-15.zip -d d0-sdk-2026-10-15
(cd d0-sdk-2026-10-15 && shasum -a 256 -c SHA256SUMS)
```
Der äußere ZIP-Hash lautet `6c11b63a5ce5f24dff79d1f3d33c7879ff48831d66dd9029b37abf073152dd93`. Die Archive stammen aus [dem erfolgreichen Main-Build](https://github.com/dev-null-GmbH/d0-sdk/actions/runs/38748901791) bei `d0-sdk@6f2c39612a661ec557e96e5caff093a057e6e1de`. Das Release enthält SDKs und Auth-Transport, keine privaten Services oder Zugangsdaten.
Die beiden geprüften Wheels in einer virtuellen Umgebung installieren (keine PyPI-Veröffentlichung erforderlich):
```sh
python3.14 -m venv .venv
.venv/bin/python -m pip install ./d0-sdk-2026-10-15/python/d0_auth_machine-0.1.0-py3-none-any.whl ./d0-sdk-2026-10-15/python/d0_einvoice-0.1.0-py3-none-any.whl
```
Das Offline-Beispiel dieser Revision liegt unter `catalog/v1/bundles/einvoice/2026-10-15-github-archives-release/examples/python.py`. Das Paket ist für vertrauenswürdige Serveranwendungen gedacht; private Signaturschlüssel gehören nicht in Browser-Code. Öffentliche Operationen und Scopes stehen in `public-openapi.json`.
Get started
- Produkt- und Organisationsberechtigung prüfen.
- Öffentliche Operationen erst nach Releasefreigabe verwenden.
Operations
Implemented rows describe supported contract behavior. Product availability above still controls whether the runtime is open to customers. Declared and blocked rows describe contract intent or a release gate.
| Method | Path | Operation | Readiness |
|---|---|---|---|
| POST | /documents | createDocument | Implemented |
| GET | /documents/{documentId} | getDocument | Implemented |
| POST | /validation-operations | createValidationOperation | Implemented |
| GET | /validation-operations/{validationOperationId} | getValidationOperation | Implemented |
| GET | /validation-operations/{validationOperationId}/result | getValidationResult | Implemented |
| GET | /validation-policies | listValidationPolicies | Implemented |
| GET | /validation-policies/{validationPolicyId} | getValidationPolicy | Implemented |
| POST | /issuance-operations | createIssuanceOperation | Declared |
| GET | /issuance-operations/{issuanceOperationId} | getIssuanceOperation | Declared |
| GET | /issuance-operations/{issuanceOperationId}/result | getIssuanceResult | Declared |
| GET | /issued-invoices/{invoiceId}/xml | getIssuedInvoiceXml | Declared |
Operation reference
Parameters, request bodies and responses come from the filtered public OpenAPI contract
for this revision. Required fields are marked in each schema’s required array.
7 of 7 operations
POST /documentsStore one immutable XML source
Stores the exact request body as a validation-only document. The body is not normalized, transcoded, parsed, or validated by this operation. `Content-Length` is the exact byte count, not a character count, and the sole `Content-Digest` value is computed over those same transmitted representation bytes. An exact `Idempotency-Key` replay returns the original `201` response verbatim. Reusing the key for different bytes, headers, media type, or target is `422`; a still-running exact replay is `409`. Missing length is `411`, an oversized body is `413`, and a count or digest mismatch is `400`. The connection is closed after a body-integrity failure so that unread or surplus bytes cannot become another request.
Parameters
Idempotency-Key · header · required
Opaque, client-generated, high-entropy key unique to this authenticated project and operation route. It is compared as an exact case-sensitive value after HTTP field parsing. Use the same key after an uncertain response; never derive it from invoice data or other PII.
{
"type": "string",
"pattern": "^[A-Za-z0-9._~:+/=-]{16,255}$",
"minLength": 16,
"maxLength": 255
}Content-Length · header · required
Canonical positive decimal byte length of the exact XML representation. Transfer-Encoding and conflicting or duplicate lengths are forbidden.
{
"type": "integer",
"format": "int64",
"minimum": 1,
"maximum": 20971520
}Content-Digest · header · required
Exactly one canonical RFC 9530 SHA-256 member over the representation bytes. Other algorithms, dictionaries with multiple members, and duplicate field lines are rejected.
{
"type": "string",
"description": "Canonical single-member RFC 9530 SHA-256 Content-Digest value.",
"pattern": "^sha-256=:[A-Za-z0-9+/]{43}=:$",
"minLength": 54,
"maxLength": 54
}Request body
application/xml · required
{
"type": "string",
"format": "binary",
"contentMediaType": "application/xml",
"description": "Exact, unencoded XML representation bytes."
} Responses
201 · application/json
The exact bytes were verified and durably stored.
Required fields: schema, id, mediaType, byteIdentity, createdAt, expiresAt
{
"type": "object",
"additionalProperties": false,
"description": "Immutable metadata for exact validation-only XML bytes.",
"required": [
"schema",
"id",
"mediaType",
"byteIdentity",
"createdAt",
"expiresAt"
],
"properties": {
"schema": {
"type": "string",
"const": "d0.einvoice.document.v1",
"minLength": 23,
"maxLength": 23
},
"id": {
"type": "string",
"description": "Opaque public identifier; its characters carry no semantics.",
"pattern": "^doc_[A-Za-z0-9]{20,80}$",
"minLength": 24,
"maxLength": 84
},
"mediaType": {
"type": "string",
"const": "application/xml",
"minLength": 15,
"maxLength": 15
},
"byteIdentity": {
"type": "object",
"additionalProperties": false,
"description": "Exact immutable identity of one byte representation.",
"required": [
"sizeBytes",
"sha256",
"contentDigest"
],
"properties": {
"sizeBytes": {
"type": "integer",
"format": "int64",
"minimum": 1,
"maximum": 20971520
},
"sha256": {
"type": "string",
"description": "Lowercase hexadecimal SHA-256 digest.",
"pattern": "^[0-9a-f]{64}$",
"minLength": 64,
"maxLength": 64
},
"contentDigest": {
"type": "string",
"description": "Canonical single-member RFC 9530 SHA-256 Content-Digest value.",
"pattern": "^sha-256=:[A-Za-z0-9+/]{43}=:$",
"minLength": 54,
"maxLength": 54
}
}
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "RFC 3339 timestamp with an explicit UTC offset.",
"minLength": 20,
"maxLength": 64
},
"expiresAt": {
"allOf": [
{
"type": "string",
"format": "date-time",
"description": "RFC 3339 timestamp with an explicit UTC offset.",
"minLength": 20,
"maxLength": 64
}
],
"description": "Declared deletion deadline for validation-only source bytes."
}
}
}400 · application/problem+json
Malformed request, headers, query, JSON, or byte-integrity failure.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}401 · application/problem+json
OAuth token or its required DPoP proof is absent, invalid, expired, or replayed.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}403 · application/problem+json
The authenticated client lacks a required scope.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}409 · application/problem+json
Current resource or idempotency state conflicts with the request. Common types include `request-in-progress`, `result-not-ready`, and `operation-failed`.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}411 · application/problem+json
A canonical positive Content-Length is required for this upload.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}413 · application/problem+json
Declared or observed content exceeds this endpoint's exact representation limit.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}415 · application/problem+json
Content-Type, charset parameter, or content coding is unsupported.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}422 · application/problem+json
The well-formed request cannot be accepted. Common types include `idempotency-key-reused`, `validation-policy-unavailable`, and `document-not-validatable`.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}429 · application/problem+json
Project or client rate limit was exceeded.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}500 · application/problem+json
Unexpected internal failure with no sensitive diagnostics.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}503 · application/problem+json
A required durable platform dependency is temporarily unavailable.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}default · application/problem+json
Any other bounded 4xx or 5xx RFC 9457 response.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}GET /documents/{documentId}Fetch immutable document metadata
Returns exact-byte metadata, never the XML body or object-store coordinates. A document outside the authenticated project is reported as `404`. Expired validation-only content is reported as `410` and cannot be used to create a new validation operation.
Parameters
documentId · path · required
Opaque public document identifier; clients must not parse it.
{
"type": "string",
"description": "Opaque public identifier; its characters carry no semantics.",
"pattern": "^doc_[A-Za-z0-9]{20,80}$",
"minLength": 24,
"maxLength": 84
}If-None-Match · header
RFC 9110 entity-tag condition. Send the last strong ETag to avoid retransmitting an unchanged representation. Lists and `*` are accepted according to the HTTP field grammar.
{
"type": "string",
"minLength": 1,
"maxLength": 512
}Responses
200 · application/json
Immutable metadata for the exact stored source.
Required fields: schema, id, mediaType, byteIdentity, createdAt, expiresAt
{
"type": "object",
"additionalProperties": false,
"description": "Immutable metadata for exact validation-only XML bytes.",
"required": [
"schema",
"id",
"mediaType",
"byteIdentity",
"createdAt",
"expiresAt"
],
"properties": {
"schema": {
"type": "string",
"const": "d0.einvoice.document.v1",
"minLength": 23,
"maxLength": 23
},
"id": {
"type": "string",
"description": "Opaque public identifier; its characters carry no semantics.",
"pattern": "^doc_[A-Za-z0-9]{20,80}$",
"minLength": 24,
"maxLength": 84
},
"mediaType": {
"type": "string",
"const": "application/xml",
"minLength": 15,
"maxLength": 15
},
"byteIdentity": {
"type": "object",
"additionalProperties": false,
"description": "Exact immutable identity of one byte representation.",
"required": [
"sizeBytes",
"sha256",
"contentDigest"
],
"properties": {
"sizeBytes": {
"type": "integer",
"format": "int64",
"minimum": 1,
"maximum": 20971520
},
"sha256": {
"type": "string",
"description": "Lowercase hexadecimal SHA-256 digest.",
"pattern": "^[0-9a-f]{64}$",
"minLength": 64,
"maxLength": 64
},
"contentDigest": {
"type": "string",
"description": "Canonical single-member RFC 9530 SHA-256 Content-Digest value.",
"pattern": "^sha-256=:[A-Za-z0-9+/]{43}=:$",
"minLength": 54,
"maxLength": 54
}
}
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "RFC 3339 timestamp with an explicit UTC offset.",
"minLength": 20,
"maxLength": 64
},
"expiresAt": {
"allOf": [
{
"type": "string",
"format": "date-time",
"description": "RFC 3339 timestamp with an explicit UTC offset.",
"minLength": 20,
"maxLength": 64
}
],
"description": "Declared deletion deadline for validation-only source bytes."
}
}
}304
The selected representation has the supplied entity tag.
401 · application/problem+json
OAuth token or its required DPoP proof is absent, invalid, expired, or replayed.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}403 · application/problem+json
The authenticated client lacks a required scope.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}404 · application/problem+json
Resource does not exist in the authenticated project.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}410 · application/problem+json
Validation-only source bytes have expired and are unavailable.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}429 · application/problem+json
Project or client rate limit was exceeded.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}500 · application/problem+json
Unexpected internal failure with no sensitive diagnostics.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}503 · application/problem+json
A required durable platform dependency is temporarily unavailable.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}default · application/problem+json
Any other bounded 4xx or 5xx RFC 9457 response.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}POST /validation-operationsQueue validation against an explicit pinned policy
Creates durable work for one immutable XML document and one explicit validation-policy id. The policy id resolves to a frozen manifest before the operation is committed; retries and worker attempts never select a newer policy, validator, or ruleset. The response is always the original queued snapshot for an exact `Idempotency-Key` replay, even if the operation has since become terminal. Fetch `Location` for current state. A reused key with a different exact JSON representation is `422`; an exact replay still being committed is `409` with `Retry-After`. Duplicate JSON names, unknown members, explicit nulls, trailing JSON values, unavailable policies, expired documents, and cross-project references are rejected before work is queued. The exact UTF-8 JSON representation, including insignificant whitespace, is limited to 8192 bytes; a larger representation is `413`. HTTP transfer framing is decoded before fingerprinting and is not part of the representation; representation content codings remain unsupported.
Parameters
Idempotency-Key · header · required
Opaque, client-generated, high-entropy key unique to this authenticated project and operation route. It is compared as an exact case-sensitive value after HTTP field parsing. Use the same key after an uncertain response; never derive it from invoice data or other PII.
{
"type": "string",
"pattern": "^[A-Za-z0-9._~:+/=-]{16,255}$",
"minLength": 16,
"maxLength": 255
}Request body
application/json · required
Required fields: documentId, validationPolicyId
{
"type": "object",
"additionalProperties": false,
"description": "Exact immutable source and explicit policy selection.",
"required": [
"documentId",
"validationPolicyId"
],
"properties": {
"documentId": {
"type": "string",
"description": "Opaque public identifier; its characters carry no semantics.",
"pattern": "^doc_[A-Za-z0-9]{20,80}$",
"minLength": 24,
"maxLength": 84
},
"validationPolicyId": {
"type": "string",
"description": "Opaque id pinning exactly one immutable policy manifest.",
"pattern": "^vpol_[A-Za-z0-9]{20,80}$",
"minLength": 25,
"maxLength": 85
}
}
} Responses
202 · application/json
Validation was durably queued, or this is an exact replay.
Required fields: schema, id, documentId, validationPolicyId, status, requestedAt, updatedAt
{
"x-d0-wire-variant": "queued",
"type": "object",
"additionalProperties": false,
"description": "Durable work accepted but not yet started by a processor worker.",
"required": [
"schema",
"id",
"documentId",
"validationPolicyId",
"status",
"requestedAt",
"updatedAt"
],
"properties": {
"schema": {
"type": "string",
"const": "d0.einvoice.validation-operation.v1",
"minLength": 35,
"maxLength": 35
},
"id": {
"type": "string",
"description": "Opaque public identifier; its characters carry no semantics.",
"pattern": "^vop_[A-Za-z0-9]{20,80}$",
"minLength": 24,
"maxLength": 84
},
"documentId": {
"type": "string",
"description": "Opaque public identifier; its characters carry no semantics.",
"pattern": "^doc_[A-Za-z0-9]{20,80}$",
"minLength": 24,
"maxLength": 84
},
"validationPolicyId": {
"type": "string",
"description": "Opaque id pinning exactly one immutable policy manifest.",
"pattern": "^vpol_[A-Za-z0-9]{20,80}$",
"minLength": 25,
"maxLength": 85
},
"status": {
"type": "string",
"const": "queued",
"minLength": 6,
"maxLength": 6
},
"requestedAt": {
"type": "string",
"format": "date-time",
"description": "RFC 3339 timestamp with an explicit UTC offset.",
"minLength": 20,
"maxLength": 64
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "RFC 3339 timestamp with an explicit UTC offset.",
"minLength": 20,
"maxLength": 64
}
}
}400 · application/problem+json
Malformed request, headers, query, JSON, or byte-integrity failure.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}401 · application/problem+json
OAuth token or its required DPoP proof is absent, invalid, expired, or replayed.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}403 · application/problem+json
The authenticated client lacks a required scope.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}404 · application/problem+json
Resource does not exist in the authenticated project.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}409 · application/problem+json
Current resource or idempotency state conflicts with the request. Common types include `request-in-progress`, `result-not-ready`, and `operation-failed`.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}410 · application/problem+json
Validation-only source bytes have expired and are unavailable.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}413 · application/problem+json
Declared or observed content exceeds this endpoint's exact representation limit.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}415 · application/problem+json
Content-Type, charset parameter, or content coding is unsupported.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}422 · application/problem+json
The well-formed request cannot be accepted. Common types include `idempotency-key-reused`, `validation-policy-unavailable`, and `document-not-validatable`.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}429 · application/problem+json
Project or client rate limit was exceeded.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}500 · application/problem+json
Unexpected internal failure with no sensitive diagnostics.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}503 · application/problem+json
A required durable platform dependency is temporarily unavailable.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}default · application/problem+json
Any other bounded 4xx or 5xx RFC 9457 response.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}GET /validation-operations/{validationOperationId}Fetch current validation state
Returns the current monotonic state. `Location` remains the canonical operation URI for its lifetime. `Retry-After` is present while state is `queued` or `running` and absent once terminal. Send `If-None-Match` to receive `304` when no observable transition occurred. The strong `ETag` changes at every transition and becomes permanent at `succeeded` or `failed`.
Parameters
validationOperationId · path · required
Opaque public validation-operation identifier.
{
"type": "string",
"description": "Opaque public identifier; its characters carry no semantics.",
"pattern": "^vop_[A-Za-z0-9]{20,80}$",
"minLength": 24,
"maxLength": 84
}If-None-Match · header
RFC 9110 entity-tag condition. Send the last strong ETag to avoid retransmitting an unchanged representation. Lists and `*` are accepted according to the HTTP field grammar.
{
"type": "string",
"minLength": 1,
"maxLength": 512
}Responses
200 · application/json
Current durable validation state.
{
"description": "Durable state discriminated by `status`. Variants are fully closed and\nexplicit null values are never used.\n",
"oneOf": [
{
"x-d0-wire-variant": "queued",
"type": "object",
"additionalProperties": false,
"description": "Durable work accepted but not yet started by a processor worker.",
"required": [
"schema",
"id",
"documentId",
"validationPolicyId",
"status",
"requestedAt",
"updatedAt"
],
"properties": {
"schema": {
"type": "string",
"const": "d0.einvoice.validation-operation.v1",
"minLength": 35,
"maxLength": 35
},
"id": {
"type": "string",
"description": "Opaque public identifier; its characters carry no semantics.",
"pattern": "^vop_[A-Za-z0-9]{20,80}$",
"minLength": 24,
"maxLength": 84
},
"documentId": {
"type": "string",
"description": "Opaque public identifier; its characters carry no semantics.",
"pattern": "^doc_[A-Za-z0-9]{20,80}$",
"minLength": 24,
"maxLength": 84
},
"validationPolicyId": {
"type": "string",
"description": "Opaque id pinning exactly one immutable policy manifest.",
"pattern": "^vpol_[A-Za-z0-9]{20,80}$",
"minLength": 25,
"maxLength": 85
},
"status": {
"type": "string",
"const": "queued",
"minLength": 6,
"maxLength": 6
},
"requestedAt": {
"type": "string",
"format": "date-time",
"description": "RFC 3339 timestamp with an explicit UTC offset.",
"minLength": 20,
"maxLength": 64
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "RFC 3339 timestamp with an explicit UTC offset.",
"minLength": 20,
"maxLength": 64
}
}
},
{
"x-d0-wire-variant": "running",
"type": "object",
"additionalProperties": false,
"description": "Processing has started; internal retries remain in this state.",
"required": [
"schema",
"id",
"documentId",
"validationPolicyId",
"status",
"requestedAt",
"updatedAt",
"startedAt"
],
"properties": {
"schema": {
"type": "string",
"const": "d0.einvoice.validation-operation.v1",
"minLength": 35,
"maxLength": 35
},
"id": {
"type": "string",
"description": "Opaque public identifier; its characters carry no semantics.",
"pattern": "^vop_[A-Za-z0-9]{20,80}$",
"minLength": 24,
"maxLength": 84
},
"documentId": {
"type": "string",
"description": "Opaque public identifier; its characters carry no semantics.",
"pattern": "^doc_[A-Za-z0-9]{20,80}$",
"minLength": 24,
"maxLength": 84
},
"validationPolicyId": {
"type": "string",
"description": "Opaque id pinning exactly one immutable policy manifest.",
"pattern": "^vpol_[A-Za-z0-9]{20,80}$",
"minLength": 25,
"maxLength": 85
},
"status": {
"type": "string",
"const": "running",
"minLength": 7,
"maxLength": 7
},
"requestedAt": {
"type": "string",
"format": "date-time",
"description": "RFC 3339 timestamp with an explicit UTC offset.",
"minLength": 20,
"maxLength": 64
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "RFC 3339 timestamp with an explicit UTC offset.",
"minLength": 20,
"maxLength": 64
},
"startedAt": {
"type": "string",
"format": "date-time",
"description": "RFC 3339 timestamp with an explicit UTC offset.",
"minLength": 20,
"maxLength": 64
}
}
},
{
"x-d0-wire-variant": "succeeded",
"type": "object",
"additionalProperties": false,
"description": "Immutable terminal state proving that validation completed. The linked\nresult may report `valid: false`.\n",
"required": [
"schema",
"id",
"documentId",
"validationPolicyId",
"status",
"requestedAt",
"updatedAt",
"startedAt",
"completedAt",
"resultId",
"resultUri"
],
"properties": {
"schema": {
"type": "string",
"const": "d0.einvoice.validation-operation.v1",
"minLength": 35,
"maxLength": 35
},
"id": {
"type": "string",
"description": "Opaque public identifier; its characters carry no semantics.",
"pattern": "^vop_[A-Za-z0-9]{20,80}$",
"minLength": 24,
"maxLength": 84
},
"documentId": {
"type": "string",
"description": "Opaque public identifier; its characters carry no semantics.",
"pattern": "^doc_[A-Za-z0-9]{20,80}$",
"minLength": 24,
"maxLength": 84
},
"validationPolicyId": {
"type": "string",
"description": "Opaque id pinning exactly one immutable policy manifest.",
"pattern": "^vpol_[A-Za-z0-9]{20,80}$",
"minLength": 25,
"maxLength": 85
},
"status": {
"type": "string",
"const": "succeeded",
"minLength": 9,
"maxLength": 9
},
"requestedAt": {
"type": "string",
"format": "date-time",
"description": "RFC 3339 timestamp with an explicit UTC offset.",
"minLength": 20,
"maxLength": 64
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "RFC 3339 timestamp with an explicit UTC offset.",
"minLength": 20,
"maxLength": 64
},
"startedAt": {
"type": "string",
"format": "date-time",
"description": "RFC 3339 timestamp with an explicit UTC offset.",
"minLength": 20,
"maxLength": 64
},
"completedAt": {
"type": "string",
"format": "date-time",
"description": "RFC 3339 timestamp with an explicit UTC offset.",
"minLength": 20,
"maxLength": 64
},
"resultId": {
"type": "string",
"description": "Opaque public identifier; its characters carry no semantics.",
"pattern": "^vrs_[A-Za-z0-9]{20,80}$",
"minLength": 24,
"maxLength": 84
},
"resultUri": {
"type": "string",
"format": "uri-reference",
"pattern": "^/einvoice/v1/validation-operations/[^/?#]{1,96}/result$",
"minLength": 43,
"maxLength": 207
}
}
},
{
"x-d0-wire-variant": "failed",
"type": "object",
"additionalProperties": false,
"description": "Immutable terminal processing failure with no validation result.",
"required": [
"schema",
"id",
"documentId",
"validationPolicyId",
"status",
"requestedAt",
"updatedAt",
"startedAt",
"completedAt",
"failure"
],
"properties": {
"schema": {
"type": "string",
"const": "d0.einvoice.validation-operation.v1",
"minLength": 35,
"maxLength": 35
},
"id": {
"type": "string",
"description": "Opaque public identifier; its characters carry no semantics.",
"pattern": "^vop_[A-Za-z0-9]{20,80}$",
"minLength": 24,
"maxLength": 84
},
"documentId": {
"type": "string",
"description": "Opaque public identifier; its characters carry no semantics.",
"pattern": "^doc_[A-Za-z0-9]{20,80}$",
"minLength": 24,
"maxLength": 84
},
"validationPolicyId": {
"type": "string",
"description": "Opaque id pinning exactly one immutable policy manifest.",
"pattern": "^vpol_[A-Za-z0-9]{20,80}$",
"minLength": 25,
"maxLength": 85
},
"status": {
"type": "string",
"const": "failed",
"minLength": 6,
"maxLength": 6
},
"requestedAt": {
"type": "string",
"format": "date-time",
"description": "RFC 3339 timestamp with an explicit UTC offset.",
"minLength": 20,
"maxLength": 64
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "RFC 3339 timestamp with an explicit UTC offset.",
"minLength": 20,
"maxLength": 64
},
"startedAt": {
"type": "string",
"format": "date-time",
"description": "RFC 3339 timestamp with an explicit UTC offset.",
"minLength": 20,
"maxLength": 64
},
"completedAt": {
"type": "string",
"format": "date-time",
"description": "RFC 3339 timestamp with an explicit UTC offset.",
"minLength": 20,
"maxLength": 64
},
"failure": {
"type": "object",
"additionalProperties": false,
"description": "Stable public classification without processor diagnostics.",
"required": [
"code"
],
"properties": {
"code": {
"type": "string",
"enum": [
"source-unavailable",
"processor-unavailable",
"validation-processing-failed"
],
"minLength": 18,
"maxLength": 36
}
}
}
}
}
],
"discriminator": {
"propertyName": "status",
"mapping": {
"queued": "#/components/schemas/ValidationOperationQueued",
"running": "#/components/schemas/ValidationOperationRunning",
"succeeded": "#/components/schemas/ValidationOperationSucceeded",
"failed": "#/components/schemas/ValidationOperationFailed"
}
}
}304
Operation representation is unchanged.
401 · application/problem+json
OAuth token or its required DPoP proof is absent, invalid, expired, or replayed.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}403 · application/problem+json
The authenticated client lacks a required scope.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}404 · application/problem+json
Resource does not exist in the authenticated project.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}429 · application/problem+json
Project or client rate limit was exceeded.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}500 · application/problem+json
Unexpected internal failure with no sensitive diagnostics.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}503 · application/problem+json
A required durable platform dependency is temporarily unavailable.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}default · application/problem+json
Any other bounded 4xx or 5xx RFC 9457 response.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}GET /validation-operations/{validationOperationId}/resultFetch an immutable validation result
Exists only after the operation succeeds. A queued or running operation, or a failed operation that can never produce a result, returns `409` with a stable problem type. The result contains exact source identity, the frozen policy manifest, processor and validator components, ruleset artifacts, and their SHA-256 digests. `valid: false` is a normal `200` result proving that validation completed; it is never represented as a failed operation or a problem response.
Parameters
validationOperationId · path · required
Opaque public validation-operation identifier.
{
"type": "string",
"description": "Opaque public identifier; its characters carry no semantics.",
"pattern": "^vop_[A-Za-z0-9]{20,80}$",
"minLength": 24,
"maxLength": 84
}If-None-Match · header
RFC 9110 entity-tag condition. Send the last strong ETag to avoid retransmitting an unchanged representation. Lists and `*` are accepted according to the HTTP field grammar.
{
"type": "string",
"minLength": 1,
"maxLength": 512
}Responses
200 · application/json
Immutable completed validation evidence.
Required fields: schema, id, operationId, source, validationPolicy, valid, syntax, validatedAt, evidence, issues
{
"type": "object",
"additionalProperties": false,
"description": "Immutable evidence for one completed validation. Invalid XML or an\ninvoice that violates the selected policy is represented by\n`valid: false`, at least one error issue, and a successful operation.\n",
"required": [
"schema",
"id",
"operationId",
"source",
"validationPolicy",
"valid",
"syntax",
"validatedAt",
"evidence",
"issues"
],
"properties": {
"schema": {
"type": "string",
"const": "d0.einvoice.validation-result.v1",
"minLength": 32,
"maxLength": 32
},
"id": {
"type": "string",
"description": "Opaque public identifier; its characters carry no semantics.",
"pattern": "^vrs_[A-Za-z0-9]{20,80}$",
"minLength": 24,
"maxLength": 84
},
"operationId": {
"type": "string",
"description": "Opaque public identifier; its characters carry no semantics.",
"pattern": "^vop_[A-Za-z0-9]{20,80}$",
"minLength": 24,
"maxLength": 84
},
"source": {
"type": "object",
"additionalProperties": false,
"description": "Exact immutable source bytes consumed by the processor.",
"required": [
"documentId",
"mediaType",
"byteIdentity"
],
"properties": {
"documentId": {
"type": "string",
"description": "Opaque public identifier; its characters carry no semantics.",
"pattern": "^doc_[A-Za-z0-9]{20,80}$",
"minLength": 24,
"maxLength": 84
},
"mediaType": {
"type": "string",
"const": "application/xml",
"minLength": 15,
"maxLength": 15
},
"byteIdentity": {
"type": "object",
"additionalProperties": false,
"description": "Exact immutable identity of one byte representation.",
"required": [
"sizeBytes",
"sha256",
"contentDigest"
],
"properties": {
"sizeBytes": {
"type": "integer",
"format": "int64",
"minimum": 1,
"maximum": 20971520
},
"sha256": {
"type": "string",
"description": "Lowercase hexadecimal SHA-256 digest.",
"pattern": "^[0-9a-f]{64}$",
"minLength": 64,
"maxLength": 64
},
"contentDigest": {
"type": "string",
"description": "Canonical single-member RFC 9530 SHA-256 Content-Digest value.",
"pattern": "^sha-256=:[A-Za-z0-9+/]{43}=:$",
"minLength": 54,
"maxLength": 54
}
}
}
}
},
"validationPolicy": {
"type": "object",
"additionalProperties": false,
"description": "Frozen policy manifest selected before work was queued.",
"required": [
"id",
"version",
"manifestSha256",
"manifestContentDigest"
],
"properties": {
"id": {
"type": "string",
"description": "Opaque id pinning exactly one immutable policy manifest.",
"pattern": "^vpol_[A-Za-z0-9]{20,80}$",
"minLength": 25,
"maxLength": 85
},
"version": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"manifestSha256": {
"type": "string",
"description": "Lowercase hexadecimal SHA-256 digest.",
"pattern": "^[0-9a-f]{64}$",
"minLength": 64,
"maxLength": 64
},
"manifestContentDigest": {
"type": "string",
"description": "Canonical single-member RFC 9530 SHA-256 Content-Digest value.",
"pattern": "^sha-256=:[A-Za-z0-9+/]{43}=:$",
"minLength": 54,
"maxLength": 54
}
}
},
"valid": {
"type": "boolean"
},
"syntax": {
"type": "string",
"enum": [
"ubl",
"cii",
"unknown"
],
"minLength": 3,
"maxLength": 7
},
"profile": {
"type": "string",
"minLength": 1,
"maxLength": 2048
},
"validatedAt": {
"type": "string",
"format": "date-time",
"description": "RFC 3339 timestamp with an explicit UTC offset.",
"minLength": 20,
"maxLength": 64
},
"evidence": {
"type": "object",
"additionalProperties": false,
"description": "Exact software and compliance artifacts used for this result.",
"required": [
"processor",
"validator",
"rulesets"
],
"properties": {
"processor": {
"allOf": [
{
"type": "object",
"additionalProperties": false,
"description": "Version and SHA-256 identity of one executed or loaded artifact.",
"required": [
"kind",
"name",
"version",
"artifactSha256",
"artifactContentDigest"
],
"properties": {
"kind": {
"type": "string",
"enum": [
"processor",
"validator",
"ruleset"
],
"minLength": 7,
"maxLength": 9
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"version": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"artifactSha256": {
"type": "string",
"description": "Lowercase hexadecimal SHA-256 digest.",
"pattern": "^[0-9a-f]{64}$",
"minLength": 64,
"maxLength": 64
},
"artifactContentDigest": {
"type": "string",
"description": "Canonical single-member RFC 9530 SHA-256 Content-Digest value.",
"pattern": "^sha-256=:[A-Za-z0-9+/]{43}=:$",
"minLength": 54,
"maxLength": 54
}
}
},
{
"type": "object",
"required": [
"kind"
],
"properties": {
"kind": {
"const": "processor"
}
}
}
]
},
"validator": {
"allOf": [
{
"type": "object",
"additionalProperties": false,
"description": "Version and SHA-256 identity of one executed or loaded artifact.",
"required": [
"kind",
"name",
"version",
"artifactSha256",
"artifactContentDigest"
],
"properties": {
"kind": {
"type": "string",
"enum": [
"processor",
"validator",
"ruleset"
],
"minLength": 7,
"maxLength": 9
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"version": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"artifactSha256": {
"type": "string",
"description": "Lowercase hexadecimal SHA-256 digest.",
"pattern": "^[0-9a-f]{64}$",
"minLength": 64,
"maxLength": 64
},
"artifactContentDigest": {
"type": "string",
"description": "Canonical single-member RFC 9530 SHA-256 Content-Digest value.",
"pattern": "^sha-256=:[A-Za-z0-9+/]{43}=:$",
"minLength": 54,
"maxLength": 54
}
}
},
{
"type": "object",
"required": [
"kind"
],
"properties": {
"kind": {
"const": "validator"
}
}
}
]
},
"rulesets": {
"type": "array",
"description": "Ordered immutable compliance evidence. The first component is the primary ruleset that produced the validation finding; later components preserve additional provenance artifacts loaded by that policy.",
"minItems": 1,
"maxItems": 16,
"uniqueItems": true,
"items": {
"allOf": [
{
"type": "object",
"additionalProperties": false,
"description": "Version and SHA-256 identity of one executed or loaded artifact.",
"required": [
"kind",
"name",
"version",
"artifactSha256",
"artifactContentDigest"
],
"properties": {
"kind": {
"type": "string",
"enum": [
"processor",
"validator",
"ruleset"
],
"minLength": 7,
"maxLength": 9
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"version": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"artifactSha256": {
"type": "string",
"description": "Lowercase hexadecimal SHA-256 digest.",
"pattern": "^[0-9a-f]{64}$",
"minLength": 64,
"maxLength": 64
},
"artifactContentDigest": {
"type": "string",
"description": "Canonical single-member RFC 9530 SHA-256 Content-Digest value.",
"pattern": "^sha-256=:[A-Za-z0-9+/]{43}=:$",
"minLength": 54,
"maxLength": 54
}
}
},
{
"type": "object",
"required": [
"kind"
],
"properties": {
"kind": {
"const": "ruleset"
}
}
}
]
}
}
}
},
"issues": {
"type": "array",
"maxItems": 1000,
"items": {
"type": "object",
"additionalProperties": false,
"description": "Structured policy finding. Message and location are bounded, stable, and\ncontain no invoice values, customer data, or attacker-controlled parser\ntext.\n",
"required": [
"severity",
"code",
"message"
],
"properties": {
"severity": {
"type": "string",
"enum": [
"error",
"warning",
"information"
],
"minLength": 5,
"maxLength": 11
},
"code": {
"type": "string",
"description": "Stable ASCII identifier emitted by the pinned compliance ruleset;\nnever free-form diagnostic text or invoice-derived data.\n",
"minLength": 1,
"maxLength": 256,
"pattern": "^[A-Za-z][A-Za-z0-9]*(?:[._:-][A-Za-z0-9]+)*$"
},
"message": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"location": {
"type": "string",
"minLength": 1,
"maxLength": 8192
}
}
}
}
},
"oneOf": [
{
"title": "Valid validation result",
"x-d0-wire-variant": "valid",
"required": [
"valid",
"profile"
],
"properties": {
"valid": {
"const": true
},
"syntax": {
"enum": [
"ubl",
"cii"
]
},
"issues": {
"not": {
"contains": {
"type": "object",
"properties": {
"severity": {
"const": "error"
}
},
"required": [
"severity"
]
}
}
}
}
},
{
"title": "Invalid validation result with recognized syntax",
"x-d0-wire-variant": "invalid-recognized",
"required": [
"valid"
],
"properties": {
"valid": {
"const": false
},
"syntax": {
"enum": [
"ubl",
"cii"
]
},
"issues": {
"minItems": 1,
"contains": {
"type": "object",
"properties": {
"severity": {
"const": "error"
}
},
"required": [
"severity"
]
}
}
}
},
{
"title": "Invalid validation result with unknown syntax",
"x-d0-wire-variant": "invalid-unknown",
"required": [
"valid"
],
"properties": {
"valid": {
"const": false
},
"syntax": {
"const": "unknown"
},
"issues": {
"minItems": 1,
"contains": {
"type": "object",
"properties": {
"severity": {
"const": "error"
}
},
"required": [
"severity"
]
}
}
},
"not": {
"properties": {
"profile": {
"type": "string",
"minLength": 1,
"maxLength": 2048
}
},
"required": [
"profile"
]
}
}
]
}304
The selected representation has the supplied entity tag.
401 · application/problem+json
OAuth token or its required DPoP proof is absent, invalid, expired, or replayed.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}403 · application/problem+json
The authenticated client lacks a required scope.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}404 · application/problem+json
Resource does not exist in the authenticated project.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}409 · application/problem+json
Current resource or idempotency state conflicts with the request. Common types include `request-in-progress`, `result-not-ready`, and `operation-failed`.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}429 · application/problem+json
Project or client rate limit was exceeded.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}500 · application/problem+json
Unexpected internal failure with no sensitive diagnostics.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}503 · application/problem+json
A required durable platform dependency is temporarily unavailable.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}default · application/problem+json
Any other bounded 4xx or 5xx RFC 9457 response.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}GET /validation-policiesList validation policies
Lists immutable policy manifests visible to the authenticated project. `available` and `deprecated` policies may be selected for new operations; `withdrawn` policies remain discoverable for historical evidence but are rejected by new validation requests. Pagination order is stable for the lifetime of a cursor.
Parameters
limit · query
Maximum number of policies to return.
{
"type": "integer",
"format": "int32",
"minimum": 1,
"maximum": 100,
"default": 50
}cursor · query
Opaque cursor returned by the preceding page.
{
"type": "string",
"minLength": 1,
"maxLength": 1024
}If-None-Match · header
RFC 9110 entity-tag condition. Send the last strong ETag to avoid retransmitting an unchanged representation. Lists and `*` are accepted according to the HTTP field grammar.
{
"type": "string",
"minLength": 1,
"maxLength": 512
}Responses
200 · application/json
One bounded page of validation policies.
Required fields: schema, items
{
"type": "object",
"additionalProperties": false,
"required": [
"schema",
"items"
],
"properties": {
"schema": {
"type": "string",
"const": "d0.einvoice.validation-policy-page.v1",
"minLength": 37,
"maxLength": 37
},
"items": {
"type": "array",
"maxItems": 100,
"items": {
"type": "object",
"additionalProperties": false,
"description": "Discoverable lifecycle metadata plus an immutable canonical policy\nmanifest. Lifecycle `status` may change; every other field is frozen.\n",
"required": [
"schema",
"id",
"name",
"version",
"status",
"manifestSha256",
"manifestContentDigest",
"acceptedSyntaxes",
"profiles",
"validator",
"rulesets",
"publishedAt"
],
"properties": {
"schema": {
"type": "string",
"const": "d0.einvoice.validation-policy.v1",
"minLength": 32,
"maxLength": 32
},
"id": {
"type": "string",
"description": "Opaque id pinning exactly one immutable policy manifest.",
"pattern": "^vpol_[A-Za-z0-9]{20,80}$",
"minLength": 25,
"maxLength": 85
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"description": {
"type": "string",
"minLength": 1,
"maxLength": 2048
},
"version": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"status": {
"type": "string",
"enum": [
"available",
"deprecated",
"withdrawn"
],
"minLength": 9,
"maxLength": 10
},
"manifestSha256": {
"type": "string",
"description": "Lowercase hexadecimal SHA-256 digest.",
"pattern": "^[0-9a-f]{64}$",
"minLength": 64,
"maxLength": 64
},
"manifestContentDigest": {
"type": "string",
"description": "Canonical single-member RFC 9530 SHA-256 Content-Digest value.",
"pattern": "^sha-256=:[A-Za-z0-9+/]{43}=:$",
"minLength": 54,
"maxLength": 54
},
"acceptedSyntaxes": {
"type": "array",
"minItems": 1,
"maxItems": 2,
"uniqueItems": true,
"items": {
"type": "string",
"enum": [
"ubl",
"cii"
],
"minLength": 3,
"maxLength": 3
}
},
"profiles": {
"type": "array",
"minItems": 1,
"maxItems": 16,
"uniqueItems": true,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 2048
}
},
"validator": {
"allOf": [
{
"type": "object",
"additionalProperties": false,
"description": "Version and SHA-256 identity of one executed or loaded artifact.",
"required": [
"kind",
"name",
"version",
"artifactSha256",
"artifactContentDigest"
],
"properties": {
"kind": {
"type": "string",
"enum": [
"processor",
"validator",
"ruleset"
],
"minLength": 7,
"maxLength": 9
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"version": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"artifactSha256": {
"type": "string",
"description": "Lowercase hexadecimal SHA-256 digest.",
"pattern": "^[0-9a-f]{64}$",
"minLength": 64,
"maxLength": 64
},
"artifactContentDigest": {
"type": "string",
"description": "Canonical single-member RFC 9530 SHA-256 Content-Digest value.",
"pattern": "^sha-256=:[A-Za-z0-9+/]{43}=:$",
"minLength": 54,
"maxLength": 54
}
}
},
{
"type": "object",
"required": [
"kind"
],
"properties": {
"kind": {
"const": "validator"
}
}
}
]
},
"rulesets": {
"type": "array",
"description": "Ordered policy evidence. The first component identifies the primary runtime ruleset; later components identify additional immutable provenance artifacts required by the policy.",
"minItems": 1,
"maxItems": 16,
"uniqueItems": true,
"items": {
"allOf": [
{
"type": "object",
"additionalProperties": false,
"description": "Version and SHA-256 identity of one executed or loaded artifact.",
"required": [
"kind",
"name",
"version",
"artifactSha256",
"artifactContentDigest"
],
"properties": {
"kind": {
"type": "string",
"enum": [
"processor",
"validator",
"ruleset"
],
"minLength": 7,
"maxLength": 9
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"version": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"artifactSha256": {
"type": "string",
"description": "Lowercase hexadecimal SHA-256 digest.",
"pattern": "^[0-9a-f]{64}$",
"minLength": 64,
"maxLength": 64
},
"artifactContentDigest": {
"type": "string",
"description": "Canonical single-member RFC 9530 SHA-256 Content-Digest value.",
"pattern": "^sha-256=:[A-Za-z0-9+/]{43}=:$",
"minLength": 54,
"maxLength": 54
}
}
},
{
"type": "object",
"required": [
"kind"
],
"properties": {
"kind": {
"const": "ruleset"
}
}
}
]
}
},
"publishedAt": {
"type": "string",
"format": "date-time",
"description": "RFC 3339 timestamp with an explicit UTC offset.",
"minLength": 20,
"maxLength": 64
}
}
}
},
"nextCursor": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}304
The selected representation has the supplied entity tag.
400 · application/problem+json
Malformed request, headers, query, JSON, or byte-integrity failure.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}401 · application/problem+json
OAuth token or its required DPoP proof is absent, invalid, expired, or replayed.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}403 · application/problem+json
The authenticated client lacks a required scope.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}429 · application/problem+json
Project or client rate limit was exceeded.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}500 · application/problem+json
Unexpected internal failure with no sensitive diagnostics.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}503 · application/problem+json
A required durable platform dependency is temporarily unavailable.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}default · application/problem+json
Any other bounded 4xx or 5xx RFC 9457 response.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}GET /validation-policies/{validationPolicyId}Fetch one pinned validation policy
Returns a discoverable policy and the digest of its canonical immutable manifest. Lifecycle status may later change to prevent new selections, but the id, version, manifest digest, accepted syntax/profile set, and component identities never change.
Parameters
validationPolicyId · path · required
Opaque identifier of one immutable validation-policy manifest.
{
"type": "string",
"description": "Opaque id pinning exactly one immutable policy manifest.",
"pattern": "^vpol_[A-Za-z0-9]{20,80}$",
"minLength": 25,
"maxLength": 85
}If-None-Match · header
RFC 9110 entity-tag condition. Send the last strong ETag to avoid retransmitting an unchanged representation. Lists and `*` are accepted according to the HTTP field grammar.
{
"type": "string",
"minLength": 1,
"maxLength": 512
}Responses
200 · application/json
One validation policy.
Required fields: schema, id, name, version, status, manifestSha256, manifestContentDigest, acceptedSyntaxes, profiles, validator, rulesets, publishedAt
{
"type": "object",
"additionalProperties": false,
"description": "Discoverable lifecycle metadata plus an immutable canonical policy\nmanifest. Lifecycle `status` may change; every other field is frozen.\n",
"required": [
"schema",
"id",
"name",
"version",
"status",
"manifestSha256",
"manifestContentDigest",
"acceptedSyntaxes",
"profiles",
"validator",
"rulesets",
"publishedAt"
],
"properties": {
"schema": {
"type": "string",
"const": "d0.einvoice.validation-policy.v1",
"minLength": 32,
"maxLength": 32
},
"id": {
"type": "string",
"description": "Opaque id pinning exactly one immutable policy manifest.",
"pattern": "^vpol_[A-Za-z0-9]{20,80}$",
"minLength": 25,
"maxLength": 85
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"description": {
"type": "string",
"minLength": 1,
"maxLength": 2048
},
"version": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"status": {
"type": "string",
"enum": [
"available",
"deprecated",
"withdrawn"
],
"minLength": 9,
"maxLength": 10
},
"manifestSha256": {
"type": "string",
"description": "Lowercase hexadecimal SHA-256 digest.",
"pattern": "^[0-9a-f]{64}$",
"minLength": 64,
"maxLength": 64
},
"manifestContentDigest": {
"type": "string",
"description": "Canonical single-member RFC 9530 SHA-256 Content-Digest value.",
"pattern": "^sha-256=:[A-Za-z0-9+/]{43}=:$",
"minLength": 54,
"maxLength": 54
},
"acceptedSyntaxes": {
"type": "array",
"minItems": 1,
"maxItems": 2,
"uniqueItems": true,
"items": {
"type": "string",
"enum": [
"ubl",
"cii"
],
"minLength": 3,
"maxLength": 3
}
},
"profiles": {
"type": "array",
"minItems": 1,
"maxItems": 16,
"uniqueItems": true,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 2048
}
},
"validator": {
"allOf": [
{
"type": "object",
"additionalProperties": false,
"description": "Version and SHA-256 identity of one executed or loaded artifact.",
"required": [
"kind",
"name",
"version",
"artifactSha256",
"artifactContentDigest"
],
"properties": {
"kind": {
"type": "string",
"enum": [
"processor",
"validator",
"ruleset"
],
"minLength": 7,
"maxLength": 9
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"version": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"artifactSha256": {
"type": "string",
"description": "Lowercase hexadecimal SHA-256 digest.",
"pattern": "^[0-9a-f]{64}$",
"minLength": 64,
"maxLength": 64
},
"artifactContentDigest": {
"type": "string",
"description": "Canonical single-member RFC 9530 SHA-256 Content-Digest value.",
"pattern": "^sha-256=:[A-Za-z0-9+/]{43}=:$",
"minLength": 54,
"maxLength": 54
}
}
},
{
"type": "object",
"required": [
"kind"
],
"properties": {
"kind": {
"const": "validator"
}
}
}
]
},
"rulesets": {
"type": "array",
"description": "Ordered policy evidence. The first component identifies the primary runtime ruleset; later components identify additional immutable provenance artifacts required by the policy.",
"minItems": 1,
"maxItems": 16,
"uniqueItems": true,
"items": {
"allOf": [
{
"type": "object",
"additionalProperties": false,
"description": "Version and SHA-256 identity of one executed or loaded artifact.",
"required": [
"kind",
"name",
"version",
"artifactSha256",
"artifactContentDigest"
],
"properties": {
"kind": {
"type": "string",
"enum": [
"processor",
"validator",
"ruleset"
],
"minLength": 7,
"maxLength": 9
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"version": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"artifactSha256": {
"type": "string",
"description": "Lowercase hexadecimal SHA-256 digest.",
"pattern": "^[0-9a-f]{64}$",
"minLength": 64,
"maxLength": 64
},
"artifactContentDigest": {
"type": "string",
"description": "Canonical single-member RFC 9530 SHA-256 Content-Digest value.",
"pattern": "^sha-256=:[A-Za-z0-9+/]{43}=:$",
"minLength": 54,
"maxLength": 54
}
}
},
{
"type": "object",
"required": [
"kind"
],
"properties": {
"kind": {
"const": "ruleset"
}
}
}
]
}
},
"publishedAt": {
"type": "string",
"format": "date-time",
"description": "RFC 3339 timestamp with an explicit UTC offset.",
"minLength": 20,
"maxLength": 64
}
}
}304
The selected representation has the supplied entity tag.
401 · application/problem+json
OAuth token or its required DPoP proof is absent, invalid, expired, or replayed.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}403 · application/problem+json
The authenticated client lacks a required scope.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}404 · application/problem+json
Resource does not exist in the authenticated project.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}429 · application/problem+json
Project or client rate limit was exceeded.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}500 · application/problem+json
Unexpected internal failure with no sensitive diagnostics.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}503 · application/problem+json
A required durable platform dependency is temporarily unavailable.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}default · application/problem+json
Any other bounded 4xx or 5xx RFC 9457 response.
Required fields: type, title, status
{
"type": "object",
"additionalProperties": false,
"description": "Bounded RFC 9457 problem details with one safe extension.",
"required": [
"type",
"title",
"status"
],
"properties": {
"type": {
"type": "string",
"format": "uri",
"pattern": "^https://api\\.d0\\.eu/einvoice/problems/[a-z0-9-]{1,96}$",
"minLength": 37,
"maxLength": 2048,
"description": "Stable machine-readable problem-type URI."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"status": {
"type": "integer",
"format": "int32",
"minimum": 400,
"maximum": 599
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"instance": {
"type": "string",
"format": "uri-reference",
"minLength": 1,
"maxLength": 2048
},
"invalidParameters": {
"type": "array",
"maxItems": 100,
"description": "Safe structural request errors; values are never echoed.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
}
}
}
}
}