Kľúč API
Ako funguje kľúč typu Bearer: pre každého klienta samostatná sada kľúčov, s oprávneniami.
- V sandboxe
Jednoducho povedané
Kľúčom API volajúci systém preukazuje, že smie službu používať. Každý klient má vlastné kľúče a každý kľúč má oprávnenia, ktoré určujú, čo smie robiť. Prvý kľúč pre sandbox vydávame na požiadanie.
Kľúč posielajte pri každom volaní ako token typu Bearer.
Authorization: Bearer <your-api-key>Čo s ním služba robí
Služba z kľúča, ktorý pošlete, vypočíta hash SHA-256 a porovná ho s hashom, ktorý má uložený. Žiadnu hodnotu kľúča neukladá. Každé použitie zapíše auditný záznam a ani ten neobsahuje žiadnu hodnotu. Kľúč pre sandbox sa začína eik_test_ a produkčný kľúč eik_live_.
Platný kľúč
Volanie, ktoré vyžaduje kľúč, s platným kľúčom. Zoznam na riešenie je prázdny, pretože nič nebolo odmietnuté.
curl "https://api-sandbox-eu.eurinvoice.com/care" \
-H "Authorization: Bearer <your-api-key>"import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Example {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder(URI.create("https://api-sandbox-eu.eurinvoice.com/care"))
.header("Authorization", "Bearer <your-api-key>")
.GET()
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}
}const response = await fetch('https://api-sandbox-eu.eurinvoice.com/care', {
headers: {
Authorization: 'Bearer <your-api-key>',
},
});
console.log(response.status);
console.log(await response.text());{
"data": []
}Chýbajúci alebo nesprávny kľúč
Odpoveď je 401, skôr než sa prečíta čokoľvek iné.
curl "https://api-sandbox-eu.eurinvoice.com/invoices/inv_unknown"import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Example {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder(URI.create("https://api-sandbox-eu.eurinvoice.com/invoices/inv_unknown"))
.GET()
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}
}const response = await fetch('https://api-sandbox-eu.eurinvoice.com/invoices/inv_unknown', {
});
console.log(response.status);
console.log(await response.text());{
"type": "https://eurinvoice.com/problems/unauthorized",
"title": "Missing or unknown API key",
"status": 401
}Kľúče a oprávnenia
Kľúč patrí jednému klientovi a vidí len údaje tohto klienta. Pre faktúru iného klienta je odpoveď 404.
| Oprávnenie | Čo môže kľúč robiť |
|---|---|
submit | Posielať faktúry (POST /invoices, POST /invoices/xml), spúšťať skúšobný beh (POST /validate) a rušiť faktúry. |
read | Čítať faktúry, udalosti a dokumenty, zoznam na riešenie a katalóg. |
admin | Spravovať webhook klienta, prístupové údaje k sieťam a kľúče API. |
Volanie bez oprávnenia, ktoré potrebuje, odpovie 403. Každé oprávnenie má vlastný limit frekvencie.
Vytváranie a odvolávanie kľúčov
Kľúč sa zobrazí raz, v odpovedi, ktorá ho vytvorí. Uchovávame len jeho SHA-256, takže stratený kľúč sa nedá znova zobraziť: odvolajte ho a vytvorte nový.
- Kľúč s oprávnením
adminvytvára kľúče pre vlastného klienta, s ľubovoľnými oprávneniami, ktoré sám má, a odvoláva ich. Odvolanie kľúča odvolá aj každý kľúč, ktorý vytvoril. - Jeden klient môže mať až 20 živých kľúčov. Každé volanie sa počíta pre klienta, nie pre kľúč, takže viac kľúčov neprinesie viac požiadaviek.
- Odvolaný kľúč okamžite prestane fungovať.
Prvý kľúč pre klienta vydávame my. Ďalšie kľúče sa vytvárajú cez POST /keys.
Varovanie
Skutočné kľúče nedávajte do príkladov, tiketov ani e-mailov.