Utseende
REST-API
HIT inkluderar ett REST-API som låter dig utföra vissa åtgärder från ett annat system.
Autentisering
För att använda API:et behöver du först skapa en API-nyckel under Min profil → Säkerhet → API-nycklar.
Behörigheter
API-nycklar har samma behörigheter som användaren som skapade nyckeln. Det går dock att skapa en nyckel med endast läsrättigheter.
Varje API-anrop behöver ha headern Authorization: Bearer <nyckel>:
sh
curl -H 'Authorization: Bearer <apitoken>' https://din-hit-domän/api/queuesBasadressen
Byt ut din-hit-domän mot adressen ni når HIT på — samma värdnamn som i webbläsaren.
Anrop som ska få svar i JSON bör dessutom skicka med headern Accept: application/json.
Lista tillgängliga köer
Metod: GETEndpoint: /api/queues
Exempel på anrop:
sh
curl -H 'Authorization: Bearer <apitoken>' https://din-hit-domän/api/queuesExempel på svar:
json
{
"status": "OK",
"queues": [
{
"id": 1,
"name": "Demoskolan IT"
},
{
"id": 2,
"name": "Demoskolan Vaktis"
}
]
}Lista ärenden i en kö
Metod: GETEndpoint: /api/queues/{queueId}/tickets
Exempel på anrop:
sh
curl -H 'Authorization: Bearer <apitoken>' https://din-hit-domän/api/queues/1/ticketsExempel på svar:
json
{
"status": "OK",
"page": 1,
"limit": 50,
"tickets_count": 42,
"tickets": [
{
"id": 67,
"submitter_name": "Robin Friberg",
"submitter_email": "robin@devpeak.se",
"subject": "Nothing to see here",
"date": "2023-07-12T06:04:50.000000Z",
"closed_date": null
},
{
"id": 66,
"submitter_name": "Robin Friberg",
"submitter_email": "robin@devpeak.se",
"subject": "Other ticket",
"date": "2023-07-09T08:07:29.000000Z",
"closed_date": null
}
]
}Sök efter ärenden i en kö
Metod: GETEndpoint: /api/queues/{queueId}/tickets
Krävda parametrar:
search
Exempel på anrop:
sh
curl -H 'Authorization: Bearer <apitoken>' 'https://din-hit-domän/api/queues/1/tickets?search=Something'Exempel på svar:
json
{
"status": "OK",
"page": 1,
"limit": 50,
"tickets_count": 42,
"tickets": [
{
"id": 67,
"submitter_name": "Robin Friberg",
"submitter_email": "robin@devpeak.se",
"subject": "Nothing to see here",
"date": "2023-07-12T06:04:50.000000Z",
"closed_date": null
},
{
"id": 66,
"submitter_name": "Robin Friberg",
"submitter_email": "robin@devpeak.se",
"subject": "Other ticket",
"date": "2023-07-09T08:07:29.000000Z",
"closed_date": null
}
]
}Skapa nytt ärende
Metod: POSTEndpoint: /api/queues/{queueId}/tickets
Krävda parametrar:
subjectdescription
Valfria parametrar:
submittersubmitter_namenotify_submitterpriorityownercategorycustomerstatusduedatehideuntilfiles[]
priority är 0–3 (låg till kritisk). owner, category, customer och status måste tillhöra kön. category, customer, status, duedate och hideuntil kräver dessutom att motsvarande modul är påslagen i kön, och varje valfritt fält kräver samma behörighet som att ändra det på ett befintligt ärende.
Exempel på anrop:
sh
curl -H 'Authorization: Bearer <apitoken>' -X POST \
-d 'subject=A well written subject&description=Not so well written description&submitter=reporter@example.com&priority=3&duedate=2026-09-01' \
https://din-hit-domän/api/queues/1/ticketsExempel på svar:
json
{
"status": "OK",
"message": "Your ticket has been created correctly",
"ticketid": 73
}Lista ärendemallar
Metod: GETEndpoint: /api/queues/{queueId}/tickettemplates
Exempel på anrop:
sh
curl -H 'Authorization: Bearer <apitoken>' -H 'Accept: application/json' \
https://din-hit-domän/api/queues/1/tickettemplatesExempel på svar:
json
{
"status": "OK",
"tickettemplates": [
{
"id": 1,
"name": "A ticket template",
"description": "Description of the ticket template",
"template_text": "<p>Some HTML content</p>",
"subtickets": [
{
"id": 1,
"subject": "A subticket for this ticket template",
"tickettemplate": 1
},
{
"id": 2,
"subject": "Another subticket for this ticket template",
"tickettemplate": 1
}
]
}
]
}Skapa nya ärenden från en ärendemall
Metod: POSTEndpoint: /api/queues/{queueId}/tickets
Krävda parametrar:
subjectdescriptiontemplatesubtickets
Valfria parametrar:
should_mail— styr handläggarnotisen för huvudärendet. Anges den gäller den även samtliga underärenden, om intesubtickets_mailskickas med. Utelämnas den används mallens egen inställning för huvudärendet respektive varje underärende.subtickets_mail— kommaseparerad lista med de underärenden som ska ge handläggarnotis. Måste vara en delmängd avsubtickets. Underärenden som utelämnas ur listan notifierar inte.
Exempel på anrop:
sh
curl -H 'Authorization: Bearer <apitoken>' -H 'Accept: application/json' -X POST \
-d 'template=1&subject=New user&description=A new user should be created called Example_User&should_mail=0&subtickets=1,2' \
https://din-hit-domän/api/queues/1/ticketsExempel där bara underärende 2 ska notifiera handläggare:
sh
curl -H 'Authorization: Bearer <apitoken>' -H 'Accept: application/json' -X POST \
-d 'template=1&subject=New user&description=A new user should be created called Example_User&subtickets=1,2&subtickets_mail=2' \
https://din-hit-domän/api/queues/1/ticketsExempel på svar:
json
{
"status": "OK",
"message": "Your ticket has been created correctly",
"ticketid": 84
}Visa ärende
Metod: GETEndpoint: /api/tickets/{ticketId}
Exempel på anrop:
sh
curl -H 'Authorization: Bearer <apitoken>' -H 'Accept: application/json' \
https://din-hit-domän/api/tickets/1Exempel på svar:
json
{
"status": "OK",
"ticket": {
"id": 85,
"submitter_name": "Robin Friberg",
"submitter_email": "robin@devpeak.se",
"subject": "An example ticket",
"date": "2023-07-14T13:42:10.000000Z",
"closed_date": null,
"description": "<p>With a somewhat normal description.</p>",
"priority": "low",
"duedate": null,
"last_activity": "2023-07-14T13:42:10.000000Z",
"link": "https://din-hit-domän/view?id=85"
}
}Inventarier via API
Anropen nedan låter andra system läsa och underhålla inventarier. De kräver två saker utöver en giltig API-nyckel:
- Modul - Inventarier måste vara påslagen i kön.
- Nyckelns användare måste ha behörigheten att hantera inventarier. Den ingår som standard bara i rollerna Admin och Global admin — vill ni låta vanliga handläggare använda anropen behöver ni lägga till resursen på deras roll under Inställningar → Roller.
Att skapa, ändra eller radera inventarier kräver dessutom en nyckel med läs- och skrivrättigheter.
Hämta fältlistan först
Fältvärden anges med fältnamnet, inte med något internt id. Anropet Lista inventarietabeller returnerar varje tabells fält med namn, typ och eventuella valbara värden — börja där.
Så här skickas värden beroende på fälttyp:
| Fälttyp | Format |
|---|---|
| Text | Sträng, högst 255 tecken |
| Datum | ÅÅÅÅ-MM-DD, till exempel 2026-01-15 |
| Ja/Nej | true eller false |
| Lista | Exakt ett av tabellens valbara värden |
| Relation | Id:t för den inventarie som ska pekas ut |
Ett tomt värde ("" eller null) tömmer fältet. Obligatoriska fält går inte att tömma.
Historiken börjar vid första ändringen
När en inventarie skapas skrivs ingen historikpost — precis som i gränssnittet. Historiken börjar först när ett värde ändras.
Fält med standardvärde fylls inte i automatiskt via API:et. Skicka med de värden ni vill ha.
Lista inventarietabeller
Metod: GETEndpoint: /api/queues/{queueId}/assettables
Exempel på anrop:
sh
curl -H 'Authorization: Bearer <apitoken>' -H 'Accept: application/json' \
https://din-hit-domän/api/queues/1/assettablesExempel på svar:
json
{
"status": "OK",
"assettables_count": 1,
"assettables": [
{
"id": 3,
"name": "Datorer",
"display_field": 10,
"display_template": "{Serienummer} – {Status}",
"fields": [
{
"id": 10,
"name": "Serienummer",
"type": "string",
"mandatory": true,
"unique": true,
"position": 0,
"default_value": null,
"related_asset_table_id": null,
"options": null
},
{
"id": 11,
"name": "Inköpsdatum",
"type": "date",
"mandatory": false,
"unique": false,
"position": 1,
"default_value": "today",
"related_asset_table_id": null,
"options": null
},
{
"id": 12,
"name": "Status",
"type": "enum",
"mandatory": false,
"unique": false,
"position": 2,
"default_value": null,
"related_asset_table_id": null,
"options": ["Aktiv", "Lager"]
},
{
"id": 13,
"name": "Ägare",
"type": "related",
"mandatory": false,
"unique": false,
"position": 3,
"default_value": null,
"related_asset_table_id": 4,
"options": null
}
]
}
]
}Lista inventarier i en tabell
Metod: GETEndpoint: /api/assettables/{assetTableId}/assets
Valfria parametrar:
search— matchar mot inventariernas fältvärdenorder—ascellerdesc, standarddesclimit— antal per sida, standard 50page— sidnummer, standard 1
Exempel på anrop:
sh
curl -H 'Authorization: Bearer <apitoken>' -H 'Accept: application/json' \
'https://din-hit-domän/api/assettables/3/assets?search=ABC&limit=25'Exempel på svar:
json
{
"status": "OK",
"page": 1,
"limit": 50,
"assets_count": 128,
"assets": [
{
"id": 501,
"asset_table_id": 3,
"display_value": "ABC-123 – Aktiv",
"fields": {
"Serienummer": "ABC-123",
"Inköpsdatum": "2026-01-15",
"Status": "Aktiv",
"Ägare": {
"id": 42,
"display_value": "Anna Andersson"
}
}
}
]
}Ett relationsfält returneras som ett objekt med både id och display_value. Vid skrivning skickas bara id:t.
Visa inventarie
Metod: GETEndpoint: /api/assets/{assetId}
Exempel på anrop:
sh
curl -H 'Authorization: Bearer <apitoken>' -H 'Accept: application/json' \
https://din-hit-domän/api/assets/501Exempel på svar:
json
{
"status": "OK",
"asset": {
"id": 501,
"asset_table_id": 3,
"display_value": "ABC-123 – Aktiv",
"fields": {
"Serienummer": "ABC-123",
"Utrangerad": false,
"Ägare": {
"id": 42,
"display_value": "Anna Andersson"
}
},
"tickets": [
{
"id": 88,
"subject": "Trasig skärm"
}
]
}
}Skapa inventarie
Metod: POSTEndpoint: /api/assettables/{assetTableId}/assets
Krävda parametrar:
fields— ett objekt med fältnamn som nycklar
Samtliga obligatoriska fält i tabellen måste ha ett värde.
Exempel på anrop:
sh
curl -H 'Authorization: Bearer <apitoken>' -H 'Accept: application/json' \
-H 'Content-Type: application/json' -X POST \
-d '{"fields":{"Serienummer":"ABC-123","Inköpsdatum":"2026-01-15","Status":"Aktiv","Ägare":42}}' \
https://din-hit-domän/api/assettables/3/assetsExempel på svar:
json
{
"status": "OK",
"message": "Inventarien har skapats",
"asset": {
"id": 501,
"asset_table_id": 3,
"display_value": "ABC-123 – Aktiv",
"fields": {
"Serienummer": "ABC-123",
"Inköpsdatum": "2026-01-15",
"Status": "Aktiv",
"Ägare": {
"id": 42,
"display_value": "Anna Andersson"
}
}
}
}Om ett värde inte håller måttet svarar API:et med statuskod 422 och ett fel per fält:
json
{
"message": "The given data was invalid.",
"errors": {
"fields.Inköpsdatum": [
"Fältet måste vara ett datum i formatet ÅÅÅÅ-MM-DD."
],
"fields.Ägare": [
"Det finns ingen inventarie med det id:t i den refererade tabellen."
]
}
}Ändra inventarie
Metod: PATCHEndpoint: /api/assets/{assetId}
Krävda parametrar:
fields— ett objekt med fältnamn som nycklar
Bara de fält som skickas med ändras; övriga lämnas orörda. Ett obligatoriskt fält som redan har ett värde behöver alltså inte skickas med, men det går inte att tömma.
Exempel på anrop:
sh
curl -H 'Authorization: Bearer <apitoken>' -H 'Accept: application/json' \
-H 'Content-Type: application/json' -X PATCH \
-d '{"fields":{"Status":"Lager"}}' \
https://din-hit-domän/api/assets/501Exempel på svar:
json
{
"status": "OK",
"asset": {
"id": 501,
"asset_table_id": 3,
"display_value": "ABC-123 – Lager",
"fields": {
"Serienummer": "ABC-123",
"Status": "Lager"
}
}
}Radera inventarie
Metod: DELETEEndpoint: /api/assets/{assetId}
Relationer till den raderade inventarien försvinner
Om andra inventarier pekar ut den som raderas tas deras värde i det relationsfältet bort helt, utan spår i historiken. Kontrollera historiken eller relationerna innan ni raderar.
Exempel på anrop:
sh
curl -H 'Authorization: Bearer <apitoken>' -H 'Accept: application/json' \
-X DELETE https://din-hit-domän/api/assets/501Exempel på svar:
json
{
"status": "OK",
"message": "Inventarien har raderats"
}Läs ändringshistorik för en inventarie
Metod: GETEndpoint: /api/assets/{assetId}/history
Historiken innehåller tre sorters poster, som skiljs åt av type:
field— ett fältvärde ändradesticket— ett ärende kopplades eller kopplades bortreference— en annan inventarie började eller slutade peka på den här
Posterna kommer i fallande datumordning. Använd type för att skilja dem åt maskinellt; field_name är översatt och kan ändras.
Exempel på anrop:
sh
curl -H 'Authorization: Bearer <apitoken>' -H 'Accept: application/json' \
https://din-hit-domän/api/assets/501/historyExempel på svar:
json
{
"status": "OK",
"asset_id": 501,
"history": [
{
"type": "field",
"field_name": "Status",
"old_value": "Aktiv",
"new_value": "Lager",
"changed_by": "Sarah",
"changed_at": "2026-08-10T09:12:00.000000Z"
},
{
"type": "ticket",
"field_name": "Ärende",
"old_value": null,
"new_value": "[88] Trasig skärm",
"ticket_id": 88,
"changed_by": "Sarah",
"changed_at": "2026-08-09T14:03:00.000000Z"
},
{
"type": "reference",
"field_name": "Refereras av (Datorer)",
"old_value": null,
"new_value": "SN-999",
"changed_by": "Sarah",
"changed_at": "2026-08-08T11:00:00.000000Z"
}
]
}Koppla inventarie till ärende
Metod: POSTEndpoint: /api/assets/{assetId}/tickets
Krävda parametrar:
ticket_id
Kräver behörighet att ändra ärenden i ärendets kö, utöver behörigheten att hantera inventarier.
Exempel på anrop:
sh
curl -H 'Authorization: Bearer <apitoken>' -H 'Accept: application/json' \
-H 'Content-Type: application/json' -X POST \
-d '{"ticket_id":88}' \
https://din-hit-domän/api/assets/501/ticketsExempel på svar:
json
{
"status": "OK",
"message": "Ärendet har kopplats till inventarien"
}Koppla bort inventarie från ärende
Metod: DELETEEndpoint: /api/assets/{assetId}/tickets/{ticketId}
Exempel på anrop:
sh
curl -H 'Authorization: Bearer <apitoken>' -H 'Accept: application/json' \
-X DELETE https://din-hit-domän/api/assets/501/tickets/88Exempel på svar:
json
{
"status": "OK",
"message": "Ärendet har kopplats bort från inventarien"
}