Document Type
Returns a list of all Peppol document types.
The response can be filtered using the following parameters:
categorystateschemeversion
Endpoints
For information only. Full, normative endpoint definitions in the Swagger documentation.
| Endpoint | Description | Role |
|---|---|---|
| GET /document_types | List all document types | user |
Example DocumentType datatype
{
"id": "at-0d9",
"abstract": false,
"bis-version": "3",
"category": "Invoice",
"comment": "TICC-312",
"domain-community": "POAC",
"initial-release": "8.8",
"issued-by-openpeppol": true,
"name": "MY PINT Invoice v1.0",
"process-ids": [
{
"scheme": "cenbii-procid-ubl",
"value": "urn:peppol:bis:billing"
}
],
"scheme": "peppol-doctype-wildcard",
"state": "active",
"value": "urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:peppol:pint:billing-1@my-1::2.1",
"version": "9.1"
}I cannot access the live Peppol codelist endpoint, so I cannot return the full, current list of all Peppol document types. To obtain the complete and up‑to‑date list, query the official Peppol codelist service or download the codelist from the documentation site you linked.
Below is example code showing how you might call a hypothetical /document_types endpoint with optional filters (category, state, scheme, version) and work with the kebab‑case fields exactly as returned.
import fetch from "node-fetch";
async function listDocumentTypes({ category, state, scheme, version } = {}) {
const params = new URLSearchParams();
if (category) params.set("category", category);
if (state) params.set("state", state);
if (scheme) params.set("scheme", scheme);
if (version) params.set("version", version);
const url = `https://example.peppol-service.org/document_types?${params.toString()}`;
const res = await fetch(url, { method: "GET" });
if (!res.ok) {
throw new Error(`HTTP ${res.status} - ${res.statusText}`);
}
/**
* The API is expected to return an array of DocumentType objects, e.g.:
* {
* "id": "at-0d9",
* "abstract": false,
* "bis-version": "3",
* "category": "Invoice",
* "comment": "TICC-312",
* "domain-community": "POAC",
* "initial-release": "8.8",
* "issued-by-openpeppol": true,
* "name": "MY PINT Invoice v1.0",
* "process-ids": [
* {
* "scheme": "cenbii-procid-ubl",
* "value": "urn:peppol:bis:billing"
* }
* ],
* "scheme": "peppol-doctype-wildcard",
* "state": "active",
* "value": "urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:peppol:pint:billing-1@my-1::2.1",
* "version": "9.1"
* }
*/
const data = await res.json();
// IMPORTANT: keep the kebab-case field names as-is; do not convert to camelCase.
// Example: filter in-memory for active Invoice documents in scheme "peppol-doctype-wildcard".
const filtered = data.filter((doc) =>
doc.category === "Invoice" &&
doc.state === "active" &&
doc.scheme === "peppol-doctype-wildcard"
);
return filtered;
}
(async () => {
try {
const docs = await listDocumentTypes({ state: "active" });
console.log("Active document types:");
for (const d of docs) {
console.log(`- ${d.id}: ${d.name} (category=${d.category}, version=${d.version})`);
}
} catch (err) {
console.error("Error listing document types:", err);
}
})();
| Filter parameter | Description | Example value |
|---|---|---|
| category | High-level document category | Invoice, Order, Catalogue |
| state | Lifecycle state of the document type | active, deprecated |
| scheme | Document type identifier scheme | peppol-doctype-wildcard |
| version | Codelist version in which the document type is defined | 9.1 |