VIES API REST -dokumentaatio
Johdanto
Tarjoamamme API käyttää tavallista HTTP-protokollaa. Kaikki API-toiminnot käyttävät HTTP GET -menetelmää. Jokainen funktiokutsu vaatii kyselyn valtuutuksen. Tietoa kyselyn valtuutusta varten lähetetään HTTP-otsikossa.
Tuotantopalvelu
Viesapi.eu-järjestelmän toimintoja käyttävän tahon rekisteröinti vaaditaan. Voit tehdä tämän siirtymällä kohtaan Rekisteröinti sivulle ja täytä sopiva lomake. Viesapi.eu järjestelmän käytön edellytyksenä on hyväksyntä Käyttöehdot. Täytä lomake oikein ja napsauta Rekisteröidy -painike luo tilin viesapi.eu-järjestelmään ja aktivoi sen automaattisesti.
Kun kirjaudut sisään ensimmäistä kertaa, tunniste luodaan automaattisesti vastaavan avaimen kanssa. Tunniste on julkinen eikä vaadi suojaa, kun taas avain on yksityinen, eikä sitä tule antaa kolmansien osapuolten saataville.
Tuotantopalvelun osoite: https://viesapi.eu/api
Testauspalvelu
Kaikkien jaettujen kirjastojen toimivuus voidaan tarkistaa jaetun kirjaston avulla Testaa VIES API. Testi-API:n avulla on mahdollista tarkistaa kaikki maksullisten suunnitelmien tarjoamat toiminnot ilman tarvetta luoda tiliä.
Testipalvelun osoite: https://viesapi.eu/api-test
API-rajapinnan määritelmä
Yksityiskohtainen sovellusliittymän määritelmä on saatavilla OpenAPI-yhteensopivassa muodossa, ja se voidaan ladata YAML-tiedostona tässä.
API on saatavana myös asiakasliittymänä Swagger UI.
Kyselyn suorittaminen
Esimerkki kyselyn tekemisestä testisivustolle:
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
Missä:
api_key_id
– API-avaimen tunniste (tuotantoympäristössä rekisteröinnin yhteydessä luodun tunnuksen arvo, testiympäristössä test_id:n arvo),unix_timestamp
– nykyinen aika sekuntimääränä ns unix aikakausi,random_str
– satunnainen merkkijono, jokaiselle kyselylle erilainen (vähintään 8 merkkiä, enintään 16 merkkiä),b64_calculated_mac_value
– laskettu HMAC (käyttäenAPI key
, arvotest_key
testiympäristössä),client_version
– asiakasversio (kirjastoissamme se on API-kirjastomme versio, esim. 1.2.3),platform_name
– API-asiakasalustan nimi (kirjastoissamme se on kirjastokielen nimi, esim. JAVA, PHP, .NET, Python),platform_version
– API-asiakasalustan versio (kirjastoissamme se on kirjastoympäristön versio, esim. 17 JAVA:lle tai 7.4 PHP:lle),mime_type
– MIME-tyypin nimi, jossa vastaus palautetaan, kahta tyyppiä tuetaan:text/xml
jaapplication/json
, jos pyyntö ei sisällä Hyväksy-otsikkoa, XML palautetaan oletuksena.
Todennuspyyntö
Lupatiedot on laadittava mukaisesti HTTP-todennus: MAC Access Authentication ja tämä on suositeltu todennusmenetelmä. On myös mahdollista käyttää HTTP-todennus: Perustodennus Käytä sitä kuitenkin turvallisuussyistä vain, jos ensimmäisen menetelmän käyttäminen ei jostain syystä ole mahdollista.
Jokainen verkkosivustollemme lähetettävä kysely on todennettu jommallakummalla kahdesta saatavilla olevasta menetelmästä.
Tapa 1 – HMAC (suositus)
Käytetty lupamenetelmä: HTTP-todennus: MAC Access Authentication. Valtuutus koostuu HMAC SHA256:n laskemisesta oikein valmistetusta merkkijonosta ja tuloksen lähettämisestä HTTP-otsikossa.
Esimerkki
HMAC-funktion syöttömerkkijono on:
ts + '\n' + nonce + '\n' + method + '\n' + path + '\n' + host + '\n' + port + '\n\n'
Missä:
ts
– nykyinen aika sekuntimääränä ns unix aikakausi, sinun tulee aina antaa nykyinen kyselyn suoritusaika (palvelimen toleranssi +/- 10 min suhteessa nykyiseen aikaan),nonce
– satunnainen merkkijono, jokaiselle kyselylle erilainen (vähintään 8 merkkiä, enintään 16 merkkiä),method
- HTTP-menetelmän nimi (aina GET),path
– suoritettavan kyselyn URL-osoite,host
– VIES API -palvelimen nimi (ainaviesapi.eu
),port
– VIES API -palvelimen portin numero (aina 443),’\n’
– rivinvaihtomerkki (ASCII-koodi 10, 0x0A).
Testipalveluun 2019-11-25 00:00:00 UTC lähetetyn ALV-numeron PL7171642051 kyselyn HMAC-funktion syöttömerkkijono näyttää tältä:
str = "1574640000\ndt831hs59s\nGET\n/api-test/get/vies/euvat/PL7171642051\nviesapi.eu\n443\n\n"
Tämän esimerkin syöttömerkkijonotiedosto voidaan ladata tässä.
Valmistetusta merkkijonosta laskemme HMAC SHA256:n, jonka HMAC-salasanaksi annamme API key
, eli testi-API:n tapauksessa arvo test_key
:
HMAC_SHA256(str, "test_key") = 7776a12b958233ce60dd0f16b8d141e80472a1ee3b1e1fb136d7abe34cb59306
HMAC SHA256 -funktio palauttaa 32 binaaritavua (näkyy yllä muodossa a hex
merkkijono luettavuuden vuoksi). Lataa tiedosto binääriarvolla tässä.
Lasketun HMAC:n binääriarvo tulisi koodata Base64-algoritmilla, saamme:
d3ahK5WCM85g3Q8WuNFB6ARyoe47Hh+xNter40y1kwY=
Tämä arvo tulee lähettää MAC-arvona valtuutustietojen otsikossa. Lopuksi:
Authorization: MAC id="test_id", ts="1574640000", nonce="dt831hs59s", mac="d3ahK5WCM85g3Q8WuNFB6ARyoe47Hh+xNter40y1kwY="
Linux-koneessa vaadittu MAC-arvo voidaan laskea yhdessä vaiheessa tällä komennolla:
$ 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
Tapa 2 – Perustodennus
Tämän käytetyn valtuutustavan määrittely: HTTP-todennus: Perustodennus.
Esimerkki 1
Base64-funktion syöttömerkkijono on:
str = key_id + ':' + key
Missä:
key_id
– API-avaimen tunniste (jos kyseessä on testiympäristö,test_id
merkkijono),key
– API-avain (testiympäristön tapauksessa merkkijonotest_key
).
Testiympäristössä Base64-funktion syöttömerkkijono on:
str = "test_id:test_key"
Base64-funktion käytön jälkeen saamme:
Base64(str) = dGVzdF9pZDp0ZXN0X2tleQ==
Tämä arvo tulee lähettää perusarvona valtuutustietojen otsikossa. Lopulta:
Authorization: Basic dGVzdF9pZDp0ZXN0X2tleQ==
Esimerkki 2
Seuraava esimerkki näyttää kyselyn, joka voidaan käynnistää testiympäristössä verkkoselaimesta. Kopioi ja liitä se selaimen osoitepalkkiin:
https://test_id:test_key@viesapi.eu/api-test/get/vies/euvat/PL7171642051
Missä:
test_id
– autentikoimaan tuotannossa ympäristöön, parametrin tulee sisältää kelvollinen valtuutukseen käytetty avaintunniste,test_key
– autentikoimaan tuotannossa ympäristössä, parametrin tulee sisältää valtuutukseen käytetyn avaimen kelvollinen arvo.
Käyttäjä luo avaimen tunnisteen ja avaimen kirjautuessaan sisään tililleen viesapi.eu
portaali (API keys
välilehti). See the dokumentointi sivulta saat lisätietoja tunnuksesta ja avainten luomisesta.
Vastaus
Jos pyyntö käsitellään oikein, syntyy seuraava vastaus:
Yksityiskohtainen kuvaus palautetuista määritteistä:
uid
– Viesapi.eu:n luoma yksilöllinen kyselytunniste,countryCode
– maakoodi, johon tiedustelussa ilmoitettuun EU:n ALV-numeroon liittyvä yritys on rekisteröity,vatNumber
– kyselyssä ilmoitetun varmennetun yrityksen EU-alv-numero,valid
– vastaus VIES-palvelusta, joka kertoo tarkastetun yksikön nykyisestä EU-arvonlisäverotilasta:true
– tiedustelussa annettu EU:n ALV-numero on voimassa,false
– kyselyssä annettu EU:n ALV-numero ei ole kelvollinen,
traderName
– yrityksen toiminimi,traderCompanyType
– palautti aina merkkijonon "-",traderAddress
– yrityksen osoite, johon yritys on rekisteröity,id
– VIES-järjestelmän luoma yksilöllinen kyselytunnistedate
– kyselyn suorituspäivämääräsource
– tietolähde, aina: http://ec.europa.eu
Virhevastaus
Jos pyynnön käsittelyyn liittyy virhe, palautetaan seuraava virhesanoma:
Yksityiskohtainen kuvaus palautetuista määritteistä:
code
– ainutlaatuinen virhekoodi automaattista virheenkäsittelyä varten,description
– ihmisen siepattavissa oleva virhekuvaus,details
– myksityiskohtainen virhekuvaus (valinnainen),
Virhekoodit
Alla olevassa taulukossa on lueteltu kaikki mahdolliset REST-sovellusliittymien ja ohjelmointikirjastojen palauttamat virheet:
Virhekoodi | Virheilmoitus |
8 | Virheellinen pyynnön muoto |
10 | Virheellinen API-polku |
11 | Sisäinen palveluvirhe |
22 | EU:n ALV-numero on virheellinen |
23 | Tietojen hakeminen VIES-järjestelmästä epäonnistui |
26 | Tämä ominaisuus ei ole käytettävissä tällä hetkellä valitussa sopimuksessa |
27 | Tämä toiminto ei tue tätä hakutilaa |
33 | Annettujen tietojen kysely ei ole mahdollista testitilassa |
35 | Pääsykyselyn valtuutusta ei vaadita |
36 | Palvelu on väliaikaisesti poissa käytöstä teknisten töiden vuoksi |
43 | Kuluvan kuukauden käyttäjäkyselyjen määrää ei voitu hakea |
54 | Väärä päivämäärä tai aika käyttäjän tietokoneessa tai järjestelmässä |
55 | Virheellinen MAC-merkkijonoarvo otsikossa kyselyn tunnistetiedoilla |
57 | Virheellinen avainarvo otsikossa kyselyn tunnistetiedoilla |
58 | Tämän jäsenvaltion samanaikaisten kyselyjen enimmäismäärä on saavutettu |
59 | Hakemukseen jäsenvaltiossa ei vastata tai se ei ole saatavilla |
101 | Yhteyden IP-numero ei vastaa API-avaimelle määritettyä IP-numeroa |
102 | API-avain on estetty |
103 | Virheellinen API-avain |
104 | Valitun suunnitelman käytettävissä olevien kyselyjen enimmäismäärä on saavutettu |
105 | Tili estetty tai poistettu |
106 | Virheellinen tilityyppi |
107 | Ennakkomaksutiliä ei ole maksettu |
108 | Virheellinen API-avaimen tunnus |
201 | Yhteyden muodostaminen VIES API -palveluun epäonnistui |
202 | VIES API -palveluvastauksen muoto on virheellinen |
203 | Virheellinen numerotyyppi |
204 | NIP on virheellinen |
205 | EU:n ALV-tunnus on virheellinen |
206 | Toiminto loi poikkeuksen |
207 | Päivämäärän muoto on virheellinen |
208 | Virheellinen syöttöparametri |