Koble til via API
En ERP-modul kobler seg til Innova Connect på dette domenet. Modulen henter jobber selv. Innova Connect åpner aldri en forbindelse inn til ERP.
Basisadresse
Alle kall går til adressen under. Tenanten velges fra vertsnavnet, så kallet må treffe dette domenet.
https://connect.idynamics.no/api/connector/v1
Slik kobler modulen seg på
1. Hent en paringskode i portalen
Firmaet åpner området og lager koden under ERP. Den har 10 tegn, vises bare én gang, varer i 30 minutter og kan brukes én gang.
2. Bytt koden mot en tilkobling
Kall uten token. erpType er BC eller FSCM. Svaret er 201 og inneholder connectionId, clientId og clientSecret. Hemmeligheten kommer bare i dette svaret.
POST /pairing/claim
{
"pairingCode": "ABCD234567",
"erpType": "BC",
"erpVersion": "27.0",
"environmentId": "production",
"moduleVersion": "1.0.0",
"companies": [
{ "id": "CRONUS", "name": "CRONUS Norge AS", "orgNumber": "999999999" }
]
}3. Hent et tilgangstoken
Svaret inneholder access_token, token_type Bearer og expires_in 900. Tokenet varer i 15 minutter og gjelder bare denne tilkoblingen. Send det som Authorization: Bearer på kallene etterpå. Når det er utløpt, er feilkoden TOKEN_EXPIRED.
POST /oauth/token
{
"grant_type": "client_credentials",
"client_id": "<clientId>",
"client_secret": "<clientSecret>"
}4. Meld inn malene og et livstegn
Si hvilke maler og versjoner modulen kan kjøre. Send deretter et livstegn med modulversjon omtrent hvert femte minutt. connectionId i stien må være tilkoblingen tokenet gjelder.
PUT /connections/<connectionId>/capabilities
{
"templates": [
{ "code": "TRIAL_BALANCE", "versions": ["1.0.0"] },
{ "code": "GL_ENTRIES", "versions": ["1.0.0"] }
]
}
POST /connections/<connectionId>/heartbeat
{ "moduleVersion": "1.0.0", "pendingJobs": 0 }5. Hent jobber
wait er et long-poll i sekunder, maksimalt 25. GET på jobben gir mal, parametere, kolonner, om uttrekket kan inneholde personopplysninger, og hvor mange godkjenninger som gjenstår. En begrenset forespørsel får en nøytral tittel, ikke forespørselens egen tittel.
GET /jobs?state=awaiting_approval,approved&wait=25 GET /jobs/<jobId>
6. Lever uttrekket
Rapporter estimert radantall mens jobben venter. Godkjenn eller avvis med ERP-brukeren som besluttet. Avvisning krever en kommentar. Når jobben er godkjent, start den. Opprett deretter et resultat med minst to filer, selve dataene og en manifest. Hver fil kan være opptil 100 MB. Svaret er 201, med en PUT-adresse per fil som varer i fem minutter. Last opp med headeren x-ms-blob-type: BlockBlob. Fullfør med kildeinformasjon. Svaret er 202. Jobben blir levert først når filene er skannet og sjekksummen stemmer. Kan uttrekket ikke kjøres, kall fail. Ukjent mal er UNSUPPORTED_TEMPLATE.
POST /jobs/<jobId>/preview
{ "estimatedRows": 1200, "columns": ["accountNo", "balance"] }
POST /jobs/<jobId>/decision
{ "decision": "approved", "erpUser": "oda@firma.example" }
POST /jobs/<jobId>/start
POST /jobs/<jobId>/results
POST /jobs/<jobId>/results/<resultId>/complete
POST /jobs/<jobId>/fail
{ "code": "EXTRACTION_FAILED", "message": "Selskapet svarte ikke" }Endepunkter
Skrivende kall, unntatt paring og token, krever headeren Idempotency-Key.
| Metode | Sti | Formål |
|---|---|---|
| POST | /pairing/claim | Bytt paringskode mot tilkobling |
| POST | /oauth/token | Hent tilgangstoken |
| GET | /connections/{id} | Status, firmanavn og produktnavn |
| PUT | /connections/{id}/capabilities | Maler og versjoner modulen støtter |
| POST | /connections/{id}/heartbeat | Livstegn |
| GET | /jobs | Hent jobber, med long-poll |
| GET | /jobs/{jobId} | Full jobbspesifikasjon |
| POST | /jobs/{jobId}/preview | Estimert radantall og kolonner |
| POST | /jobs/{jobId}/decision | Godkjenn eller avvis i ERP |
| POST | /jobs/{jobId}/start | Kjøringen er startet |
| POST | /jobs/{jobId}/results | Opprett opplasting |
| POST | /jobs/{jobId}/results/{resultId}/complete | Fullfør med kildeinformasjon |
| POST | /jobs/{jobId}/fail | Meld teknisk feil |
Maler i denne versjonen
Modulen oppgir bare malene den faktisk kan kjøre. Versjonen nå er 1.0.0.
| Kode | Navn |
|---|---|
| CHART_OF_ACCOUNTS | Kontoplan |
| TRIAL_BALANCE | Saldobalanse |
| GL_ENTRIES | Hovedbok |
| CUSTOMER_MASTER | Kunderegister |
| VENDOR_MASTER | Leverandørregister |
| VAT_ENTRIES | Mva-poster |
Regler
- Idempotency-Key skal være mellom 8 og 200 tegn. Samme nøkkel og samme innhold gir det lagrede svaret igjen. Samme nøkkel med annet innhold avvises.
- Feil kommer som application/problem+json, med et stabilt code-felt.
- Hver tilkobling kan gjøre omtrent 600 kall i minuttet. Over det er koden RATE_LIMITED.
- Datafilen er CSV, UTF-8, pakket med gzip. manifest.json følger med som egen fil. SHA-256 regnes i modulen før opplasting.
Ikke med ennå
Rotasjon av hemmelighet, oppdatering av selskapslisten, fremdriftslogg, Partner-API, webhooks og MCP kommer senere. SAF-T lastes opp i portalen og bruker ikke denne paringen.