Netbox - NetAPI
Tämä dokumentaatio on päivitetty viimeksi 5.2.2020.
Netboxin NetAPI on ohjelmointirajapinta partnereille. NetAPI on yksityinen palvelu, johon pääsy vaatii käyttäjätunnuksen, asiakastunnuksen ja salasanan perusteella muodostetun käyttöoikeustiivisteen.
Partnereilla on mahdollisuus kokeilla rajapintaa testiympäristössä pyytämällä tunnukset esimerkiksi Netboxin asiakaspalvelusta ([email protected]).
Lisäksi omaan käyttöön saa myös valmiin toteutuksen PHP- ja C# -kielillä, joiden avulla partneri voi esimerkkien avulla toteuttaa helpommin integraation järjestelmäänsä.
Palvelut ovat luonteeltaan REST-tyylisiä palvelupyyntöjä.
Palvelut suoritetaan salatulla HTTPS-yhteydellä.
Tietorakenteiden siirtomuotona käytetään JSON-muotoa.
Palvelukutsujen onnistuminen ilmaistaan standardein http- paluukoodein (katso kohta HTTP-tilakoodeja alempana).
NetAPI on taaksepäin yhteensopiva, joka tarkoittaa olemassa olevien rakenteiden säilymistä tai laajentamista ei-pakottavalla tavalla. NetAPIa käyttävien ohjelmistojen on hyvä ottaa tämä huomioon ja välttää hylkäämästä vastauksia, joissa esiintyy kenttiä, joita toteutusvaiheen aikana ei vielä ollut tiedossa. Vastaavasti taaksepäin yhteensopivuudella tarkoitetaan, ettei NetAPI hylkää pyyntöjä, vaikka myöhemmin määritellyt kentät puuttuisivatkin pyynnöstä. Uusia palveluja voidaan lisätä kokonaan uusilla rakenteilla.
Tässä dokumentissa kuvatun palvelun versio on 1.01. Versionumeroinnin tarkoitus on ilmaista taaksepäin yhteensopivuuden varmistamista: MAJOR.MINOR; Kun MAJOR versionumero vaihtuu (esimerkiksi 1.0 seuraajaksi tulee 2.0), palvelurajapinta ei välttämättä ole kaikilta osin yhteensopiva. Kun ainoastaan MINOR numero vaihtuu, palvelurajapinnan taaksepäin yhteensopivuus varmistetaan.
API - palvelupyynnöt:
Asiakkaat:GET palveluosoite/customers?search=<pattern>
GET palveluosoite/customers/<customer_identifier>
POST palveluosoite/customers/<customer_identifier>
Sanomat:
GET palveluosoite/messages/available
GET palveluosoite/messages/headers
GET palveluosoite/messages/headers/<type>
GET palveluosoite/messages/<type>
GET palveluosoite/messages/id/<id>
GET palveluosoite/messages/statuses/<vat_identifier>
POST palveluosoite/messages
POST palveluosoite/messages (resend)
Yritystiedot:
GET palveluosoite/companies/<vat_identifier>
GET palveluosoite/companies?search=<company_name>
Täällä voit testata NetAPI Demo tunnuksia, kyselyjä ja nähdä mitä ne palauttaa:
NetAPI Demo -portaali
HTTP-tilakoodeja
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Autentikaatio
Käyttöoikeustietue muodostetaan kahdessa vaiheessa.Vaihe 1:
Palvelukutsuissa vaaditaan kirjautumisessa saatu käyttöoikeustietue (access token).
GET palveluosoite/tickets/<username>[/<customer_identifier>]
username = NetAPI -käyttäjätunnus
customer_identifier = asiakastunnus (esim. Y-tunnus tai optio -any-)
Muodostetaan käyttäjätunnuksen ja asiakastunnuksen perusteella tiketti kirjautumista varten. Pyynnössä ei välitetä salasanaa lainkaan palvelimelle.
Käyttäjätunnuksen parina voidaan antaa asiakastunnus. Asiakastunnuksen puuttuessa toimitaan kuten kättäjätunnuksen arvoa olisi käytetty asiakastunnuksena. Asiakastunnus voi olla myös arvoa ” -any- " ("viiva any viiva").
Huomioitavaa, että muodostaessa tikettiä ”-any-” optiolla (kentässä <customer_identifier> ) antaa admin -oikeuden kaikkiin tunnuksen alla olevien yritysten aineistoihin (sanomat, data ja asiakastietojen tallennus ja muokkaus).
Vaihtoehtoisesti annettaessa esim. Y-tunnus kentässä <customer_identifier>, rajataan oikeudet vain kyseisen yrityksen aineistoihin, dataan ja asiakastietoihin.
url | username | NetAPI käyttäjätunnus | |
url | customer identifier | NetAPI käyttäjätunnukseen kytketty asiakastunnus |
TicketRecord
Kenttä | Tyyppi | Kuvaus |
---|---|---|
version | string | rakenteen versio:"1.01" |
ticket | string | tiketti |
expires | date-time | tiketin voimassaolo päättyy |
Vaihe 2:
GET palveluosoite/tokens/<secured_hash>
Muodostetaan varmennetun tiivisteen (secured hash) perusteella käyttöoikeustietue (access token). Pyynnössä ei välitetä käyttäjätunnusta, asiakastunnusta eikä salasanaa lainkaan palvelimelle.
url | secured_hash | Heksadesimaalinen sha1-tuottama varmennettu tiiviste peräkkäin yhteenliitetystä salasanasta ja tiketistä. |
TokenRecord
Kenttä | Tyyppi | Kuvaus |
---|---|---|
version | string | rakenteen versio:"1.01" |
token | string | Käyttöoikeustietue |
expires | date-time | Käyttöoikeustietueen voimassaolo päättyy |
Kaikki muut kutsut vaativat palautetun käyttöoikeustietueen (access token) Authorization headerinä:
Authorization: Bearer <käyttöoikeustietue>
Istunnon toiminnot rajautuvat autentikoinnissa ilmaistuun asiakkuuteen. Esimerkiksi, sanoman poiminta poimii vain asiakkaalle tulevia sanomia.
Asiakastunnuksen ollessa tyhjä tai käyttäjätunnus itsessään, toiminnot rajautuvat käyttäjätunnuksen tietoihin. Asiakastunnuksen ollessa ” -any- ”, toiminnot rajautuva käyttäjätunnuksen kaikkiin asiakkuuksiin.
ASIAKASTIEDOT
GET palveluosoite/customers?search=<pattern>
url | pattern | Hakutekijä Voit käyttää %-merkkiä, esim. Yritysnim%, hakee kaikki asiakkaat, joiden nimi alkaa "Yritysnim" -sanalla. |
CustomerItemRecord
Kenttä | Tyyppi | Kuvaus |
---|---|---|
version | string | rakenteen versio:"1.01" |
identifier | string | Asiakkaan tunniste (asiakkaan/HUBin ohjelmistossa, yleensä Y-tunnus). |
name | string | Asiakkaan nimi. |
vat_identifier | string | Asiakkaan y-tunnus. |
edi_identifier | string | Asiakkaan OVT-tunnus. |
free_text | string | Vapaata tekstiä. |
open_invoice_channels | string |
• Jos open_invoice_channels arvo on 0, silloin myyntilaskukanava on OFF ja ostolaskukanava on OFF (molemmat kiinni). • Jos open_invoice_channels arvo on 1, silloin myyntilaskukanava on ON ja ostolaskukanava on OFF. • Jos open_invoice_channels arvo on 2, silloin myyntilaskukanava on OFF ja ostolaskukanava on ON. • Jos open_invoice_channels arvo on 3, silloin myyntilaskukanava on ON ja ostolaskukanava on ON (molemmat auki). Jos ostolaskukanava on kiinni (OFF = arvo 0 tai 1), silloin verkkolaskun lähettäjän operaattori saa automaattisesti virheilmoituksen (negatiivinen ACK -sanoma), että vastaanottajalle ei voida toimittaa verkkolaskua. |
GET palveluosoite/customers/<customer_identifier>
url | customer_identifier | Asiakastunnus. |
CustomerItemRecord
Kenttä | Tyyppi | Kuvaus |
---|---|---|
version | string | rakenteen versio:"1.01" |
identifier | string | Asiakkaan tunniste. |
name | string | Asiakkaan nimi. |
vat_identifier | string | Asiakkaan y-tunnus. |
edi_identifier | string | Asiakkaan OVT-tunnus. |
eaddress_send | boolean | Laskun lähetystieto verkkolaskuosoitteistoon |
eaddress_receive | boolean | Laskun vastaanottotieto verkkolaskuosoitteistoon |
free_text | string | Vapaata tekstiä. |
open_invoice_channels | string |
• Jos open_invoice_channels arvo on 0, silloin myyntilaskukanava on OFF ja ostolaskukanava on OFF (molemmat kiinni). • Jos open_invoice_channels arvo on 1, silloin myyntilaskukanava on ON ja ostolaskukanava on OFF. • Jos open_invoice_channels arvo on 2, silloin myyntilaskukanava on OFF ja ostolaskukanava on ON. • Jos open_invoice_channels arvo on 3, silloin myyntilaskukanava on ON ja ostolaskukanava on ON (molemmat auki). Jos ostolaskukanava on kiinni (OFF = arvo 0 tai 1), silloin verkkolaskun lähettäjän operaattori saa automaattisesti virheilmoituksen (negatiivinen ACK -sanoma), että vastaanottajalle ei voida toimittaa verkkolaskua. |
POST palveluosoite/customers/<customer_identifier>
url | customer_identifier | Asiakastunnus.Jos ei annettu, yritetään luoda asiakas, muutoin koitetaan päivittää asiakkaan tiedot. | |
body | CustomerRecord | Asiakkaan tiedot. Päivitettäessä asiakastunnuksen on täsmättävä url-parametrissa annetun tunnuksen kanssa. |
CustomerRecord
Kenttä | Tyyppi | Kuvaus |
---|---|---|
version | string | rakenteen versio:"1.01" |
identifier | string | Asiakkaan tunniste (asiakkaan/HUBin ohjelmistossa, yleensä Y-tunnus). |
name | string | Asiakkaan nimi. |
vat_identifier | string | Asiakkaan y-tunnus |
edi_identifier | string | Asiakkaan OVT-tunnus |
eaddress_send | boolean | Laskun lähetystieto verkkolaskuosoitteistoon |
eaddress_receive | boolean | Laskun vastaanottotieto verkkolaskuosoitteistoon |
open_invoice_channels | string |
• Jos open_invoice_channels arvo on 0, silloin myyntilaskukanava on OFF ja ostolaskukanava on OFF (molemmat kiinni). • Jos open_invoice_channels arvo on 1, silloin myyntilaskukanava on ON ja ostolaskukanava on OFF. • Jos open_invoice_channels arvo on 2, silloin myyntilaskukanava on OFF ja ostolaskukanava on ON. • Jos open_invoice_channels arvo on 3, silloin myyntilaskukanava on ON ja ostolaskukanava on ON (molemmat auki). Jos ostolaskukanava on kiinni (OFF = arvo 0 tai 1), silloin verkkolaskun lähettäjän operaattori saa automaattisesti virheilmoituksen (negatiivinen ACK -sanoma), että vastaanottajalle ei voida toimittaa verkkolaskua. |
secret | string | Asiakkaan salasana. Kenttää käytetään vain asiakastietojen päivityksissä Mekanismin avulla NetAPI käyttäjä voi tarjota asiakkuuksilleen asiakastunnukseen kytketyn salasanan halutessaan. |
address | CustomerRecord.Address | Osoite (katso rakenne alla) |
contact | CustomerRecord.Contact | Kontaktitiedot (katso rakenne alla) |
support | CustomerRecord.Support | Tuen kontaktitiedot (katso rakenne alla) |
free_text | string | Vapaata tekstiä |
CustomerRecord.Address
Kenttä | Tyyppi | Kuvaus |
---|---|---|
street | [string] | Katuosoite. 1-4 riviä |
zipcode | string | Postinumero |
city | string | Kaupunki |
district | string | Lääni |
country | string | Maa |
phone | string | Puhelin |
CustomerRecord.Support
Kenttä | Tyyppi | Kuvaus |
---|---|---|
string | Sähköpostiosoite |
SANOMAT
GET palveluosoite/messages/available
Ei parametreja |
IncomingInfo
Kenttä | Tyyppi | Kuvaus |
---|---|---|
version | string | rakenteen versio:"1.01" |
items | int | Saapuvien sanomatiedostojen lukumäärä |
details | [IncomingInfo.Details] | Saapuvista sanomista erittelytietoa (katso alla) |
GET palveluosoite/messages/headers
Ei parametreja |
IncomingInfo
Kenttä | Tyyppi | Kuvaus |
---|---|---|
version | string | rakenteen versio:"1.01" |
items | int | Saapuvien sanomatiedostojen lukumäärä |
details | [IncomingInfo.Details] | Saapuvista sanomista erittelytietoa (katso alla) |
GET palveluosoite/messages/headers/<type>
url | type | Valinnainen rajaus haluttuun sanomatyyppin. Sanomatyypit löytyvät MessageData –rakenteen kuvauksen yhteydessä. |
IncomingInfo
Kenttä | Tyyppi | Kuvaus |
---|---|---|
version | string | rakenteen versio:"1.01" |
items | int | Saapuvien sanomatiedostojen lukumäärä |
details | [IncomingInfo.Details] | Saapuvista sanomista erittelytietoa (katso alla) |
GET palveluosoite/messages/<type>
Sanomat tulevat fifo:n mukaan, eli vanhin sanoma ensin.
url | type | Valinnainen rajaus haluttuun sanomatyyppin. Sanomatyypit löytyvät MessageData –rakenteen kuvauksen yhteydessä. |
MessageData
Kenttä | Tyyppi | Kuvaus |
---|---|---|
version | string | rakenteen versio:"1.01" |
identifier | string | Sanoman tunniste |
type | enum | Sanoman tyyppi |
datafiles | [MessageData.DataFile] | Sanoman tiedostot (katso alla) |
GET palveluosoite/messages/id/<id>
Haku ei poista sanomaa sanoma jonosta, vaan on edelleen noudettavsissa jonohaulla.
url | id | Tietyn sanoman sanomatunniste. Sanomatunnisteen voit noutaa /headers/ - kutsulla. |
MessageData
Kenttä | Tyyppi | Kuvaus |
---|---|---|
version | string | rakenteen versio:"1.01" |
identifier | string | Sanoman tunniste |
type | enum | Sanoman tyyppi |
datafiles | [MessageData.DataFile] | Sanoman tiedostot (katso alla) |
POST palveluosoite/messages
Sanoma suositellaan lähetettävän kokonaisuudessaan ZIP-tiedostona. Tiedostot voidaan lähettää myös erikseen, joka yhtenä palvelukutsuna tai erillisinä palvelukutsuina. Sanomatunniste on viitteellinen tieto. Erillisiä tiedostoja ei kytketä sanomaan sanomatunnisteen avulla, vaan ainoastaan sisältöjen perusteella. Sanomatunnisteen tulee olla pysyvästi yksikäsitteinen. Tiedostojen nimien tulee olla yksikäsitteisiä 6kk ajan.
url | type | Valinnainen rajaus haluttuun sanomatyyppin. |
MessageData
Kenttä | Tyyppi | Kuvaus |
---|---|---|
version | string | rakenteen versio:"1.01" |
identifier | string | Sanoman tunniste |
type | enum | Sanoman tyyppi |
datafiles | [MessageData.DataFile] | Sanoman tiedostot (katso yllä) |
POST palveluosoite/messages
Jo lähetetyn sanoman esim. laskun "resend".
url | type | Valinnainen rajaus haluttuun sanomatyyppin. |
MessageData
Kenttä | Tyyppi | Kuvaus |
---|---|---|
version | string | rakenteen versio:"1.01" |
identifier | string | Sanoman tunniste |
type | enum | Sanoman tyyppi |
datafiles | [MessageData.DataFile] | Sanoman tiedostot (katso yllä) |
YRITYSTIEDOT
GET palveluosoite/companies/<vat_identifier>
url | vat_identifier | Yrityksen y-tunnus |
CompanyRecord
Kenttä | Tyyppi | Kuvaus |
---|---|---|
version | string | rakenteen versio:"1.01" |
vat_identifier | string | Yrityksen y-tunnus |
names | [CompanyRecord.Name] | Yrityksen nimitiedot (katso alla) |
addresses | [CompanyRecord.Address] | Yrityksen osoitetiedot (katso alla) |
eaddresses | [CompanyRecord.Eaddress] | Yrityksen sähköiset osoitetiedot (katso alla) |
GET palveluosoite/companies?search=<company_name>
Hakusana(t) tulee olla enkoodattu esim. PHP:ssä urlencode($hakusana);
url | ?search= | Yrityksen nimi tai osa nimestä. Haku on "case insensitive". |
CompanyRecord
Kenttä | Tyyppi | Kuvaus |
---|---|---|
version | string | rakenteen versio:"1.01" |