Isolated test contract · 2026-10-15-test-github-archives-release
E-Rechnung test API
Isolierte Dokumente und echte Validierung über einen separaten Prozessor ohne Netzausgang. Keine Rechnungsausstellung.
Current service status ↗Versioned guides and examples
Published local documents for revision 2026-10-15-test-github-archives-release. SDK guidance describes
integration options; no external SDK download is implied.
Overview · overview.md
# E-Rechnung — isolierter Test
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.test.d0.eu/einvoice. Maschine: Client Credentials mit private_key_jwt und DPoP. Signaturschlüssel bleiben ausschließlich im Serverprozess.
Quickstart · quickstart.md
# E-Rechnung: Test in vier Schritten
1. Produkt und Organisationsberechtigung in der Console prüfen. Für Test 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.test.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. Eine Test-Policy lesen, synthetische XML-Bytes als Dokument hochladen und eine Validierung starten. Der isolierte Prozessor prüft die Bytes ohne externen Netzausgang. Das Ergebnis ist keine Ausstellung oder Zustellung.
4. Nur die im `public-openapi.json` dieser Revision gelisteten Operationen verwenden. Testdaten und Test-Clients nie mit Produktion mischen.
Verfügbare Test-Scopes: `einvoice.documents:read`, `einvoice.documents:write`, `einvoice.validations:read`, `einvoice.validations:write`, `einvoice.policies: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-test-github-archives-release
- Neue unveränderliche Dokumentationsrevision. Die vorige Revision `2026-10-15-test-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-test-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-test-github-archives-release/examples/go.go` (SHA-256 `88bd16d86548c5c2888608f2b6c03e94db414efe11364d105c94ed46e37b3eb1`). Es demonstriert den Client mit festem test-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-test-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`.
Test workflow
Use a dedicated test machine client for published API operations or a dedicated human session for the browser Explorer. Production credentials are not accepted.
Open Test Explorer →Published operations
Only public, implemented operations in this pinned bundle are actionable. Machine DPoP and human Bearer requirements remain separate.
| 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 |
Operation reference
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
}
}
}
}
}
}