OpusCapitaTYVI asiakasjärjestelmäliittymä 2.2
Transcription
OpusCapitaTYVI asiakasjärjestelmäliittymä 2.2
OpusCapita TYVI AJL 17.8.2015 External OpusCapitaTYVI asiakasjärjestelmäliittymä 2.2 Tekninen kuvaus versio 1.5 OpusCapita Group Oy Keilaranta 13 FI-02150 ESPOO, FINLAND Tel. +358 20 452 3000 Fax +358 20 452 9271 VAT FI14655702 www.opuscapita.com 1 (24) OpusCapita TYVI AJL 17.8.2015 2 (24) External Sisällysluettelo 1 Yleistä .......................................................................................................................................3 2 Termien selitykset ....................................................................................................................3 3 Palvelun kutsuminen ...............................................................................................................3 4 Paluuviesti ................................................................................................................................4 5 Sanoman lähettäminen ............................................................................................................5 5.1 Sisäänkirjautuminen ...................................................................................................................6 5.2 Autentikoinnin vastausviestin lukeminen.....................................................................................7 5.3 Ilmoitettavan yrityksen lisääminen ..............................................................................................8 5.4 Tiedoston lähetys .......................................................................................................................9 5.5 Tiedonsiirron paluuviestin lukeminen ........................................................................................10 5.6 Tiedoston noutaminen ..............................................................................................................12 5.7 Hakukomennon paluuviestin lukeminen....................................................................................13 5.8 Saapuvan aineiston lataus .......................................................................................................13 5.9 Katso-kirjautuminen .................................................................................................................. 14 5.10 Katso-kirjautumisviestin lukeminen ...........................................................................................15 5.11 Katso- ja Raksi-välilehden listaaminen .....................................................................................16 5.12 Katso- ja Raksi-välilehden listauksen vastauksen lukeminen....................................................16 5.13 Katso- ja Raksi-ilmoituksen lähettäminen .................................................................................17 5.14 Katso- ja Raksi-ilmoituksen lähetyksen vastauksen lukeminen.................................................17 5.15 Uloskirjautuminen palvelusta ....................................................................................................18 5.16 Vastausviesti ja yhteyden katkaisu ...........................................................................................18 6 Testaamiseen liittyviä huomioita ..........................................................................................18 7 Uudet ominaisuudet versiossa 2.2........................................................................................20 8 Viitteet .....................................................................................................................................22 9 Versiohistoria .........................................................................................................................22 OpusCapita TYVI AJL 17.8.2015 1 3 (24) External YLEISTÄ Tämä dokumentti kuvaa OpusCapitan ohjelmistotaloille tarjoaman HTTPS-protokollaa [1] käyttävän yleisen rajapinnan ohjelmistojen integrointiin OpusCapitaTYVI-palveluun. Rajapinta tarjoaa sovellusohjelmoijalle käsitteellisen sanomaversiosta tai tyypistä riippumattoman tiedonsiirtorajapinnan OpusCapitaTYVI- palvelun kautta viranomaisille. Rajapinta tarjoaa turvallisen ja yksinkertaisen tavan siirtää aineistoa TYVI-palveluun suoraan sovelluksesta ilman että käyttäjä joutuu tekemään manuaalisia toimenpiteitä. 2 TERMIEN SELITYKSET Termi TYVI OpusCapitaTYVI Lähetyskerta Sanoma 3 Selitys Tietovirrat Yritysten ja Viranomaisten Välillä OpusCapita toteuttama TYVI-palvelu Kaikki saman lähetyksen aikana yhdellä tunnuksella lähetettävät tiedot. Lähetyskerta voi sisältää 0–n sanomaa. Lähetyskerran osa. Yksi yksittäinen ilmoitus yhdelle vastaanottajalle. Esimerkiksi yksi ilmoittavan yrityksen työnantajasuoritus Verohallintoon. PALVELUN KUTSUMINEN Kutsut palveluun tehdään käyttämällä tiettyjä ennalta määriteltyjä URL:a [2]. URL (Uniform Resource Locator) on nimensä mukaisesti osoitin resursseihin. Se on merkkijono, joka kuvaa yksiselitteisesti palvelun (järjestelmä, palvelun nimi sekä palvelun versio) johon sanoma liittyy sekä komennon, joka määrittelee millaista kutsua palveluun ollaan tekemässä. Suurin osa URL:n tiedoista on kiinteitä eri lähetyskertojen välillä samaa palvelua käytettäessä, mutta komento riippuu siitä mitä kyseisellä hetkellä tehdään. Lähetettävään sanomaan liittyvä URL on muotoa: https://konteksti/iea/palvelu/versio/komento Konteksti sisältää palvelun sijainnin (koneen nimi tai osoite sekä portti). Palvelun looginen sijainti määrää myös käytetyn järjestelmän. URL:n osa iea on kiinteä merkkijono, joka kertoo vastaanottavalle järjestelmälle, että kyseessä on ohjelmistotaloliittymä (iea tulee sanoista Interface for External Applications). Palvelu ja versio kertovat käytetyn palvelun ja sen halutun version. Komento määrittelee mitä kyseisen kutsun halutaan tekevän. Mahdolliset komennot on lueteltu allaolevassa taulukossa: OpusCapita TYVI AJL 17.8.2015 Komento 4 (24) External Selite auth Kirjaudutaan sisään palveluun, paluuviestissä saadaan session tunniste, jota käytetään siirrettäessä aineistoa ja kirjauduttaessa ulos palvelusta. transmit Siirretään aineisto palveluun, paluuviestissä saadaan sanomakohtainen tieto siirron onnistumisesta. terminate Kirjaudutaan ulos palvelusta. query Noudetaan erityyppistä aineistoa palvelusta (ei toteutettu draftversiossa) add_company Lisätään ilmoitettava yritys katso/login Aktivoidaan Katso-tiedot nykyiseen istuntoon. Mahdollistaa Katso- ja Raksi-välilehdillä olevien ilmoitusten lähettämisen 10 minuutin aikaikkunan aikana. Tämän jälkeen tunnistautuminen Katsoon on tehtävä uudestaan. katso/list Listaa Katso-ja Raksi-välilehtien sisältämät ilmoitukset (ilmoitukset, joiden lähettämiseen vaaditaan Katso-tunnus) katso/send Lähettää halutun ilmoituksen eteenpäin Katso-tunnuksella Esimerkki: Tehdään kutsu OpusCapita TYVI-.palveluun rajapintaversiolla 2.1. Kyseessä tunnistautuminen. Itse autentikointitiedot lähetetään HTTPS:n POST-datassa eivätkä ne näy URL:ssa https://www.tyvi.fi/ec/tyvi-r5/p/iea/auth/ 4 PALUUVIESTI Lähetykseen liittyvä paluuviesti on XML-sanoma [3], jossa kerrotaan tilakoodin avulla lähetyksen onnistumisesta, viitataan lähetyksen sessiotunnisteeseen ja kerrotaan tarvittaessa sanomakohtaisesti vastaanottokuittaus tai mahdollinen virheilmoitus lähetetyistä tiedoista. Paluuviestin merkistö on UTF-8. Paluuviestin XML Schema [4] on esitetty liitteessä 1. Esimerkkejä erilaisista paluuviesteistä on kappaleessa 5. Oheisessa taulukossa on käytössä olevat tilakoodit ja niiden mukana palautuvat selitteet. Tilakoodi Seliteteksti Tarkennus 0 OK 100 Authentication failure 101 No active session 102 No command verb in url 103 Internal Server Error 104 Transfer format error Pyyntö palveluun on onnistunut. Annettu käyttäjätunnus tai salasana on väärä. Tarkista käyttäjätunnus ja salasana. Ota tarvittaessa yhteys helpdeskiin. Session tunniste ei ole oikea tai sessio on jo vanhentunut. Palvelimelle on lähetetty pyyntö, jossa ei ole komentoosaa. Määrittelemätön virhetilanne palvelussa. Tilanne on luonteeltaan sellainen, että palvelu ei ole osannut käsitellä virhettä. Lähetyssä aineiston esitystavassa on virhe ts. tiedon esitysmuoto on epävalidi. Virhe tulee myös silloin jos OpusCapita TYVI AJL 17.8.2015 105 106 107 108 5 Transfer content error No data transmitted Transmitted data contained extraneous lines No rights to send forms of this type Unknown or unsupported 109 query type 110 Invalid parameters for query 111 Duplicate file transferred 112 Unsupported protocol version 113 Authentication redirected 114 Katso ID is needed 5 (24) External kyseisellä tunnuksella ei ole sallittua lähettää tällaista aineistoa. Aineiston tietosisältö on virheellinen. Varsinainen tietosisältö puuttuu kokonaan. Ylimääräisiä rivejä sanoman lopussa. Kirjautuneella asiakkaalla ei ole oikeutta lähettää kyseistä aineistotyyppiä. Parametrin type –arvo on joko tuntematon tai käyttäjällä ei ole oikeutta noutaa tyypin mukaista aineistoa Joku query-komennon parametreista on väärä tai vaihtoehtoisesti joku pakollinen parametri puuttuu. Tiedostosiirrossa on havaittu identtisen tiedoston aikaisempi siirtäminen. Asiakasohjelmiston ehdottamaa protokollaversiota ei tueta (uusi 2.1:ssä.) Sisäänkirjautuminen ei ole mahdollista tässä osoitteessa. Asiakasohjelmiston tulee käyttää kentässä <use-base> olevaa järjestelmän URL:a ja yrittää uudelleen. (uusi 2.1:ssä) Katso/send-käskyllä lähetetty ilmoitus vaatii Katsoistunnon. Istunto oli joko vanhentunut tai Katsotunnuksella ei ole riittäviä oikeuksia ilmoituksen lähettämiseen. SANOMAN LÄHETTÄMINEN Lähetys tapahtuu käyttämällä HTTPS-protokollaa lomakepohjaiseen lähetykseen. Lähetys on luonteeltaan hyvin yksinkertainen. Lähetykseen liittyy tietty URL, jonka perusosa (https://FQDN) kertoo suoraan käytetyn protokollan, autentikointitiedot, palvelimen sekä portin. URL:n absoluuttinen polkuosa (perusosan jälkeinen osa mukaan lukien ensimmäinen kauttamerkki sekä kaikki parametrit) kuvaa lähetyksen palvelimen sisällä. Lähetys voidaan jakaa seuraaviin osiin: 1. Sisäänkirjautuminen palveluun. Kirjautumiseen tarvittavat tiedot välitetään HTTPS:n POST-metodilla. 2. Sisäänkirjautumisen vastausviestin lukeminen. Luetaan ja tarkastetaan palvelimen lähettämä tilakoodi, session tunniste ja muu mahdollinen informaatio. Jos vastausviestissä ilmoitetaan, että sisäänkirjautuminen tulee tehdä toisessa osoitteessa, hypätään takaisin kohtaan 1 käyttäen annettua osoitetta. 3. Tiedoston lähetys. Lähetetään tiedosto HTTPS:n POST-metodilla 4. Tiedonsiirron vastausviestin lukeminen. Luetaan ja tarkastetaan HTTP-palvelimen lähettämä siirron tilakoodi ja mahdollinen muu viestissä tuleva informaatio. OpusCapita TYVI AJL 17.8.2015 6 (24) External 5. Mahdollisten palvelussa olevien tiedostojen noutaminen. Kerrotaan HTTPS-POSTkomennolla mitä halutaan noutaa ja samalla voidaan antaa joitain rajaavia hakuehtoja nuodettaville tiedostoille. 6. Tiedoston noutoon tarkoitettuun pyyntöön palautetaan paluuviesti, jossa on osoitin itse noudettavaan tiedostoon. Luetaan paluuviesti ja siellä oleva osoitin itse noudettavaan tiedostoon. 7. Noudetaan itse tiedosto käyttämällä paluuviestissä saatua osoitinta. Kyse on normaalista tiedostonlatauksesta HTTPS-palvelimelta. 8. Uloskirjautuminen palvelusta. Kirjaudutaan ulos ja suljetaan sessio eksplisiittisesti ennen yhteyden sulkemista. 9. Vastausviestin lukeminen. Luetaan palvelimen lähettämä tilakoodi ja tarkastetaan, että uloskirjautuminen onnistui. 5.1 Sisäänkirjautuminen Pyyntö lähetetään URL:n, jossa komento on ’auth’, esimerkiksi https://www.tyvi.fi/ec/tyvir5/p/iea/auth/ Kutsulle voi antaa parametreina seuraavat tiedot: Pakolliset parametrit: Parametrin nimi username password software Vapaaehtoiset parametrit: Parametrin nimi protocol-version force-redirect Selite käyttäjätunnus OpusCapita TYVIpalveluun salasana OpusCapita TYVI-palveluun kirjautuvan ohjelmiston nimi ja versio Selite Pyytää palvelinta käyttämään annettua protokollaversiota (2.0, 2.1 tai 2.2) Ei-nolla arvo (esim 1 tai "yes") pyytää palvelinta antamaan vastauskoodin 113 "Authentication redirected" kirjautumiseen, joko asiakasohjelmiston testausta tai järjestelmän URL:n verifiointia varten. Parametrilla ’software’ on tarkoitus kertoa mikä ohjelmisto ja sen versio on kyseessä – samaan tyyliin kuin www-selain lähettää www-palvelimelle user-agent –parametrilla tiedon siitä mikä selain ja sen versio on kyseessä. Suositeltava muoto software parametrin arvoksi on <ohjelmisto> <versiotieto>. Esimerkiksi OpusCapitan testiohjelman tapauksessa: ElmaIEA C# DEMO $Revision: 1.6 $ OpusCapita TYVI AJL 17.8.2015 7 (24) External Esimerkki: autentikointi palvelimelle https://www.tyvi.fi käyttäjänä user123 POST /ec/tyvi-r5/p/iea/auth HTTPS/1.1 Host: www.tyvi.fi Content-type: multipart/form-data; boundary=Boundary-string-should-not-appear-in-data Content-length: 366 --Boundary-string-should-not-appear-in-data Content-Disposition: form-data; name="username" user123 --Boundary-string-should-not-appear-in-data Content-Disposition: form-data; name="password" passwd1234 --Boundary-string-should-not-appear-in-data Content-Disposition: form-data; name="software" ElmaIEA C# DEMO $Revision: 1.6 $ --Boundary-string-should-not-appear-in-data—- Huomaa, että merkkijono ”Boundary-string-should-not-appear-in-data” on ainoastaan esimerkinomainen MIME Multipart-sanoman erotin [5] [6]. Merkkijonon tulisi olla satunnainen generoitu merkkijono, jonka sisältö on sellainen ettei sitä esiinny itse sanomalla. Esimerkkiohjelmistossa on tämä osuus toteutettu lisäämällä kiinteä merkkijono, jota ei esiinny itse sanomalla. Lisäksi kannattaa kiinnittää huomiota erottimen yhteydessä oleviin aloitus- ja lopetusmerkkeihin. Jokainen erotinmerkki alkaa kahdella viivalla ”--” ja viimeinen erotin päättyy lopetusmerkkiin, joka on myöskin kaksi viivaa ”--”. Välissä olevien erottimien lopussa ei ole viivoja. 5.2 Autentikoinnin vastausviestin lukeminen Palvelu palauttaa paluuviestissä paluukoodin <status>-elementin id-attribuutin arvona, ja sessiotunnisteen <session>-elementissä. Paluukoodi on joko 0 kirjautumisen onnistuessa, 100 kirjautumisen epäonnistuessa tai 103 (Internal Server Error) jos kirjautumisen yhteydessä on tapahtunut virhetilanne, jota palvelu ei ole osannut käsitellä oikein. Kun käytetään protokollaversiota 2.1 tai suurempaa, vastaussanomassa voi olla elementti <usebase>. Tämän sisältö on järjestelmän URL:n perusosa, jota asiakasohjelmiston pitää käyttää istunnon seuraavissa pyynnöissä. <use-base> voi esiintyä kaikissa järjestelmän tuottamissa vastaussanomissa, myös muissa toiminteissa kuin sisäänkirjautumisessa. Esimerkki: paluuviestin sisältö onnistuneen kirjautumisen jälkeen: HTTPS/1.1 200 OK Transfer-Encoding: chunked Content-Type: text/xml b4 <?xml version="1.0" encoding="UTF-8"?> <iea-response xmlns="http://tyvi.elma.fi/schema/200710/iea"> <status id="0">OK</status> <session>aQsyoAkgklJpxN3</session> OpusCapita TYVI AJL 17.8.2015 8 (24) External <use-base>https://www.tyvi.fi/c/ec/tyvi-r5/p/iea/</use-base> </iea-response> 0 Esimerkki: epäonnistunut kirjautuminen palveluun: HTTP/1.1 200 OK Transfer-Encoding: chunked Content-Type: text/xml b4 <?xml version="1.0" encoding="UTF-8"?> <iea-response xmlns="http://tyvi.elma.fi/schema/200710/iea"> <status id="100">Authentication failure</status> </iea-response> 0 5.3 Ilmoitettavan yrityksen lisääminen Jotta yritykselle voidaan tehdä ilmoitus, on kyseinen yritys lisättä ilmoitettavien listaan. Pakolliset parametrit Parametrin nimi s company_name company_id Selite sessiotunniste lisättävän ilmoitettavan yrityksen/henkilön nimi lisättävän ilmoitettavan yrityksen y-tunnus tai henkilön henkilötunnus POST /ec/tyvi-r5/p/iea/add_company HTTPS/1.1 Host: www.tyvi.fi Content-type: multipart/form-data; boundary=Boundary-string-should-not-appear-in-data Content-length: 373 --Boundary-string-should-not-appear-in-data Content-Disposition: form-data; name="s" aQsyoAkgklJpxN3 --Boundary-string-should-not-appear-in-data Content-Disposition: form-data; name="company_name" Testi Asiakas --Boundary-string-should-not-appear-in-data Content-Disposition: form-data; name="company_id" OpusCapita TYVI AJL 17.8.2015 9 (24) External 1234567-1 --Boundary-string-should-not-appear-in-data—Vastausviesti on yksinkertaisesti ok tai virhe (ei kerättäviä tietoja varsinaisesti). Mikäli ilmoitettava yritys löytyy jo listalta, annetaan virhe 111 - Duplicate file transferred. Mikäli annettu company_id ei ole hetu tai y-tunnus, annetaan virhe 110 - Invalid parameters for query. Mikäli käyttäjällä ei ole oikeutta lisätä ilmoitettavaa, annetaan virhe 108 - No rights to send forms of this type. 5.4 Tiedoston lähetys Pyyntö lähetetään URL:n, jossa komento on ’transmit’. esimerkiksi https://www.tyvi.fi/ec/tyvi-r5/p/iea/transmit Kutsulle voi antaa parametreina seuraavat tiedot: Pakolliset parametrit: Parametrin nimi s records Vapaaehtoiset parametrit: Parametrin nimi test Selite sessiotunniste itse lähetettävä lähetyskerta ts. lähetettävät sanomat Selite saa aina arvon 1, tätä parametria ei anneta ollenkaan jos kyseessä on tuotantolähetys. Huomatkaa, että testiparametria käytettäessä, aineistoa ei tallenneta kantaan ollenkaan. Esimerkki: Tiedonsiirto. Verohallinnolle menevä vuosi-ilmoitus. Palkansaajakohtainen erittely. Kirjautumisen yhteydessä on saatu URL: https://www.tyvi.fi/ec/tyvi-r5/p/iea/. POST /a/iea/transmit HTTPS/1.1 Host: www.tyvi.fi Content-type: multipart/form-data; boundary=Boundary-string-should-not-appear-in-data Content-length: 577 --Boundary-string-should-not-appear-in-data Content-Disposition: form-data; name="s" aQsyoAkgklJpxN3 ----Boundary-string-should-not-appear-in-data Content-Disposition: form-data; name="test" 1 --Boundary-string-should-not-appear-in-data Content-Disposition: form-data; name="records"; filename="tyvi-data.txt" Content-Type: application/octet-stream 000:VSPSERIE 101:0 OpusCapita TYVI AJL 17.8.2015 10 (24) External 110:P 109:2004 102:6666662-2 098:1 111:010101-XX1X 115:54217 116:10858 117:5000 135:3000 140:1200 141:6604 143:1 146:1 150:875 153:1 999:1 --Boundary-string-should-not-appear-in-data-- Huomiotavaa on, että lähetettävän sanoman tyyppiä ei kerrota lähetyksessä. Se päätellään lähetettävästä sanomasta. Jos sanomaa ei tunnisteta, palautetaan virheilmoitus. Aineistoa lähetettäessä kannattaa kirjautuneen käyttäjän koko lähetyskerta lähettää yhdellä transmit-kutsulla. Palvelu pystyy erottelemaan ja käsittelemään sanomalajista ja vastaanottajasta riippumatta kaikki samassa lähetyskerrassa tulleet sanomat, joten lähettävässä päässä ei ole tarvetta pilkkoa niitä useiksi lähetyksiksi. 5.5 Tiedonsiirron paluuviestin lukeminen Paluuviesti pitää sisällään vähintään paluukoodin <status>- elementin id-attribuutin arvona, session <session>-elementissä ja sanomakohtaisen kuittauksen siirretyistä sanomista <transfer>-elementin alla <record>-elementeissä. Esimerkki: Paluuviesti onnistuneesta tiedonsiirrosta testimoodissa versiossa 2.1 tai aiempi: HTTP/1.1 200 OK Transfer-Encoding: chunked Content-type: text/xml 110 <?xml version="1.0" encoding="UTF-8"?> <iea-response xmlns="http://tyvi.elma.fi/schema/200710/iea"> <status id="0">OK</status> <session>aQsyoAkgklJpxN3</session> <use-base>https://www.tyvi.fi/c/ec/tyvi-r5/p/iea/</use-base> <transfer mode="test"> <record num="1"> <type id=”vheritp”>Palkansaajakohtainen erittely</type> </record> </transfer> </iea-response> 0 OpusCapita TYVI AJL 17.8.2015 11 (24) External Esimerkki: Paluuviesti onnistuneesta tiedonsiirrosta testimoodissa versiossa 2.2: HTTP/1.1 200 OK Transfer-Encoding: chunked Content-type: text/xml 110 <?xml version="1.0" encoding="UTF-8"?> <iea-response xmlns="http://tyvi.elma.fi/schema/201408/iea"> <status id="0">OK</status> <session>aQsyoAkgklJpxN3</session> <use-base>https://www.tyvi.fi/c/ec/tyvi-r5/p/iea/</use-base> <transfer mode="test"> <record num="1"> <type id=”vheritp”>Palkansaajakohtainen erittely</type> <message_id>12345678</message_id> </record> </transfer> </iea-response> Erona aiempiin versioihin, on paluusanomassa ”message_id”-tieto, jonka avulla voidaan kohdentaa lähetetty ilmoitus välittömästi Tyvin oikeaan ilmoitusnumeroon katso/sendkäskyä varten. Jos sanomalla on ollut virheitä, tulee <record>-elementin sisällä myös sanomakohtainen virheilmoitus. Virheilmoitus palautetaan <error>-elementissä. Elementin <record> numattribuutti kertoo kyseisen sanoman järjestysnumeron siirtovaiheessa. Esimerkki: Paluuviesti virheellisestä tiedonsiirrosta testimoodissa TYVI-VAHTI-palveluun: HTTP/1.1 200 OK Transfer-Encoding: chunked Content-type: text/xml 110 <?xml version="1.0" encoding="UTF-8"?> <iea-response xmlns="http://tyvi.elma.fi/schema/200710/iea/"> <status id="105">Transfer content error</status> <session>KQ2ivnlLEjtou7X</session> <use-base>https://www.tyvi.fi/c/ec/tyvi-r5/p/iea/</use-base> <transfer mode="test"> <record num="1"> <type id=”ym_tuotanto”>Tuotanto</type> </record> <record num="2"> <type id=”ym_jatevesi”>Veteen johdetut paastot</type> <error id="105">No customer number</error> </record> <record num="3"> <type id=”ym_ilmaanjohd”> Ilmaan johdetut jatteet</type> <error id="105">Invalid parameter: 369</error> </record> <record num="4"> <type id=”ym_ilmaanjohd”>Ilmaan johdetut jatteet</type> <error id="105">Invalid parameter: 369</error> OpusCapita TYVI AJL 17.8.2015 12 (24) External </record> <record num="5"> <type id=”ym_perustied”>Perustiedot</type> </record> </transfer> </iea-response> 0 5.6 Tiedoston noutaminen Tiedoston nouto on kaksiosainen tapahtuma. Ensin tehdään palveluun pyyntö, jolla määritellään mitä halutaan noutaa. Sen jälkeen paluuviestissä olleen viitteen avulla noudetaan itse aineisto toisella pyynnöllä. Aineisto merkitään noudetuksi vasta kun se on todellisuudessa haettu. Tiedoston nouto aloitetaan tekemällä pyyntö URL:n, jonka komento osa on ’query’, esimerkiksi https://www.tyvi.fi/ec/tyvi-r5/p/iea/query Kutsulle voi antaa parametreina seuraavat tiedot: Pakolliset parametrit: Parametrin nimi S Type Year Vapaaehtoiset parametrit: Parametrin nimi Bid New Selite Sessiotunniste Tyyppi määrittelee mitä aineistoa halutaan hakea. Esimerkiksi VK_VAST määrittelee, että haetaan verokorttien suorasiirtopyyntöjen vastauksia. Määrittelee minkä vuoden aineistoa haetaan (pakollinen jos type = VK_VAST). Selite Y-tunnus. Määrittelee minkä yrityksen tietoja ollaan hakemassa. Jos tätä ei anneta, haetaan kaikkien yritysten tiedot, joihin hakijalla on oikeus. Saa aina arvon 0. Määritellään haetaanko myös jo kerran haetuksi merkityt aineistot. Oletus on, että haetaan vain uudet ja tällöin koko parametri kuuluu jättää pois. Esimerkki: Query-komento, jolla haetaan vuoden 2004 verokortteja. Kirjautumisen yhteydessä on saatu URL: https://tyvi.elma.fi/ec/tyvi-r5/p/iea/. POST /ec/tyvi-r5/p/iea/query HTTPS/1.1 Host: www.tyvi.fi Content-type: multipart/form-data; boundary=Boundary-string-should-not-appear-in-data Content-length: 345 OpusCapita TYVI AJL 17.8.2015 13 (24) External --Boundary-string-should-not-appear-in-data Content-Disposition: form-data; name="s" aQsyoAkgklJpxN3 --Boundary-string-should-not-appear-in-data Content-Disposition: form-data; name="type" vk_vast --Boundary-string-should-not-appear-in-data Content-Disposition: form-data; name="year" 2004 --Boundary-string-should-not-appear-in-data Content-Disposition: form-data; name="bid" 1234567-1 --Boundary-string-should-not-appear-in-data— 5.7 Hakukomennon paluuviestin lukeminen Paluuviesti pitää sisällään paluukoodin <status>- elementin id-attribuutin arvona ja viitteen ladattavaan aineistoon <query>-elementin alla <download-token>-elementeissä. Lisäksi sanomalla tulee tieto ladattavien sanomien määrästä <query> -elementin results attribuutin arvona. Esimerkki: Paluuviesti, jossa kerrotaan, että Verokortin suorasiirron vastauksia 12 kappaletta noudettavana. HTTPS/1.1 200 OK Transfer-Encoding: chunked Content-type: text/xml 110 <?xml version="1.0" encoding="UTF-8"?> <iea-response xmlns="http://tyvi.elma.fi/schema/200710/iea"> <status id="0">OK</status> <use-base>https://www.tyvi.fi/c/ec/tyvi-r5/p/iea/</use-base> <query results="12"> <type id="vk_vast" count="12">Verokortin vastaus</type> <download-token>7</download-token> </query> </iea-response> 0 5.8 Saapuvan aineiston lataus Kun aineistoon on saatu viite ’query’-komennolla voidaan aineisto lopuksi noutaa laittamalla pyyntö URL:n , jonka komento-osa on ’download’, esimerkiksi https://www.tyvi.fi/ec/tyvi-r5/p/iea/download Kutsulle voi antaa parametreina seuraavat tiedot: OpusCapita TYVI AJL 17.8.2015 Pakolliset parametrit: Parametrin nimi s token 14 (24) External Selite Sessiotunniste Query-komennon vastauksena saatu tiedostoviite ts. <download-token> elementin sisältö. Esimerkki: Download -komento POST /ec/tyvi-r5/p/iea/download HTTPS/1.1 Host: www.tyvi.fi Content-type: multipart/form-data; boundary=Boundary-string-should-not-appear-in-data Content-length: 123 --Boundary-string-should-not-appear-in-data Content-Disposition: form-data; name="s" aQsyoAkgklJpxN3 --Boundary-string-should-not-appear-in-data Content-Disposition: form-data; name="token" 7 --Boundary-string-should-not-appear-in-data— Kutsun vastaus pitää sisällään aina kaikki vastaussanomat ja noudattaa kulloisenkin sanoman määrityksiä. Esimerkiksi verokorttien vastaussanomat ovat Verohallinnon määrittelemää rivipohjaista dataa, jossa rivierottimena on merkki #10 – ns. unix-rivinvaihto. 5.9 Katso-kirjautuminen Jotta Katso-välilehdellä olevia ilmoituksia (TVR, Vero, Tulli) voi lähettää, tulee sessiossa olla tieto hyväksytystä Katso-kirjautumisesta. Tyvin ilmoituksista OTP-tunnistautumisen vaativia ilmoituksia ovat kausiveroilmoituikset sekä tuloveroilmoitukset. Näistä Katsovälilehden kautta voi lähettää vain kausiveroilmoituksia. Muille Katsoa vaativille ilmoituksille PWD on riittävä tunnistautumistaso. Pakolliset parametrit: Parametrin nimi s username Selite Sessiotunniste Katso-kirjautumistunnus, normaalisti 6 merkkiä, esim. d27ri2. password Katso-tunnuksen salasana. logintype Joko PWD tai OTP. Jos OTP, pitää myös parametri ”otp” antaa. Vapaaehtoiset parametrit: Parametrin nimi Selite OpusCapita TYVI AJL 17.8.2015 otp 15 (24) External logintype ollessa OTP, seuraava käyttämättömän OTP-salasana OTPlistalta. Vaaditaan Veron kausiveroilmoituksien lähettämiseen. Esimerkki: Katso-kirjautumiskomento POST /ec/tyvi-r5/p/iea/katso/login HTTPS/1.1 Host: www.tyvi.fi Content-type: multipart/form-data; boundary=Boundary-string-should-not-appear-in-data Content-length: 521 --Boundary-string-should-not-appear-in-data Content-Disposition: form-data; name="s" aQsyoAkgklJpxN3 --Boundary-string-should-not-appear-in-data Content-Disposition: form-data; name="username" d27ri2 --Boundary-string-should-not-appear-in-data Content-Disposition: form-data; name="password" katsosalasana --Boundary-string-should-not-appear-in-data Content-Disposition: form-data; name="logintype" OTP --Boundary-string-should-not-appear-in-data Content-Disposition: form-data; name="otp" 123456 --Boundary-string-should-not-appear-in-data— 5.10 Katso-kirjautumisviestin lukeminen Vastaus kertoo, kuka on kirjautunut Katsolla sovellukseen sekä milloin tunnistautuminen menee vanhaksi (deadline). Deadline ilmoitetaan GMT-aikana ja on voimassa 10 minuuttia kerrallaan. Esimerkkivastaus: HTTPS/1.1 200 OK Transfer-Encoding: chunked Content-type: text/xml <?xml version="1.0" encoding="UTF-8"?> <iea-response xmlns="http://tyvi.elma.fi/schema/200710/iea"> <status id="0">OK</status> <session> aQsyoAkgklJpxN3</session> <use-base>https://www.tyvi.fi/a/ec/tyvi-r5/p/iea/</use-base> <deadline>2014-08-11T05:04:32.740Z</deadline> <kid>d27ri2</kid> <version>katso-1.1</version> <personName>Test Person </personName> <accountExpiring>false</accountExpiring> OpusCapita TYVI AJL 17.8.2015 16 (24) External <nextOtpCode>null</nextOtpCode> </iea-response> 5.11 Katso- ja Raksi-välilehden listaaminen Vastaavantyylinen komento kuin query, mutta hakee kaikki Katso- ja Raksi-välilehdellä olevat ilmoitukset. Pakolliset parametrit: Parametrin nimi s Selite sessiotunniste Esimerkki: Katso-välilehden listaaminen: POST /ec/tyvi-r5/p/iea/katso/list HTTPS/1.1 Host: www.tyvi.fi Content-type: multipart/form-data; boundary=Boundary-string-should-not-appear-in-data Content-length: 149 --Boundary-string-should-not-appear-in-data Content-Disposition: form-data; name="s" aQsyoAkgklJpxN3 --Boundary-string-should-not-appear-in-data— 5.12 Katso- ja Raksi-välilehden listauksen vastauksen lukeminen Vastaus kertoo lomakkeen tunnisteen (message_id), itse lomakkeen tyypin (form), ilmoitettavan yrityksen y-tunnuksen (identifier) sekä nimen (common_name) ja mille ajalle ilmoitus kohdistuu (period). Esimerkkivastaus: HTTPS/1.1 200 OK Transfer-Encoding: chunked Content-type: text/xml <?xml version="1.0" encoding="UTF-8"?> <iea-response xmlns="http://tyvi.elma.fi/schema/200710/iea"> <status id="0">OK</status> <session> aQsyoAkgklJpxN3</session> <use-base>https://www.tyvi.fi/a/ec/tyvi-r5/p/iea/</use-base> <forms> <form> <message_id>12345</message_id> <form>VeroRaksi.vsurakka</form> <identifier>1234567-1</identifier> <common_name>Test Company</common_name> <period>2014-01</period> OpusCapita TYVI AJL 17.8.2015 17 (24) External </form> </forms> </iea-response> 5.13 Katso- ja Raksi-ilmoituksen lähettäminen Tapahtuu ilmoittamalla message_id parametri katso/send-toiminnolle. Pakolliset parametrit: Parametrin nimi Selite s sessiotunniste message_id Lähetettävän viestin tunniste, saatu katso/list-toiminnosta. Esimerkki: Raksi-ilmoituksen lähettäminen POST /ec/tyvi-r5/p/iea/katso/send HTTPS/1.1 Host: www.tyvi.fi Content-type: multipart/form-data; boundary=Boundary-string-should-not-appear-in-data Content-length: 253 --Boundary-string-should-not-appear-in-data Content-Disposition: form-data; name="s" aQsyoAkgklJpxN3 --Boundary-string-should-not-appear-in-data Content-Disposition: form-data; name="message_id” 12345 --Boundary-string-should-not-appear-in-data— 5.14 Katso- ja Raksi-ilmoituksen lähetyksen vastauksen lukeminen Onnistunut lähetys tuottaa paluuviestin, jossa status_id=0 (OK). Raksi-ilmoituksissa tulee vielä ilmoituksen Veron puolen tunniste kentässä s807. Kyseistä tunnistetta tulee käyttää mm. kyseisen lomakkeen korjausilmoituksissa. Katso-välilehteä käyttävät ilmoitukset (ei Raksi-ilmoitukset) eivät sisällä tätä kenttää. Esimerkkivastaus: HTTPS/1.1 200 OK Transfer-Encoding: chunked Content-type: text/xml <?xml version="1.0" encoding="UTF-8"?> <iea-response xmlns="http://tyvi.elma.fi/schema/200710/iea"> <status id="0">OK</status> <session> aQsyoAkgklJpxN3</session> <use-base> https://www.tyvi.fi/a/ec/tyvi-r5/p/iea/</use-base> <message_id>12345</message_id> <s087>V14077376774692</s087> </iea-response> OpusCapita TYVI AJL 17.8.2015 5.15 18 (24) External Uloskirjautuminen palvelusta Sessio tulee sulkea tiedonsiirron lopuksi. Sulkeminen tapahtuu tekemällä pyyntö URL:n, jonka komento-osa on ’terminate’, esimerkiksi https://www.tyvi.fi/ec/tyvi-r5/p/iea/terminate Kutsulle voi antaa parametreina seuraavat tiedot: Pakolliset parametrit: Parametrin nimi s Selite sessiotunniste Esimerkki: Uloskirjautuminen palvelusta POST /ec/tyvi-r5/p/iea/terminate HTTPS/1.1 Host: www.tyvi.fi Content-type: multipart/form-data; boundary=Boundary-string-should-not-appear-in-data Content-length: 157 --Boundary-string-should-not-appear-in-data Content-Disposition: form-data; name="s" aQsyoAkgklJpxN3 --Boundary-string-should-not-appear-in-data— 5.16 Vastausviesti ja yhteyden katkaisu Tämän jälkeen vastausviesti voidaan lukea ulkoskirjautumisesta. 6 TESTAAMISEEN LIITTYVIÄ HUOMIOITA Lähdettäessä kehittämään ja testaamaan integrointikoodia OpusCapita TYVI-palvelua vasten, seuraavat asiat tulisi huomioida. 1. Testaamiseen tarvitsette OpusCapita TYVI-testitunnuksen ja salasanan. Jos teillä ei ole tunnuksia, ottakaa yhteys OpusCapitan Service Deskiin 2. Palvelua testataan OpusCapita TYVI-tuotantopalvelimella testitunnuksin. Vaikka palvelu on tuotanto-palvelu, mikään aineisto ei siirry oikeasti eteenpäin, koska tunnukset ovat palvelussa testistatuksella. 3. Itse lähetettävän aineiston oikeellisuus kannattaa testata ennen kuin aineistoa yrittää lähettää ohjelmistointegraatiokoodilla. Hyvin usein ongelmana on joko se, että data on epävalidia tai sitä ei voi lähettää kyseiselle testitunnuksella ollenkaan. Nämä asiat on syytä tarkastaa ennen kuin testaus oman koodin kanssa aloitetaan. 4. Tyypillisesti ohjelmistotalolle annetulla testitunnuksella voi ilmoittaa ainoastaan yhden yrityksen tietoja. Tämä yritys on testaava yritys ts. ohjelmistotalo itse. Ytunnus testiaineistossa tulisi siis olla testitunnuksen omaavan yrityksen oma ytunnus. OpusCapita TYVI AJL 17.8.2015 19 (24) External 5. Kun testiaineisto on oikeanlaista, kannattaa sen lähettämistä testata seuraavaksi curl-ohjelman avulla esim. curl --insecure -d "username=testitunnus&password=salasana&software=test" https://www.tyvi.fi/ec/tyvi-r5/p/iea/auth/. 6. Tämän jälkeen kannattaa aloittaa testaaminen omalla sovelluksella. Jos kehityksen ja testauksen aikana tulee ongelmia, niistä kannattaa ilmoittaa OpusCapitan Service Deskiin. Mukaan tulisi liittää mieluusti lyhyt ongelman kuvaus, testattava aineisto sekä tuloste tehdystä pyynnöstä ja palvelun antamasta vastauksesta sekä testausajankohdasta. Testauksen tukipalvelu on maksullista ja siitä veloitetaan tuntityöperusteisesti voimassa olevan hinnaston mukaisesti. OpusCapita TYVI AJL 17.8.2015 7 20 (24) External UUDET OMINAISUUDET VERSIOSSA 2.2 25.8.2014 Version 2.2 muutokset o Vastaussanoman XML-nimiavaruus seuraavasti: riippuu käytetystä protokollaversiosta 1. 2.0 = http://tyvi.elma.fi/schema/200411/iea 2. 2.1 = http://tyvi.elma.fi/schema/200710/iea o 3. 2.2 = http://tyvi.elma.fi/schema/201408/iea Transmit-käskyn paluusanomaan lisätty ”message_id”-elementti ilmoitukselle. 11.8.2014 versiomuutokset (ei uutta protokollaversiota) o Katso/logi, katso/list ja katso/send käskyt lisätty. Käskyjen myötä täysi tuki Katso-lähetykselle integraatiorajapinnan läpi. Käskyt dokumentoitu kappaleessa 5. o Katso-id parametri poistettu vanhentuneena auth-käskyn parametrilistalta. o Virhekoodia 114 muutettu vastaamaan nykyistä tarkoitusta. o Lisätty add_company käsky. o Päivitetty schema-kuvaus Edeltävät 2.1 muutokset o Sisäänkirjautumisessa on kaksi uutta vapaaehtoista parametriä force-redirect ja protocol-version, jotka on dokumentoitu kappaleessa 5. o Sisäänkirjautuminen voi johtaa redirektiin o Kaksi uuttaa virhekoodia 112 ja 113 on dokumentoitu kappaleessa 4. o Vastaussanomat voivat aina sisältää tagin <use-base> o Vastaussanoman seuraavasti: XML-nimiavaruus riippuu käytetystä protokollaversiosta 1. 2.0 = http://tyvi.elma.fi/schema/200411/iea 2. 2.1 = http://tyvi.elma.fi/schema/200710/iea o Versiossa 1.2 lisätty KATSO- tunnistautumiseen liittyvät osat. 1. Sisäänkirjautumisessa uusi vapaaehtoinen parametri katso-id, joka on dokumentoitu kappaleessa 5. OpusCapita TYVI AJL 17.8.2015 External 2. Yksi uusi virhekoodi 114 on dokumentoitu kappaleessa 4. 21 (24) OpusCapita TYVI AJL 17.8.2015 8 External VIITTEET 1 2 3 4 5 6 9 22 (24) HTTPS, RFC 2818, Network Working Group Request for Comments: 2818, Category: Informational, http://www.ietf.org/rfc/rfc2818.txt URL, RFC 1738 (RFC1738), Network Working Group Request for Comments: 1738, Category: Standards Track, http://www.faqs.org/rfcs/rfc1738.html XML, Extensible Markup Language (XML) 1.0 (Third Edition), W3C Recommendation 04 February 2004, http://www.w3c.org/TR/2004/REC-xml-20040204/ XML Schema, XML Schema Part 0: Primer Second Edition, W3C Recommendation 28 Octo-ber 2004, http://www.w3c.org/TR/xmlschema-0/ MIME, RFC 1341 (RFC1341), Network Working Group Request for Comments: 1341, http://www.faqs.org/rfcs/rfc1341.html MIME Multipart/Related Content Type, RFC 2112 (RFC2112), Network Working Group Re-quest for Comments: 2112, Obsoletes: 1872, Category: Standards Track, http://www.faqs.org/rfcs/rfc2112.html VERSIOHISTORIA Versio Aika 1.1 4.10.2007 1.2 24.11.2009 1.3 16.1.2013 1.4 11.8.2014 1.5 25.8.2014 Muutos Edellinen ohjelmistotaloille suunnattu päivitys KATSO-toiminnallisuuden lisäys dokumentaatioon, kts. kappale 7. Palvelun osoite päivitetty uuteen: https://tyvi.elma.fi/ec/tyvir5/p/iea/ Palvelun osoitteet päivitetty www.tyvi.fi-mallisiksi. Lisätty katso/login, katso/list ja katso/send toiminnot. Poistettu vanhentunut viittaus katso-id kirjautumispolusta (p/iea/auth). Lisätty add_company-käsky. Lsiätty versio 2.2 (message_id transmit-käskyn paluusanomaan) ja schema versiolle 2.2 OpusCapita TYVI AJL 17.8.2015 External Liite 1. Paluuviestin schema-kuvaus <?xml version="1.0" encoding="UTF-8"?> <!-- IEA Schema $Revision: 81666 $ --> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:iea="http://tyvi.elma.fi/schema/201408/iea" targetNamespace="http://tyvi.elma.fi/schema/201408/iea" elementFormDefault="qualified"> <xsd:element name="iea-response"> <xsd:complexType> <xsd:sequence> <xsd:element name="status" type="iea:statusType"/> <xsd:element name="session" type="xsd:string" minOccurs="0"/> <xsd:element name="terminated-session" type="xsd:string" minOccurs="0"/> <xsd:element name="transfer" type="iea:transferType" minOccurs="0"/> <xsd:element name="query" type="iea:queryType" minOccurs="0"/> <!-- katso/list --> <xsd:element name="forms" type="iea:formsType" minOccurs="0"/> <!-- katso/login --> <xsd:element name="deadline" type="xsd:dateTime" minOccurs="0"/> <xsd:element name="kid" type="xsd:string" minOccurs="0"/> <xsd:element name="version" type="xsd:string" minOccurs="0"/> <xsd:element name="personName" type="xsd:string" minOccurs="0"/> <xsd:element name="accountExpiring" type="xsd:boolean" minOccurs="0"/> <xsd:element name="nextOtpCode" type="xsd:string" minOccurs="0"/> <!-- katso/send --> <xsd:element name="reason" type="xsd:string" minOccurs="0"/> <xsd:element name="info" type="xsd:string" minOccurs="0"/> <xsd:element name="errors" type="iea:errorsType" minOccurs="0"/> <xsd:element name="message_id" type="xsd:integer" minOccurs="0"/> <xsd:element name="s087" type="xsd:string" minOccurs="0"/> <xsd:element name="signature" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="statusType"> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="id" type="xsd:positiveInteger" use="required"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> <xsd:complexType name="recordTypeType"> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="id" type="xsd:string" use="required"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> <xsd:complexType name="transferType"> <xsd:sequence> <xsd:element name="record" type="iea:transferRecordType" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="mode" type="iea:transferModeType"/> </xsd:complexType> <xsd:complexType name="transferRecordType"> <xsd:sequence> <xsd:element name="type" type="iea:recordTypeType"/> <xsd:element name="message_id" type="xsd:integer" minOccurs="0"/> <xsd:element name="error" type="iea:statusType" minOccurs="0"/> </xsd:sequence> <xsd:attribute name="num" type="xsd:positiveInteger" use="required"/> </xsd:complexType> <xsd:simpleType name="transferModeType"> 23 (24) OpusCapita TYVI AJL 17.8.2015 External <xsd:restriction base="xsd:string"> <xsd:enumeration value="test"/> </xsd:restriction> </xsd:simpleType> <xsd:complexType name="queryTypeType"> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="id" type="xsd:string" use="required"/> <xsd:attribute name="count" type="xsd:nonNegativeInteger" use="required"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> <xsd:complexType name="queryType"> <xsd:sequence> <xsd:element name="type" type="iea:queryTypeType" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="download-token" type="xsd:string" minOccurs="0" maxOccurs="1"/> </xsd:sequence> <xsd:attribute name="results" type="xsd:nonNegativeInteger" use="required"/> </xsd:complexType> <xsd:complexType name="formsType"> <xsd:element name="form" type="iea:formType" minOccurs="0" maxOccurs="unbounded"/> </xsd:complexType> <xsd:complexType name="formType"> <xsd:sequence> <xsd:element name="message_id" type="xsd:integer"/> <xsd:element name="form" type="xsd:string"/> <xsd:element name="identifier" type="xsd:string"/> <xsd:element name="common_name" type="xsd:string"/> <xsd:element name="period" type="xsd:string"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="errorsType"> <xsd:element name="error" type="iea:errorType" minOccurs="0" maxOccurs="unbounded"/> </xsd:complexType> <xsd:complexType name="errorType"> <xsd:simpleContent> <xsd:extension base="xs:string"> <xsd:attribute name="field" type="xsd:string"/> <xsd:attribute name="value" type="xsd:string"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:schema> 24 (24)