{"openapi":"3.1.0","info":{"title":"AXITAM Public API","description":"Reference data (ISO, CLDR), Belgian enterprises, annual accounts and addresses, Peppol participants - built on community-maintained and official sources. See the data-sources API for each source's version and license. Beta.","version":"0.10.0"},"servers":[{"url":"/","description":"This server"}],"tags":[{"name":"Peppol participants","description":"Who receives electronic documents (invoices, credit notes...) on the Peppol network: participant identifiers, business entities and accepted document types, worldwide (source: Peppol Directory, queried live - at most 2 requests per second, 503 UPSTREAM_BUSY beyond)."}],"paths":{"/api/v1/peppol/participants":{"get":{"tags":["Peppol participants"],"summary":"Search Peppol participants","description":"Every given criterion must match (logical AND); at least one of q, name, country, identifierScheme, identifierValue or documentType is required. Text criteria match partially, the others exactly. The Directory serves at most the 1 000 first results.","operationId":"search","parameters":[{"name":"q","in":"query","description":"Text searched in every field (names, identifiers, addresses...)","required":false,"schema":{"type":"string","maxLength":100,"minLength":3},"example":"0420254973"},{"name":"name","in":"query","description":"Text contained in a business entity name","required":false,"schema":{"type":"string","maxLength":100,"minLength":3},"example":"axitam"},{"name":"country","in":"query","description":"ISO 3166-1 alpha-2 country code of the business entity","required":false,"schema":{"type":"string","pattern":"^[A-Z]{2}$"},"example":"BE"},{"name":"identifierScheme","in":"query","description":"Scheme of an additional identifier (GLN, DUNS...)","required":false,"schema":{"type":"string","maxLength":100,"minLength":1},"example":"GLN"},{"name":"identifierValue","in":"query","description":"Value of an additional identifier","required":false,"schema":{"type":"string","maxLength":100,"minLength":1},"example":5410000000001},{"name":"documentType","in":"query","description":"Document type identifier with its scheme, exact and case sensitive","required":false,"schema":{"type":"string","maxLength":500,"minLength":3},"example":"busdox-docid-qns::urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1"},{"name":"page","in":"query","description":"0-based page index","required":false,"schema":{"type":"integer","format":"int32","default":0,"maximum":999,"minimum":0},"example":0},{"name":"limit","in":"query","description":"Participants per page","required":false,"schema":{"type":"integer","format":"int32","default":20,"maximum":100,"minimum":1},"example":20}],"responses":{"200":{"description":"Matching participants, possibly none","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PeppolSearchResponse"}}}},"400":{"description":"Criterion shorter than 3 characters, country not two upper-case letters or limit out of 1-100 (code INVALID_REQUEST); no search criterion or page beyond the 1 000 first results (code INVALID_ARGUMENT)","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"The Peppol Directory did not answer (code UPSTREAM_UNAVAILABLE)","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"The Peppol Directory rate limit is saturated, retry later (code UPSTREAM_BUSY)","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"The X-API-Key header carries an unknown, revoked or malformed key (code INVALID_API_KEY). Leave the header out to call anonymously.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests from this client: the code is RATE_LIMITED, Retry-After says in how many seconds a request will pass again.","headers":{"Retry-After":{"description":"Seconds to wait before retrying","schema":{"type":"string"}},"X-RateLimit-Limit":{"description":"Sustained requests per second allowed on this path","schema":{"type":"string"}},"X-RateLimit-Remaining":{"description":"Requests left in the current burst","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{},{"apiKey":[]}]}},"/api/v1/peppol/participants/{participantId}":{"get":{"tags":["Peppol participants"],"summary":"Read one Peppol participant","description":"By its participant identifier: ISO 6523 agency code and identifier (0208:0420254973), the iso6523-actorid-upis scheme prefix being optional.","operationId":"findParticipant","parameters":[{"name":"participantId","in":"path","description":"Participant identifier: agency code and identifier, or the full iso6523-actorid-upis::0208:0420254973 form","required":true,"schema":{"type":"string"},"example":"0208:0420254973"}],"responses":{"200":{"description":"Participant found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PeppolParticipantResponse"}}}},"400":{"description":"Not a well-formed participant identifier (code INVALID_PEPPOL_PARTICIPANT_ID)","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"No participant has this identifier (code PEPPOL_PARTICIPANT_NOT_FOUND)","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"The Peppol Directory did not answer (code UPSTREAM_UNAVAILABLE)","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"The Peppol Directory rate limit is saturated, retry later (code UPSTREAM_BUSY)","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"The X-API-Key header carries an unknown, revoked or malformed key (code INVALID_API_KEY). Leave the header out to call anonymously.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests from this client: the code is RATE_LIMITED, Retry-After says in how many seconds a request will pass again.","headers":{"Retry-After":{"description":"Seconds to wait before retrying","schema":{"type":"string"}},"X-RateLimit-Limit":{"description":"Sustained requests per second allowed on this path","schema":{"type":"string"}},"X-RateLimit-Remaining":{"description":"Requests left in the current burst","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{},{"apiKey":[]}]}}},"components":{"schemas":{"ErrorResponse":{"type":"object","properties":{"code":{"type":"string"},"correlationId":{"type":"string"}}},"PeppolBusinessEntityResponse":{"type":"object","description":"A business entity registered behind the participant identifier","properties":{"names":{"type":"array","description":"Names, possibly in several languages","items":{"$ref":"#/components/schemas/PeppolEntityNameResponse"}},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code","example":"BE"},"geoInfo":{"type":["string","null"],"description":"Free-text geographical information"},"identifiers":{"type":"array","description":"Additional identifiers","items":{"$ref":"#/components/schemas/PeppolIdentifierResponse"}},"websites":{"type":"array","description":"Websites","items":{"type":"string"}},"contacts":{"type":"array","description":"Contacts, as published","items":{"$ref":"#/components/schemas/PeppolContactResponse"}},"additionalInfo":{"type":["string","null"],"description":"Free-text additional information"},"registrationDate":{"type":["string","null"],"format":"date","description":"Date the business card was registered","example":"2025-04-04"}}},"PeppolContactResponse":{"type":"object","description":"A contact published on the business card, as published","properties":{"type":{"type":["string","null"],"description":"Purpose of the contact","example":"support"},"name":{"type":["string","null"],"description":"Contact name"},"phone":{"type":["string","null"],"description":"Phone number"},"email":{"type":["string","null"],"description":"E-mail address"}}},"PeppolDocumentTypeResponse":{"type":"object","description":"A document type the participant can receive","properties":{"scheme":{"type":"string","description":"Document type identifier scheme","example":"busdox-docid-qns"},"value":{"type":"string","description":"Document type identifier","example":"urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1"}}},"PeppolEntityNameResponse":{"type":"object","description":"A name of the business entity, optionally in a given language","properties":{"name":{"type":"string","description":"The name","example":"AXITAM"},"language":{"type":["string","null"],"description":"ISO 639-1 language code; absent when the Directory gives none","example":"fr"}}},"PeppolIdentifierResponse":{"type":"object","description":"An identifier with its scheme","properties":{"scheme":{"type":"string","description":"Identifier scheme","example":"GLN"},"value":{"type":"string","description":"Identifier value","example":"5410000000001"}}},"PeppolParticipantResponse":{"type":"object","description":"A Peppol participant: its identifier, the business entities behind it and the document types it receives (source: Peppol Directory, live)","properties":{"participantId":{"$ref":"#/components/schemas/PeppolIdentifierResponse","description":"Participant identifier: ISO 6523 issuing agency code and identifier (0208 = Belgian enterprise number, 9925 = Belgian VAT number, 0009 = French SIRET...)"},"entities":{"type":"array","description":"Business entities registered behind the identifier","items":{"$ref":"#/components/schemas/PeppolBusinessEntityResponse"}},"documentTypes":{"type":"array","description":"Document types the participant can receive","items":{"$ref":"#/components/schemas/PeppolDocumentTypeResponse"}}}},"PeppolSearchResponse":{"type":"object","description":"One page of Peppol participants matching the search","properties":{"totalCount":{"type":"integer","format":"int64","description":"Participants matching the search in the whole Directory","example":15},"page":{"type":"integer","format":"int32","description":"0-based page index","example":0},"limit":{"type":"integer","format":"int32","description":"Page size","example":20},"participants":{"type":"array","description":"Participants of this page","items":{"$ref":"#/components/schemas/PeppolParticipantResponse"}}}}},"securitySchemes":{"apiKey":{"type":"apiKey","description":"Optional. A key of a registered developer (portal: /account/) raises the request rate of the client from the anonymous per-IP limit to the plan's. Without it the request is anonymous; an unknown or revoked key is refused (401 INVALID_API_KEY).","name":"X-API-Key","in":"header"}}}}