Efecte Web API -kuvaus
Tässä osiossa kuvataan Efecte Web API ja miten ulkoiset sovellukset käyttävät sitä integroituakseen Efecteen. API perustuu tavalliseen HTTP-protokollaan. Efecte Web API -metodeja kutsutaan osoitteesta Efecte-URL + /serviceName, jossa serviceName on kutsuttavan palvelun nimi. Esimerkiksi: https://localhost:8080/esm/search.ws tai Efecte-pilvessä https://base_url/api/itsm/search.ws.
Ennen Web API:n käyttöä tutustu lukuun ”Todennus”, jossa kuvataan Web API:n todennus ja annetaan lisätietoja rooleista ja käyttöoikeuksista. Tässä luvussa käsitellään myös web API -roolin ja -käyttäjän luomista. Web API -käyttäjän on oltava paikallinen ESM-tili, ei EIM-tili, jota käytetään pilviympäristön kirjautumisiin.
Jotkin toiminnot voivat olla hitaita käsitellä. Esimerkiksi moniarvoisia viittauksia tuovat toiminnot vievät yleensä enemmän aikaa kuin tuonnit ilman viittauksia. Myös monimutkaiset lausekkeet mallissa voivat hidastaa tuontien käsittelyä. Tulokset kannattaa aina rajata where-ehdolla ja esimerkiksi templateCode-parametrilla search.ws-palvelussa.
DataCardImport-palvelu
Jotta Efecteen voidaan luoda uusi tietokortti, käyttäjän on kutsuttava dataCardImport-palvelua. Palvelu ottaa vastaan tietokortin XML:n HTTP-pyynnön sisältönä (BODY), joten kutsujan on tunnettava XML-syntaksi ja luotavan tietokortin Efecte-skeema. Tässä dokumentissa ei kuvata XML-skeemaa, joten katso lisätietoja dokumentista Efecte XML-skeeman kuvaus saadaksesi lisätietoja aiheesta. createDataCards -parametri on asetettava arvoon true, kun luodaan uusia tietokortteja.
Olemassa olevan tietokortin muokkaamiseksi lähetetyssä XML:ssä on oltava vähintään yksi tietokortin kenttä, joka on määritetty Efectessä yksilölliseksi (unique). Efecte yrittää tällöin kohdistaa saapuvan datan tietokorttiin ja päivittää vastaavan kortin. updateDataCards -parametri on asetettava arvoon true, kun olemassa olevia tietokortteja muokataan.
Tietokortteja päivitettäessä XML:n attribuuttiarvot korvaavat olemassa olevat arvot, ja kentät, joita XML:ssä ei ole, säilyvät Efectessä ennallaan. Jos haluat poistaa attribuuttiarvoja Efectestä, jätä XML:n value-elementti tyhjäksi ja käytä removeEmptyValues-parametria.
Huomaa, että integraatiotarkoituksissa on hyvä käytäntö tuoda vain yksi tietokortti kerrallaan ja pitää liikennemäärä kohtuullisena seuraavista syistä:
- Virheiden tarkastelu on helpompaa, koska tuonnin virheelliset entiteetit voidaan tunnistaa heti.
- Suurten tietokorttimäärien tuonti voi aiheuttaa aikakatkaisuja.
HTTP-parametrit
Seuraavassa on luettelo mahdollisista käytettävistä HTTP-parametreista (DataCardImport-palvelun HTTP-parametrit):
Parametrin nimi |
Pakollinen |
Mahdolliset arvot |
Oletus |
Kuvaus |
updateDataCards |
|
{true, false} |
true |
Päivitetäänkö täsmäävät tietokortit |
createDataCards |
|
{true, false} |
true |
Luodaanko täsmäämättömät tietokortit |
createStaticAttributes |
|
{true, false} |
false |
Luodaanko uudet staattiset arvot |
createEmptyReferences |
|
{true, false} |
false |
Luodaanko täsmäämättömät viittaukset tyhjinä tietokortteina |
ignoreUniqueCheck |
|
{true, false} |
false |
Ohitetaanko tietokortin kenttien yksilöllisyystarkistukset |
restrictUpdateToFolderId |
|
Kelvollinen Efecten tietokorttikansion ID |
|
Määrittää kansion, johon tietokorttien päivittäminen rajataan. Tämän parametrin voi lisätä useita kertoja. restrictUpdateToFolderCode-parametria ei saa käyttää, kun restrictUpdateToFolderId on käytössä. |
restrictUpdateToFolderCode |
|
Kelvollinen Efecten tietokorttikansion koodi |
|
Määrittää kansion, johon tietokorttien päivittäminen rajataan. Tämän parametrin voi lisätä useita kertoja. restrictUpdateToFolderId-parametria ei saa käyttää, kun restrictUpdateToFolderCode on käytössä. |
folderId |
Kyllä* |
Kelvollinen Efecten tietokorttikansion ID |
|
Määrittää folderId-parametrilla kansion, johon uudet tuodut tietokortit luodaan |
folderCode |
Kyllä* |
Kelvollinen Efecten tietokorttikansion koodi |
|
Määrittää folderCode-parametrilla kansion, johon uudet tuodut tietokortit luodaan |
removeEmptyValues |
|
{true, false} |
false |
Jos arvoksi asetetaan true, Efecte poistaa tietokortin arvot, jotka on merkitty XML:ssä tyhjällä value-elementillä |
version |
|
Mitä DataCardImport-palvelun versiota käytetään vastauksessa |
|
Jos arvo on ”1.1”, palautetun XML:n juurielementti on aina <response>, eli käytössä on web-api-import-response-1_1.xsd. Muussa tapauksessa käytetään web-api-import-response.xsd:tä (juurielementti on <entity-import-report> tai <error>). |
* Parametreissa on oltava joko folderId tai folderCode
Virheet DataCardImport-palvelussa
Yleisesti ottaen, jos jokin pakollisista parametreista (lueteltu taulukossa 7) puuttuu tai sisältää virheellisiä arvoja, palautetaan Web API -virhe. Näin tapahtuu myös Web API:n todennus- ja valtuutusvirheiden yhteydessä. (Katso lisätietoja Web API -virheistä luvusta 5, Web API -virheet.).
Jos taas jotain muuta menee pieleen joidenkin tietokorttien tuonnin aikana (esimerkiksi tuotavien korttien malli on väärin konfiguroitu), DataCardImport-palvelu palauttaa <entity-import-report>-elementin, joka sisältää tietoa käsitellyistä tietokorteista ja tuonnin aikana tapahtuneista virheistä.
Tuotavien arvojen tulee olla <value>-elementin sisällä. Jos arvot tuodaan <reference>-elementtien sisällä, tämä luo virheellisiä viittauksia itse tietokorttiin. Jos viittauksia tarvitaan, varmista, että web API -käyttäjällä on käyttöoikeus malliin, johon viitataan, muuten viittausta ei luoda. Viittausten on kohdistuttava mallin ensisijaiseen arvoon.
Esimerkkipyyntö ja -vastaus
Pyyntö
Palvelu: dataCardImport.ws
URL-esimerkki:
https://localhost:8080/esm/dataCardImport.ws?folderCode=incident_management
Sanoman sisältö:
<entityset>
<entity>
<template code="incident"/>
<attribute code="subject">
<value>Test incident</value>
</attribute>
<attribute code="category">
<value>Testing</value>
</attribute>
<attribute code="impact">
<value>3. Low</value>
</attribute>
<attribute code="urgency">
<value>3. Low</value>
</attribute>
</entity>
</entityset>Vastaus
<?xml version="1.0" encoding="utf-8"?>
<entity-import-report>
<start-time>09.07.2018 09:03:04</start-time>
<total-time>10,494</total-time>
<entities-handled-per-second>0,095</entities-handled-per-second>
<average-entity-handling-time>10,494</average-entity-handling-time>
<user>webapi</user>
<entities-handled>1</entities-handled>
<entities-saved>1</entities-saved>
<entities-updated>0</entities-updated>
<entities-created>1</entities-created>
</entity-import-report>Delete-palvelu
Olemassa olevan tietokortin poistamiseksi Efectestä käyttäjän on kutsuttava delete-palvelua. Palvelu voi poistaa tietokortteja kahden eri kriteerin perusteella:
- Tietokortin sisäinen ID (entity ID).
- Hakukysely; kyselyä vastaavat tietokortit poistetaan.
HTTP-parametrit
Delete-palvelun HTTP-parametrit:
Parametrin nimi |
Pakollinen |
Mahdolliset arvot |
Oletus |
Kuvaus |
ids |
Kyllä* |
|
|
Pilkuilla eroteltu luettelo sisäisistä tietokortin (entity) ID-arvoista, jotka yksilöivät poistettavat tietokortit |
query |
Kyllä* |
|
|
EQL-kysely, joka määrittää poistettavat tietokortit. Kyselyn on oltava sellainen, että kun se annetaan Search-verkkopalvelulle, se palauttaa dataa Efecten tietokortin XML (entity XML) -muodossa, eli kyselyn on oltava muotoa ”select entity from entity [...]”. |
useTrashcan |
|
{true, false} |
false |
Oletusarvoisesti tietokortit poistetaan pysyvästi, eli niitä ei vain siirretä roskakoriin. Jos tämä parametri asetetaan arvoon ”true”, roskakoria käytetään samalla tavalla kuin tietokortteja normaalisti poistettaessa Efecten verkkokäyttöliittymän kautta. Tässä tilassa tietokortit poistetaan pysyvästi vain, jos ne olivat jo roskakorissa. |
* Jompikumpi kahdesta parametrista (ids, query) on pakollinen. Parametrit käsitellään tässä järjestyksessä, ja vain yksi niistä otetaan huomioon palvelun yhdellä kutsukerralla. Jos sekä ids- että query-parametri on määritetty, palvelu jättää query-parametrin huomiotta ja yrittää poistaa tietokortit vain ids-parametrin perusteella.
Esimerkkipyyntö ja -vastaus, tietokortin poistaminen Entity ID:llä
Pyyntö
Palvelu: delete.ws
URL-esimerkki:
https://localhost:8080/esm/delete.ws?ids=15021
Vastaus
<?xml version="1.0" encoding="utf-8"?>
<entity-delete-report>
<successful-deletions count="1"/>
<failed-deletions count="0"/>
</entity-delete-report>Esimerkkipyyntö ja -vastaus, tietokortin poistaminen EQL:llä
Pyyntö
Palvelu: delete.ws
EQL: SELECT $efecte_id$, $subject$, $status$ FROM entity WHERE entity.template.code = 'incident' AND $efecte_id$='INC-000270'
URL-esimerkki:
https://localhost:8080/esm/delete.ws?query=select%20%24efecte_id%24%20%2C%24subject%24%2C%20%24status%24%20from%20entity%20where%20entity.template.code%20%3D%20'incident'%20and%20%24efecte_id%24%3D'INC-000270'
Vastaus
<?xml version="1.0" encoding="utf-8"?>
<entity-delete-report>
<successful-deletions count="1"/>
<failed-deletions count="0"/>
</entity-delete-report>Search-palvelu
Tietokorttien hakemiseksi Efecte tarjoaa dataCardSearch-verkkopalvelun, joka ottaa vastaan EQL (Efecte Query Language) -kyselyn ja palauttaa tulokset XML-muodossa. Katso luku 2, jossa on lisätietoja EQL-kyselyjen muodostamisesta.
Search-palvelun palauttama XML on jossakin seuraavista kolmesta muodosta:
- Entity XML
- Template XML
- “Generic” XML
Entity XML ja Template XML on kuvattu Efecte XML-skeeman kuvaus -dokumentissa. ”Generic”-muotoinen XML kuvataan esimerkein alla. Huomaa, että generic-muoto voi sisältää täydellisiä Entity XML- ja Template XML -instansseja EQL-kyselystä riippuen.
Päivämääräarvot palautetaan aina muodossa yyyy-MM-dd HH:mm:ss z, ISO 8601 -standardin mukaisesti. Huomaa, että aikavyöhykkeen nimi sisältyy loppuun. Käytössä on aina JVM:n tai tietokannan oletusaikavyöhyke. Huomaa, että jos ”multiple time zone support” (usean aikavyöhykkeen tuki) on käytössä, tämä voi poiketa Entity XML:stä, jossa päivämäärä- ja aika-arvot mukautetaan verkkopalvelun käyttäjän aikavyöhykeasetuksen mukaan.
Desimaaliluvuissa käytetään desimaalierottimena pistettä (.). Vastaus-XML:ssä käytettävä merkistökoodaus riippuu webservice.response.encoding-kehysasetuksesta (framework property). Oletuskoodaus on UTF-8.
Jos poistettuja tai piilotettuja tietokortteja ei tarvitse näyttää, käytä entity.deleted=0 tai entity.hidden=0 query-parametrissa.
Generic Result XML
Generic-hakutulosten mahdolliset datatyyppielementit:
Elementti |
Huomautukset |
<date> |
Käytettävä muoto on aina yyyy-MM-dd HH:mm:ss z. |
<decimal> |
Desimaaliluvut; desimaalierotin on aina ”.” (piste) |
<integer> |
Kokonaisluvut |
<string> |
Monet Efecten datatyypit (ei vain ”text” ja ”string”, vaan myös esimerkiksi ”external references”) tulostetaan merkkijonona (string) |
<null> |
Null-arvot ovat erikoistapaus. Esimerkiksi merkkijonoattribuutti, jonka arvo on null, ei näy muodossa <string></string> tai <string>null</string>, vaan yksinkertaisesti muodossa <null/> |
HTTP-parametrit
Search-palvelun HTTP-parametrit:
Parametrin nimi |
Pakollinen |
Mahdolliset arvot |
Oletus |
Kuvaus |
query |
Kyllä |
Mikä tahansa kelvollinen EQL-kysely |
|
Määrittää hakukyselyn. Lisätietoja luvussa 2. |
attributeCodes |
|
Mikä tahansa kelvollinen mallin attributeCode |
|
Palauttaa mallista vain annetut attributeCodes-arvot |
Esimerkkipyyntö ja -vastaus, palauttaa vain entiteettien nimet
Yksinkertaiseen EQL-kyselyyn vastauksena palautetaan asiakirja, joka koostuu <string>-arvoista suoraan <result>-elementin alla.
Pyyntö
Palvelu: search.ws
EQL: SELECT entity.name FROM entity WHERE entity.folder.name = 'Incident management'
URL-esimerkki:
https://localhost:8080/esm/search.ws?query=select%20entity.name%20from%20entity%20where%20entity.folder.name%20%3D%20'Incident management'
Vastaus
<?xml version="1.0" encoding="UTF-8" ?>
<result>
<string>Problems in CRM</string>
<string>Mobile phone not working</string>
<string>Test incident</string>
<string>API incident</string>
</result>Esimerkkipyyntö ja -vastaus, mallin attribuuttikoodien käyttö
Kun valitaan useita kenttiä, tulokset ryhmitellään <row>-elementeillä. Huomaa, että merkkijonojen järjestys rivin sisällä vastaa attribuuttien järjestystä select-lauseessa (sijainnit ovat sidottuja).
Pyyntö
Palvelu: search.ws
EQL: SELECT $efecte_id$ ,$subject$, $status$ FROM entity WHERE entity.template.code = 'incident'
URL-esimerkki:
https://localhost:8080/esm/search.ws?query=select%20%24efecte_id%24%20%2C%24subject%24%2C%20%24status%24%20from%20entity%20where%20entity.template.code%20%3D%20'incident'
Vastaus
<?xml version="1.0" encoding="UTF-8" ?>
<result>
<row>
<string>INC-000270</string>
<string> Problems in CRM </string>
<string>1 - Untouched</string>
</row>
<row>
<string>INC-000273</string>
<string>Mobile phone not working</string>
<string>1 - Untouched</string>
</row>
<row>
<string>INC-000272</string>
<string>Test incident </string>
<string>2 - Solving</string>
</row>
</result>Esimerkkipyyntö ja -vastaus, kansion nimen ja viittausdatan kohteen palauttaminen
Tässä tapauksessa generic-tulos-XML sisältää täydellisiä Entity XML -asiakirjoja ”upotettuna” siihen, yksinkertaisten <string>-arvojen ohella:
Pyyntö
Palvelu: search.ws
EQL: SELECT entity.folder.name, entity.referenceData.target FROM entity WHERE entity.templateId = 2597
URL-esimerkki:
https://localhost:8080/esm/search.ws?query= select%20entity.folder.name%2C%20entity.referenceData.target%20from%20entity%20where%20entity.templateId%20%3D%202597
Vastaus
<?xml version="1.0" encoding="UTF-8" ?>
<result>
<row>
<string>Incident management</string>
<entity id="14549" name="18.06.2018 09:03">
<template id="5604" name="ValueChange" code="ValueChange"/>
<group id="834" name="system"/>
<attribute id="5610" name="Value" code="value">
<value>1 - Untouched</value>
</attribute>
<attribute id="5614" name="Modifier" code="creator">
<value>webapi</value>
</attribute>
</entity>
</row>
<row>
<string>Incident management</string>
<entity id="15066" name="18.06.2018 13:56">
<template id="5604" name="ValueChange" code="ValueChange"/>
<group id="834" name="system"/>
<attribute id="5610" name="Value" code="value">
<value>1 - Untouched</value>
</attribute>
<attribute id="5614" name="Modifier" code="creator">
<value>webapi</value>
</attribute>
</entity>
</row>
</result>Esimerkkipyyntö ja -vastaus, annettujen attribuuttien palauttaminen attributeCodes-parametrilla
attrbuteCodes määrittää, mitkä attribuutit palautetaan vastaussanomassa. Näin web API ei palauta attribuutteja, joita käyttäjä ei tarvitse.
Pyyntö
Palvelu: search.ws
EQL: SELECT entity FROM entity WHERE template.code='workstation'
AttributeCodes: efecte_id,workstation_model,status
URL-esimerkki:
https://localhost:8080/esm/search.ws?attributeCodes=efecte_id,workstation_model,status&query=select%20entity%20from%20entity%20where%20template.code%20%3D%20'workstation'
Vastaus
<?xml version="1.0" encoding="UTF-8" ?>
<entityset>
<entity id="19103" name="Test User">
<template id="1622" name="Workstation" code="workstation"/>
<group code="asset"/>
<attribute id="1628" name="Device model" code="workstation_model">
<reference id="19125" name="MacBook Pro 15"/>
</attribute>
<attribute id="1380" name="Status" code="status">
<value>2 - In use</value>
</attribute>
<attribute id="1311" name="Efecte ID" code="efecte_id">
<value>WS-000148</value>
</attribute>
</entity>
</entityset>FileMetaData-palvelu
FileMetaData-palvelua käytetään tietokorttiin liitettyjen tiedostoliitteiden tietojen hakemiseen. Jos tietokortissa on useita liitteitä sisältäviä kenttiä, kaikkien näiden liitteiden tiedot palautetaan samalla kertaa. Tämä tekee API:sta vähemmän monisanaisen.
Efecte 4.2:sta alkaen Metadata-palvelu palauttaa kunkin liitteen kohdalla paitsi name myös näyttönimen (displayname). Name on sisäinen tiedostonimi (esim. ”20180717_1.xml”), jota käytetään tunnisteena File Download -palvelulle tehtävissä pyynnöissä (katso seuraava osio). Displayname on liitetiedoston alkuperäinen nimi, joka on yleensä helppolukuisempi (esim. ”readme.txt”).
HTTP-parametrit
FileMetaData-palvelun HTTP-parametrit:
Parametrin nimi |
Pakollinen |
Mahdolliset arvot |
Oletus |
Kuvaus |
entityId |
Kyllä |
Minkä tahansa järjestelmän tietokortin ID, siis kokonaisluku |
|
Määrittää tietokortin, jonka tiedostometatiedot haetaan. |
Esimerkkipyyntö ja -vastaus
Pyyntö
Palvelu: fileMetadata.ws
URL-esimerkki:
https://localhost:8080/esm/fileMetadata.ws?entityId=15048
Vastaus
<?xml version="1.0" encoding="utf-8"?>
<entity-attachment-metadata>
<entity id="15048">
<attribute id="2696" code="file_attachments">
<attachment>
<name>20180717_1.xml</name>
<displayname>test.xml</displayname>
<size>4871</size>
<last-modified>2018-07-17 09:35:12 EEST</last-modified>
</attachment>
</attribute>
</entity>
</entity-attachment-metadata>FileDownload-palvelu
FileDownload-palvelua käytetään Efectessä olevien tietokorttien liitetiedostojen lataamiseen. Tiedostot palautetaan HTTP-vastauksessa.
Asiakassovelluksen tulisi aina ensin tarkistaa vastauksen HTTP-tilakoodi. Vastauksen sisältöä voidaan tulkita pyydetyksi tiedostoksi vain, jos tilakoodi on ”200 OK”. Muita tilakoodeja, joita palvelu tyypillisesti asettaa, ovat:
- 400 Bad Request – Jos jokin pakollisista parametreista puuttuu.
- 403 Forbidden – Jos verkkopalvelun käyttäjällä ei ole käyttöoikeuksia määritettyyn kohteeseen.
- tietokorttiin tai attribuuttiin.
- 404 Not Found – Jos pyydettyä tiedostoa ei löydy.
Näissä virhetilanteissa HTTP-vastauksen sisältö on XML-muotoinen virhesanoma, joka sisältää tarkempia tietoja.
HTTP-parametrit
FileDownload-palvelun HTTP-parametrit:
Parametrin nimi |
Pakollinen |
Mahdolliset arvot |
Oletus |
Kuvaus |
entityId |
Kyllä |
Kokonaisluku |
|
Määrittää tietokortin, johon pyydetty tiedosto on liitetty. |
attributeId |
Kyllä |
Kokonaisluku |
|
Määrittää tietokortin kentän, johon pyydetty tiedosto on liitetty. |
filename |
Kyllä |
Merkkijono |
|
Määrittää pyydetyn tiedoston nimen. Tämä vastaa liitteen name-elementtiä (ei displayname-elementtiä), jonka Metadata-palvelu palauttaa. |
Esimerkkipyyntö ja -vastaus
Pyyntö
Palvelu: fileDownload.ws
URL-esimerkki:
https://localhost:8080/esm/fileDownload.ws?entityId=15048&attributeId=2696&fileName=20180717_1.xml
Vastaus
Tässä tapauksessa vastaus näyttää tiedoston sisällön
<?xml version="1.0" encoding="UTF-8"?>
<inventory>
<item>
<title>Computer</title>
<price>1000</price>
<company>Customer</company>
</item>
<inventory>FileUpload-palvelu
FileUpload-palvelua käytetään tiedostojen lataamiseen Efecten tietokorttiin. FileUpload-palvelu jäsentää HTTP-pyyntöjä, jotka noudattavat RFC 1867 -standardia (”Form-based File Upload in HTML”). Toisin sanoen HTTP-pyyntö lähetetään POST-metodilla ja sisältötyypillä ”multipart/form-data”. Tarvittaessa on mahdollista lähettää useita tiedostoja kerralla.
Tietokortti on luotava, ennen kuin siihen voi ladata tiedoston! FileUpload-palvelu ei luo uutta tietokorttia.
HTTP-parametrit
FileUpload-palvelun HTTP-parametrit:
Parametrin nimi |
Pakollinen |
Mahdolliset arvot |
Oletus |
Kuvaus |
entityId |
Kyllä |
Kokonaisluku |
|
Määrittää tietokortin, johon ladattava tiedosto liitetään. |
attributeId |
Kyllä |
Kokonaisluku |
|
Määrittää tietokortin kentän, johon ladattava tiedosto liitetään. |
operationType |
|
Merkkijono |
|
”add” tarkoittaa, että ladattava tiedosto lisätään muiden mahdollisesti jo valitussa kentässä olevien tiedostojen joukkoon. ”set” tarkoittaa, että ladattava tiedosto korvaa valitussa kentässä jo olevat tiedostot. Oletustoiminto on ”set”. |
Esimerkkipyyntö ja -vastaus
Pyyntö
Palvelu: fileUpload.ws
URL-esimerkki:
https://localhost:8080/esm/fileUpload.ws?entityId=14938&attributeId=2696&operationType=set
Content-Type: multipart/form-data
Vastaus
<?xml version="1.0" encoding="utf-8"?>
<attachment-upload-result>
<attachment>
<name>20180717_15.xml</name>
</attachment>
</attachment-upload-result>Vaiheittainen esimerkki tietokortin luomisesta ja tiedoston lataamisesta siihen
Tämä vaiheittainen esimerkki näyttää kaikki vaiheet, jotka tarvitaan tiedoston lataamiseen alusta alkaen. Avainattribuutit on lihavoitu. Se koostuu seuraavista vaiheista:
- Tietokortin tuonti (luonti).
- Tietokortin entityId:n kysely.
- Mallin tiedostoliiteattribuutin attributeId:n selvittäminen.
- Tiedoston lataaminen luotuun tietokorttiin.
Ensin on luotava tietokortti:
Pyyntö
Palvelu: dataCardImport.ws
URL-esimerkki:
https://localhost:8080/esm/dataCardImport.ws?folderCode=incident_management
Sanoman sisältö:
<entityset>
<entity>
<template code="incident"/>
<attribute code="subject">
<value>File upload test</value>
</attribute>
<attribute code="impact">
<value>3. Low</value>
</attribute>
<attribute code="urgency">
<value>3. Low</value>
</attribute>
</entity>
</entityset>Vastaus
<?xml version="1.0" encoding="utf-8"?>
<entity-import-report>
<start-time>04.09.2018 08:27:29</start-time>
<total-time>0,602</total-time>
<entities-handled-per-second>1,661</entities-handled-per-second>
<average-entity-handling-time>0,602</average-entity-handling-time>
<user>webapi</user>
<entities-handled>1</entities-handled>
<entities-saved>1</entities-saved>
<entities-updated>0</entities-updated>
<entities-created>1</entities-created>
</entity-import-report>Ennen kuin tiedosto voidaan ladata, entityId ja attributeId on tunnettava juuri luodun tietokortin tiedostoliitteille. Alla on kysely, jota voidaan käyttää entityId:n hakemiseen ja myös muun datan tarkistamiseen:
Pyyntö
Palvelu: search.ws
EQL: SELECT entity FROM entity WHERE template.code='incident' AND $created$>'NOW-1m' AND $created$<'NOW'
AttributeCodes: efecte_id,file_attachments,status,subject,description,created
URL-esimerkki:
https://localhost:8080/esm/search.ws?attributeCodes=efecte_id,file_attachments,status,subject,description,created&query=select%20entity%20from%20entity%20where%20template.code%3D'incident'%20and%20%24created%24%3E'NOW-1m'%20and%20%24created%24%3C'NOW'
Vastaus
<?xml version="1.0" encoding="UTF-8" ?>
<entityset>
<entity id="19221" name="File upload test">
<template id="2597" name="Incident" code="incident"/>
<group code="incident_management"/>
<attribute id="2612" name="Incident ID" code="efecte_id">
<value>INC-000275</value>
</attribute>
<attribute id="2623" name="Status" code="status">
<value>1 - Untouched</value>
</attribute>
<attribute id="2632" name="Subject" code="subject">
<value>File upload test</value>
</attribute>
<attribute id="2789" name="Created" code="created">
<value>04.09.2018 08:27</value>
</attribute>
</entity>
</entityset>AttributeId voidaan hakea esimerkiksi seuraavilla tavoilla:
Hallintasivun kautta, valitsemalla oikea malli ja muokkaamalla attribuuttia, jonka attributeId tarvitaan. Kun attribuutti avataan, id on viimeisen /-merkin jälkeiset numerot, esim.:
https://localhost:8080/esm/EfecteFrameset.do#/admin/templates/edit/2597/2680/2696
Search-palvelua käyttämällä mallin skeeman hakemiseksi.
Kysely mallin skeemasta:
Pyyntö
Palvelu: search.ws
EQL: SELECT template FROM template WHERE template.code='incident'
URL-esimerkki:
https://localhost:8080/esm/search.ws?query=select%20template%20from%20template%20where%20template.code='incident'
Vastaus
Vastauksesta on löydettävä <attribute>, jossa <code> on tiedostoliiteattribuutin attribuuttikoodi, ja tästä attribuutista halutaan hakea arvo elementille <class-attribute-id>, esimerkiksi:
…
<attribute>
<id>2695</id>
<class-attribute-id>2696</class-attribute-id>
<code>file_attachments</code>
<name>File attachments</name>
…Nyt kun meillä on entityId ja attributeId, voimme ladata tiedoston:
Pyyntö
Palvelu: fileUpload.ws
URL-esimerkki:
https://localhost:8080/esm/fileUpload.ws?entityId=19221&attributeId=2696&operationType=set
Content-Type: multipart/form-data
Vastaus
<?xml version="1.0" encoding="utf-8"?>
<attachment-upload-result>
<attachment>
<name>20180904_1.xml</name>
</attachment>
</attachment-upload-result>Tietokortin skeeman hakeminen
Efecten tietokortin metatietoihin, eli tietoon siitä, mitä kenttiä se voi sisältää ja niiden ominaisuuksiin, pääsee käsiksi dataCardSearch-verkkopalvelun kautta malleihin kohdistuvalla EQL-kyselyllä. Seuraavassa on esimerkki EQL-kyselystä, joka valitsee kaikki mallit:
SELECT template FROM template
URL-esimerkki:
https://localhost:8080/esm/search.ws?query=select%20template%20from%20template%20where%20template.code='incident'
Tietoturva
Salaus
HTTP-perustodennus lähettää tunnistetiedot selkotekstinä, joten HTTPS:n käyttö on välttämätöntä.
Todennus
Efecten web API -palvelut todennetaan HTTP-perustodennuksella. Verkkopalvelujen käyttöä varten Efecteen on luotava tunnistetiedot. (Luo käyttöoikeuspuussa rooli, jolla on oikeus käyttää Efecte Web API -palveluita, ja lisää rooliin yksi tai useampi käyttäjä.) Kaikki toiminnot suoritetaan todennetun Efecte-käyttäjän käyttöoikeuksilla. Nämä käyttöoikeudet määrittävät, mihin malleihin, attribuutteihin ja kansioihin verkkopalvelun käyttäjällä on pääsy.
Root-käyttäjää ei tulisi käyttää Web API -käyttäjänä, koska sillä on pääsy kaikkeen, minkä vuoksi rootin käyttö voi olla vaarallista. Web API -ongelmia selvitettäessä Web API -käyttäjän nostaminen väliaikaisesti root-tasolle voi kuitenkin auttaa tarkistamaan, johtuvatko ongelmat käyttöoikeuksista vai itse Web API -pyynnöstä.
Web API -käyttäjän luominen
- Luo rooli ja valitse Web API -tuoteoikeus.
- Lisää roolille kansio-oikeudet.
- Lisää roolille malliin liittyvät oikeudet.
- Luo web API -käyttäjä.
- Lisää käyttäjä aiemmin luotuun rooliin.
- Testaa, että pystyt suorittamaan halutut toiminnot web API:n kautta. Tämän voi tehdä selaimessa osoitteella /search.ws?query=select count(id) from entity
Table of Contents