API ključ
Kako radi ključ tipa bearer: jedan skup ključeva za svakog klijenta, s opsezima.
- U sandboxu
Jednostavnim riječima
API ključem sustav koji poziva uslugu dokazuje da je smije koristiti. Svaki klijent ima vlastite ključeve, a svaki ključ ima opsege koji kažu što smije. Prvi ključ za sandbox izdajemo na zahtjev.
Ključ šaljite kao bearer token u svakom pozivu.
Authorization: Bearer <your-api-key>Što usluga radi s ključem
Usluga izračunava SHA-256 hash ključa koji pošaljete i uspoređuje ga s hashom koji čuva. Ne sprema nijednu vrijednost ključa. Svaka upotreba zapisuje redak u revizijski zapis, a ni taj redak ne sadrži vrijednost. Ključ za sandbox počinje s eik_test_, a produkcijski ključ s eik_live_.
Valjan ključ
Poziv za koji je potreban ključ, s valjanim ključem. Popis za obradu je prazan jer ništa nije odbijeno.
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": []
}Ključ koji nedostaje ili nije ispravan
Odgovor je 401, prije nego što se išta drugo pročita.
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
}Ključevi i opsezi
Ključ pripada jednom klijentu i vidi samo podatke tog klijenta. Račun drugog klijenta daje odgovor 404.
| Opseg | Što ključ smije |
|---|---|
submit | Slati račune (POST /invoices, POST /invoices/xml), izvoditi probnu provjeru (POST /validate) i otkazivati račun. |
read | Čitati račune, događaje i dokumente, popis za obradu i katalog. |
admin | Upravljati webhookom klijenta, pristupnim podacima za prijenosne sustave i API ključevima. |
Poziv bez opsega koji traži daje odgovor 403. Svaki opseg ima vlastito ograničenje brzine.
Izrada i opoziv ključeva
Ključ se prikazuje jednom, u odgovoru kojim se izrađuje. Čuvamo samo njegov SHA-256, pa se izgubljeni ključ ne može ponovno prikazati: opozovite ga i izradite novi.
- Ključ s opsegom
adminizrađuje ključeve za vlastitog klijenta, s bilo kojim opsegom koji i sam ima, i opoziva ih. Opoziv ključa opoziva i sve ključeve koje je izradio. - Jedan klijent može imati do 20 aktivnih ključeva. Svaki poziv računa se za klijenta, a ne za ključ, pa više ključeva ne donosi više zahtjeva.
- Opozvani ključ prestaje raditi odmah.
Prvi ključ za klijenta dobiva se od nas. Kasniji ključevi izrađuju se pozivom POST /keys.
Upozorenje
Ne stavljajte stvarne ključeve u primjere, prijave za podršku ni u e-poštu.