VIES API REST-Dokumentation
Einführung
Die von uns bereitgestellte API verwendet das Standard-HTTP-Protokoll. Alle API-Funktionen verwenden die HTTP-GET-Methode. Jeder Funktionsaufruf erfordert eine Abfrageberechtigung. Daten für die Abfrageautorisierung werden im HTTP-Header gesendet.
Produktionsservice
Die Registrierung einer juristischen Person, die die Funktionalität des viesapi.eu-Systems nutzen möchte, ist erforderlich. Gehen Sie dazu auf die Anmeldung Seite und füllen Sie das entsprechende Formular aus. Voraussetzung für die Nutzung des viesapi.eu-Systems ist die Akzeptanz der Nutzungsbedingungen. Richtiges Ausfüllen des Formulars und Anklicken der Registrieren Schaltfläche wird ein Konto im viesapi.eu-System erstellt und automatisch aktiviert.
Beim erstmaligen Einloggen wird automatisch eine Kennung mit dem dazugehörigen Schlüssel generiert. Der Identifikator ist öffentlich und muss nicht geschützt werden, während der Schlüssel privat ist und nicht an Dritte weitergegeben werden sollte.
Adresse Produktionsservice: https://viesapi.eu/api
Testservice
Die volle Funktionalität aller Shared Libraries kann mit der shared Testen Sie die VIES-API. Durch die Verwendung der Test-API ist es möglich, alle Funktionen zu überprüfen, die in kostenpflichtigen Plänen angeboten werden ohne dass ein Konto erstellt werden muss.
Prüfservice-Adresse: https://viesapi.eu/api-test
API-Schnittstellendefinition
Eine detaillierte Definition der API ist in einem OpenAPI-kompatiblen Format verfügbar und kann als YAML-Datei heruntergeladen werden hier.
API ist auch als Client-Schnittstelle verfügbar Swagger-UI.
Ausführung der Abfrage
Ein Beispiel für eine Abfrage an die Testsite:
GET /api-test/get/vies/euvat/PL7171642051 HTTP/1.1
Host: viesapi.eu:443
Authorization: MAC id="api_key_id", ts="unix_timestamp", nonce="random_str", mac="b64_calculated_mac_value"
User-Agent: VIESAPIClient/client_version platform_name/platform_version
Accept: mime_type
Wo:
api_key_id
– API-Schlüsselkennung (in der Produktionsumgebung der Wert der bei der Registrierung generierten Kennung, in der Testumgebung der Wert von test_id),unix_timestamp
– die aktuelle Uhrzeit in Form einer Sekundenzahl aus der sog Unix-Epoche,random_str
– zufälliger String, für jede Abfrage anders (min. 8 Zeichen, max. 16 Zeichen),b64_calculated_mac_value
– berechneter HMAC (unter Verwendung einerAPI key
, Werttest_key
auf der Testumgebung),client_version
– Client-Version (in unseren Bibliotheken ist es die Version unserer API-Bibliothek, z. B. 1.2.3),platform_name
– der Name der API-Client-Plattform (in unseren Bibliotheken ist es der Name der Bibliothekssprache, z. B. JAVA, PHP, .NET, Python),platform_version
– API-Client-Plattformversion (in unseren Bibliotheken ist es die Version der Bibliotheksumgebung, z. B. 17 für JAVA oder 7.4 für PHP),mime_type
– MIME-Typname, in dem die Antwort zurückgegeben werden soll, zwei Typen werden unterstützt:text/xml
undapplication/json
Wenn die Anfrage keinen Accept-Header enthält, wird standardmäßig XML zurückgegeben.
Authentifizierungsanfrage
Berechtigungsdaten müssen gem HTTP-Authentifizierung: MAC-Zugriffsauthentifizierung und dies ist die empfohlene Authentifizierungsmethode. Es ist auch möglich, die zu verwenden HTTP-Authentifizierung: Basisauthentifizierung Methode, verwenden Sie sie jedoch aus Sicherheitsgründen nur, wenn die Verwendung der ersten Methode aus irgendeinem Grund nicht möglich ist.
Jede Anfrage an unsere Website muss mit einer der beiden verfügbaren Methoden authentifiziert werden.
Methode 1 – HMAC (empfohlen)
Angabe des verwendeten Autorisierungsverfahrens: HTTP-Authentifizierung: MAC-Zugriffsauthentifizierung. Die Autorisierung besteht darin, den HMAC SHA256 aus einem ordnungsgemäß vorbereiteten String zu berechnen und das Ergebnis im HTTP-Header zu senden.
Beispiel
Die Eingabezeichenfolge für die HMAC-Funktion lautet:
ts + '\n' + nonce + '\n' + method + '\n' + path + '\n' + host + '\n' + port + '\n\n'
Wo:
ts
– die aktuelle Uhrzeit in Form einer Sekundenzahl aus der sog Unix-Epoche, sollten Sie immer die aktuelle Abfrageausführungszeit angeben (Servertoleranz +/- 10 min bezogen auf die aktuelle Zeit),nonce
– zufälliger String, für jede Abfrage anders (min. 8 Zeichen, max. 16 Zeichen),method
– HTTP-Methodenname (immer GET),path
– URL-Pfad der auszuführenden Abfrage,host
– Name des VIES-API-Servers (immerviesapi.eu
),port
– Portnummer des VIES-API-Servers (immer 443),’\n’
– Zeilenumbruchzeichen (ASCII-Code 10, 0x0A).
Für die Abfrage der Umsatzsteuer-Identifikationsnummer PL7171642051, die am 25.11.2019 00:00:00 UTC an den Testdienst gesendet wurde, sieht die Eingabezeichenfolge für die HMAC-Funktion folgendermaßen aus:
str = "1574640000\ndt831hs59s\nGET\n/api-test/get/vies/euvat/PL7171642051\nviesapi.eu\n443\n\n"
Die Eingabezeichenfolgendatei für dieses Beispiel kann heruntergeladen werden hier.
Aus dem vorbereiteten String berechnen wir HMAC SHA256, als HMAC-Passwort geben wir das an API key
, dh im Fall der Test-API, der Wert von test_key
:
HMAC_SHA256(str, "test_key") = 7776a12b958233ce60dd0f16b8d141e80472a1ee3b1e1fb136d7abe34cb59306
Die HMAC SHA256-Funktion gibt 32 binäre Bytes zurück (oben als a hex
Zeichenfolge für die Lesbarkeit). Datei mit Binärwert herunterladen hier.
Der Binärwert des berechneten HMAC sollte mit dem Base64-Algorithmus codiert werden, wir erhalten:
d3ahK5WCM85g3Q8WuNFB6ARyoe47Hh+xNter40y1kwY=
Dieser Wert sollte als MAC-Wert im Header mit Daten zur Autorisierung gesendet werden. Endlich:
Authorization: MAC id="test_id", ts="1574640000", nonce="dt831hs59s", mac="d3ahK5WCM85g3Q8WuNFB6ARyoe47Hh+xNter40y1kwY="
Auf einem Linux-Rechner kann der erforderliche MAC-Wert mit diesem Befehl in einem Schritt berechnet werden:
$ echo -e -n "1574640000\ndt831hs59s\nGET\n/api-test/get/vies/euvat/PL7171642051\nviesapi.eu\n443\n\n" | openssl dgst -sha256 -hmac "test_key" -binary | openssl enc -base64
Methode 2 – Basisauthentifizierung
Spezifikation dieser verwendeten Autorisierungsmethode: HTTP-Authentifizierung: Basisauthentifizierung.
Beispiel 1
Die Eingabezeichenfolge für die Base64-Funktion lautet:
str = key_id + ':' + key
Wo:
key_id
– API-Schlüsselkennung (im Falle einer Testumgebung,test_id
Schnur),key
– API-Schlüssel (im Falle einer Testumgebung stringtest_key
).
Für die Testumgebung lautet die Eingabezeichenfolge für die Base64-Funktion:
str = "test_id:test_key"
Nach Anwendung der Base64-Funktion erhalten wir:
Base64(str) = dGVzdF9pZDp0ZXN0X2tleQ==
Dieser Wert sollte als Basiswert im Header mit Daten zur Autorisierung gesendet werden. Letzten Endes:
Authorization: Basic dGVzdF9pZDp0ZXN0X2tleQ==
Beispiel 2
Das folgende Beispiel zeigt eine Abfrage, die in einer Testumgebung von einem Webbrowser aus aufgerufen werden kann. Einfach kopieren und in die Adressleiste des Browsers einfügen:
https://test_id:test_key@viesapi.eu/api-test/get/vies/euvat/PL7171642051
Wo:
test_id
– sich in einer Produktion zu authentifizieren Umfeld, Parameter sollte eine gültige Schlüsselkennung enthalten, die für die Autorisierung verwendet wird,test_key
– sich in einer Produktion zu authentifizieren Umgebung muss der Parameter einen gültigen Wert des für die Autorisierung verwendeten Schlüssels enthalten.
Die Schlüsselkennung und der Schlüssel werden vom Benutzer nach dem Einloggen in sein Konto auf der generiert viesapi.eu
Portal (API keys
Tab). Säh die Dokumentation Seite für weitere Informationen zur ID- und Schlüsselgenerierung.
Antwort
Bei korrekter Bearbeitung der Anfrage wird folgende Antwort generiert:
Detaillierte Beschreibung der zurückgegebenen Attribute:
uid
– eindeutige Abfrage-ID, generiert von viesapi.eu,countryCode
– Ländercode, in dem das Unternehmen registriert ist, das mit der in der Anfrage angegebenen EU-Umsatzsteuernummer verknüpft ist,vatNumber
– EU-Umsatzsteuernummer des in der Anfrage angegebenen verifizierten Unternehmens,valid
– Antwort des MIAS-Dienstes, die über den aktuellen EU-Mehrwertsteuerstatus des überprüften Unternehmens informiert:true
– die in der Anfrage angegebene EU-Umsatzsteuernummer ist gültig,false
– die in der Anfrage angegebene EU-Umsatzsteuer-Identifikationsnummer ist ungültig,
traderName
– Handelsname des Unternehmens,traderCompanyType
– gab immer eine Zeichenfolge mit „-“-Zeichen zurück,traderAddress
– Firmenadresse, an der das Unternehmen eingetragen ist,id
– eindeutige Abfrage-ID, die vom VIES-System generiert wirddate
– Ausführungsdatum abfragensource
– Datenquelle, immer: http://ec.europa.eu
Fehlerreaktion
Im Falle eines Fehlers im Zusammenhang mit der Bearbeitung der Anfrage wird die folgende Fehlermeldung zurückgegeben:
Detaillierte Beschreibung der zurückgegebenen Attribute:
code
– eindeutiger Fehlercode zur automatischen Fehlerbehandlung,description
– Vom Menschen abfangbare Fehlerbeschreibung,details
- Moder detaillierte Fehlerbeschreibung (optional),
Fehlercodes
In der folgenden Tabelle sind alle möglichen Fehler aufgeführt, die von REST-APIs und Programmierbibliotheken zurückgegeben werden:
Fehlercode | Fehlermeldung |
8 | Ungültiges Anfrageformat |
10 | Ungültiger API-Pfad |
11 | Interner Dienstfehler |
22 | Die EU-Umsatzsteuer-Identifikationsnummer ist ungültig |
23 | Daten konnten nicht vom VIES-System abgerufen werden |
26 | Diese Funktion ist im aktuell ausgewählten Plan nicht verfügbar |
27 | Diese Funktion unterstützt diesen Suchmodus nicht |
33 | Eine Abfrage der angegebenen Daten ist im Testmodus nicht möglich |
35 | Keine Zugangsabfrage-Berechtigung erforderlich |
36 | Der Dienst ist aufgrund geplanter technischer Arbeiten vorübergehend nicht verfügbar |
43 | Die Anzahl der Benutzerabfragen für den aktuellen Monat konnte nicht abgerufen werden |
54 | Falsches Datum oder falsche Uhrzeit auf dem Computer oder System des Benutzers |
55 | Ungültiger MAC-String-Wert im Header mit Abfrageanmeldeinformationen |
57 | Ungültiger Schlüsselwert im Header mit Abfrageanmeldeinformationen |
58 | Die maximale Anzahl gleichzeitiger Abfragen für diesen Mitgliedstaat wurde erreicht |
59 | Der Antrag im Mitgliedstaat wird nicht beantwortet oder ist nicht verfügbar |
101 | Die Verbindungs-IP-Nummer stimmt nicht mit der dem API-Schlüssel zugewiesenen IP-Nummer überein |
102 | API-Schlüssel ist gesperrt |
103 | Ungültiger API-Schlüssel |
104 | Die maximale Anzahl an Abfragen, die für den ausgewählten Plan verfügbar sind, wurde erreicht |
105 | Konto gesperrt oder gelöscht |
106 | Ungültiger Kontotyp |
107 | Das Prepaid-Konto wurde nicht bezahlt |
108 | Ungültige API-Schlüssel-ID |
201 | Verbindung zum VIES-API-Dienst konnte nicht hergestellt werden |
202 | Die Antwort des VIES-API-Dienstes weist ein ungültiges Format auf |
203 | Ungültiger Nummerntyp |
204 | NIP ist ungültig |
205 | Die EU-Umsatzsteuer-Identifikationsnummer ist ungültig |
206 | Funktion hat eine Ausnahme generiert |
207 | Das Datum hat ein ungültiges Format |
208 | Ungültiger Eingabeparameter |