SitterIT Mobigo REST API — integratörsguide

Läs och skriv i Mobigo över HTTP: uppdrag, kunder, artiklar, offerter, ordrar, avtal, tid, material och dokument.

Kom igång

Du behöver ett clientId och en API-nyckel från den som driftar Mobigo. Nyckeln visas en enda gång, när integrationen skapas.

Första anropet

curl -H "Authorization: Bearer mk_..." \
     "https://mobigo-api.kundens-server.se/v1/whoami"

# → {"integration":"Webshop","tenant":"Demo","scopes":["tasks:read","tasks:write"]}

/v1/whoami säger vilken integration nyckeln hör till och vad den får göra.

Skapa ett uppdrag med material och tid

curl -X POST "https://mobigo-api.kundens-server.se/v1/tasks" \
     -H "Authorization: Bearer mk_..." \
     -H "Idempotency-Key: order-4711" \
     -H "Content-Type: application/json" \
     -d '{
           "customerNr": "10003",
           "taskText":   "Service av hiss",
           "materials":  [{ "productNr": "A10001", "quantity": 3 }],
           "times":      [{ "timeType": "Administrativ tid", "hours": 2 }]
         }'

# → {"nr":"U039071","id":105933,
#     "materials":[{"id":44821,"productNr":"A10001"}],
#     "times":[{"id":100636,"timeType":"Normaltid"}]}

Svaret ger id på varje skapad rad. Med id:t går raden att uppdatera direkt med PATCH /v1/materials/{id} eller PATCH /v1/times/{id}.

Allt eller inget. Avvisar Mobigo någon rad rullas hela anropet tillbaka och inget uppdrag blir kvar. Svaret pekar ut raden: materials[1]: Ingen artikel med nummer "FINNS-EJ".

Autentisering

Allt under /v1 kräver Authorization: Bearer <värde>. Värdet är antingen nyckeln eller ett token. Båda ger samma bolag, samma behörigheter och samma IP-spärr.

VärdeVadLivslängd
Bearer mk_…API-nyckeln Tills den återkallas
Bearer mt_…Token från POST /v1/token Max 60 minuter
Använd token i drift. Med Bearer mk_… går den långlivade hemligheten med i varje anrop. Allt som loggar huvuden på vägen — en omvänd proxy, ett övervakningsverktyg, en delad Postman-samling — fångar då en nyckel som gäller tills någon återkallar den. Ett token som läcker på samma sätt dör inom en timme.

Nyckeln direkt är enklare och fullt rimlig när ni provar, och när anropen går inifrån samma servermiljö.

Token hämtas med client_credentials:

curl -X POST "https://mobigo-api.kundens-server.se/v1/token" \
     -H "Content-Type: application/json" \
     -d '{"clientId":"f287ea5c…","clientSecret":"mk_…"}'

# → {"access_token":"mt_…","token_type":"Bearer","expires_in":3600,
#    "scope":"tasks:read tasks:write"}

Hämta ett nytt när expires_in löpt ut, eller när ett anrop svarar 401. Det finns ingen refresh — hämtningen är ett anrop och kostar mindre än att hålla reda på två sorters token.

Var kommer nyckeln ifrån?

Den skapas av den som driftar Mobigo, på servern, med SitterIT.Mobigo.Api keys create. Du kan inte skapa den själv — och det är meningen: nyckeln knyts till ett bolag och till en Mobigo-signatur, och båda är beslut som hör hemma hos kunden.

Be om tre saker:

Du fårÄr
Adressent.ex. https://mobigo-api.kundens-server.se
clientId Integrationens id. Behövs bara för POST /v1/token
API-nyckeln mk_… Visas en enda gång när integrationen skapas, och går aldrig att läsa ut igen

Säg samtidigt vilka behörigheter du behöver — de sätts när nyckeln skapas och går inte att utöka i efterhand utan en ny nyckel.

Behörigheter

Varje resurs har två: <resurs>:read och <resurs>:write. Saknas behörigheten svarar API:et 403.

Utöver dem gäller Mobigos egna behörigheter för den signatur nyckeln arbetar som. Ett brett scope ger alltså inte mer än vad signaturen får göra i Mobigo.

Uppdrag

POST /v1/tasks tar hela uppdragets skrivbara yta. Bara customerNr är obligatoriskt. Ett utelämnat fält lämnas orört.

FältTypBeskrivning
customerNrtext Krävs. Måste finnas i Mobigo
nrtext Uppdragsnummer. Utelämnat tar Mobigos nummerserie över
taskTexttextUppdragstext
taskNotetextUppdragsanteckning
actionTexttextÅtgärdstext
actionNotetextÅtgärdsanteckning
customerOrderertextBeställare hos kunden
customerReftextKundens referens
ownerSigntext Ansvarig. Utelämnat blir integrationens egen signatur
userSignslista Tilldelade användare. Varje signatur måste finnas
planStartDatedatum Bara start ger en dag
planStopDatedatumSlut på plantiden
planDateTypetext FromTo, Day, Week, Month eller Fixed. Förvalt Day
estimatedTimetalBeräknad tid i timmar
projectNrtextProjekt. Måste finnas
priorityNametext Prioritetens namn i kundens Mobigo
priceListNrtext Prislista. Styr priserna på raderna
object1Nrobject4Nrtext Kundens egna objekt. Namnet hämtas ur posten
customT1customT3text Egna textfält
customA1customA3text Egna anteckningsfält
extraFieldsobjekt Kundens egna fält. Se Extrafält
materialslistaMaterialrader i samma anrop
timeslistaTidrader i samma anrop
curl -X POST "https://mobigo-api.kundens-server.se/v1/tasks" \
     -H "Authorization: Bearer mk_..." \
     -H "Idempotency-Key: order-4712" \
     -H "Content-Type: application/json" \
     -d '{
           "customerNr":      "10003",
           "taskText":        "Halvårsservice hiss 3",
           "taskNote":        "Kunden vill ha besked dagen innan.",
           "customerRef":     "Beställning 88214",
           "ownerSign":       "AN",
           "userSigns":       ["AN", "PL"],
           "planStartDate":   "2026-09-14",
           "planStopDate":    "2026-09-16",
           "planDateType":    "FromTo",
           "estimatedTime":   6.5,
           "projectNr":       "P-204",
           "priorityName":    "Hög",
           "object1Nr":       "HISS-0031",
           "customT1":        "Serviceavtal",
           "extraFields":     { "Visma_Ordernr.": "VO-4711" },
           "materials":       [{ "productNr": "A10001", "quantity": 3 }],
           "times":           [{ "timeType": "Normaltid", "hours": 4 }]
         }'
Status sätts inte här. Uppdrag skapas i Mobigos förvalda status. Byt status med POST /v1/tasks/{nr}/status, som går genom Mobigos egna övergångsregler.

Ordrar och offerter

Båda skapas med sina rader i ett anrop. Går någon rad fel rullas hela posten tillbaka — en halv order hos kunden ser ut som en riktig och blir aldrig kompletterad.

En order med rader

curl -X POST "https://mobigo-api.kundens-server.se/v1/orders" \
     -H "Authorization: Bearer mk_..." \
     -H "Idempotency-Key: order-B-4711" \
     -H "Content-Type: application/json" \
     -d '{
           "customerNr":       "10018",
           "supplierNr":       "L00001",
           "userSign":         "AN",
           "customerOrderer":  "Anna Beställare",
           "orderDate":        "2026-08-20",
           "deliveryDate":     "2026-09-14",
           "deliveryName":     "Ekehamn Bygg AB",
           "deliveryAddressLine1": "Verkstadsgatan 8",
           "deliveryPostalCode":   "417 05",
           "deliveryCity":         "Göteborg",
           "internalNote":     "Ringer före leverans",
           "lines": [
             { "productNr": "10053",  "quantity": 5, "supplierNr": "L00001" },
             { "productNr": "A10001", "quantity": 2 },
             { "productNr": "A10002", "quantity": 1, "price": 1250 }
           ]
         }'

# → { "Nr": "B00065", "Status": "Planned", "CustomerNr": "10018",
#     "SupplierNr": "L00001", "OrderDate": "2026-08-20T00:00:00", … }

Numret kommer ur Mobigos nummerserie. orderDate blir dagens datum om det utelämnas, och artikelns enhet och namn hämtas ur artikelregistret.

Raden ärver ordern. Prislista, leveransdatum och leverantör tas från ordern när raden inte anger dem själv — samma sak Mobigo gör när en rad läggs till i klienten. Ange supplierNr på en rad bara när just den raden köps från någon annan.
Orderrader prissätts inte automatiskt. Till skillnad från material på ett uppdrag sätter Mobigo inget pris på en orderrad. Utelämnas price står raden med noll.

Rader på en befintlig order

POST https://mobigo-api.kundens-server.se/v1/orders/B00065/lines
Idempotency-Key: rad-B00065-4

{ "productNr": "A10003", "quantity": 2, "deliveryDate": "2026-09-20" }

# → { "id": 10011, "orderNr": "B00065", "productNr": "A10003", "totalPrice": 1900 }

Ändra en order

PATCH rör bara de fält du skickar. Resten lämnas som Mobigo har dem.

curl -X PATCH "https://mobigo-api.kundens-server.se/v1/orders/B00065" \
     -H "Authorization: Bearer mk_..." \
     -H "Idempotency-Key: order-B00065-lev" \
     -H "Content-Type: application/json" \
     -d '{ "deliveryDate": "2026-09-21",
           "internalNote": "Leverans framflyttad, kunden meddelad" }'

Enskilda rader ändras på sitt id:

PATCH https://mobigo-api.kundens-server.se/v1/orderlines/10011
Idempotency-Key: rad-10011-antal

{ "quantity": 3, "discountPct": 10 }
Statusen ändras inte med PATCH. Den följer Mobigos egna regler, precis som på ett uppdrag.

En offert med material och tid

Offerten bär material- och tidrader, som ett uppdrag — inte orderrader.

curl -X POST "https://mobigo-api.kundens-server.se/v1/quotes" \
     -H "Authorization: Bearer mk_..." \
     -H "Idempotency-Key: offert-4711" \
     -H "Content-Type: application/json" \
     -d '{
           "customerNr":  "10018",
           "description": "Hisservice, halvår",
           "ownerSign":   "AN",
           "materials": [
             { "productNr": "A10001", "quantity": 3 },
             { "productNr": "A10002", "quantity": 1 }
           ],
           "times": [
             { "timeType": "Normaltid", "hours": 4 },
             { "timeType": "Normaltid", "hours": 2.5 }
           ]
         }'

quoteDate blir dagens datum och giltighetstiden 30 dagar om de utelämnas. Hämta tidtypernas namn med GET /v1/timetypes.

Läsa raderna

Material- och tidrader hänger på olika sorters poster. ownerType säger vilken — task, quote, order eller contract. Utelämnas den tillsammans med ownerNr antas ett uppdrag.

GET https://mobigo-api.kundens-server.se/v1/materials?ownerType=quote&ownerNr=Q00005
GET https://mobigo-api.kundens-server.se/v1/times?ownerType=quote&ownerNr=Q00005
GET https://mobigo-api.kundens-server.se/v1/orderlines?orderNr=B00065

Varje rad säger själv vad den hänger på, i OwnerNr och OwnerType.

Idempotency-Key

Ett anrop kan gå fram utan att svaret gör det. Utan skydd ger omtagningen kunden två identiska uppdrag.

Idempotency-Key är en sträng du väljer per operation. Kommer samma nyckel tillbaka med samma innehåll svarar API:et med det första svaret i stället för att göra om jobbet.

Svaret ekar tillbaka nyckeln och säger om det är ett sparat svar. Ekot finns även på felsvar.

Idempotency-Key: order-4711
Idempotency-Replayed: false     ← anropet utfördes nu
Idempotency-Replayed: true      ← du fick kvittot på ett tidigare anrop
Idempotency-Key: order-4711   → {"nr":"U039075"}
Idempotency-Key: order-4711   → {"nr":"U039075"}   ← samma uppdrag, inget nytt
Idempotency-Key: order-4712   → {"nr":"U039076"}   ← ny order, nytt uppdrag
Idempotency-Key: order-4711 + ändrat innehåll → 409
utan huvudet                                  → 400
Använd ditt eget ordernummer, inte en slumpad GUID per försök. En ny GUID varje gång ger ett nytt uppdrag varje gång och skyddar mot ingenting.

Alla skrivande anrop kräver huvudet: POST och PATCH, på alla resurser.

Sidbläddring

Svaret ser likadant ut för alla resurser:

{ "items": [ … ], "nextCursor": "105935", "page": 1, "total": 65233 }

limit är förvalt 50 och kapas vid 500. total är null för de resurser Mobigo inte kan räkna.

Markör

Konstant snabb oavsett hur djupt du kommer. Använd den vid synk.

GET https://mobigo-api.kundens-server.se/v1/customers?limit=500
# → "nextCursor": "105935"
GET https://mobigo-api.kundens-server.se/v1/customers?limit=500&cursor=105935

nextCursor är var förra sidan slutade. Är den null finns inget mer att hämta.

Sidnummer

GET https://mobigo-api.kundens-server.se/v1/customers?limit=50&page=3
Sidorna glider. page räknar från början av träfflistan, och listan är sorterad med det nyaste först. Skapas tio poster medan du bläddrar knuffas alla äldre rader tio steg ned, så nästa sida börjar med rader du redan hämtat. Markören räknar inte — den fortsätter från den sista raden du fick — och drabbas därför inte.

Hämta bara det som ändrats

GET https://mobigo-api.kundens-server.se/v1/tasks?modifiedSince=2026-08-19T00:00:00Z

Spara Modified från förra körningen och fråga efter allt som ändrats sedan dess.

Kontakter och adresser

Kontaktpersoner och extra adresser är egna poster som hänger på en kund, en leverantör eller ett objekt. De identifieras med Id, inte med ett nummer.

Kontakter på en kund

GET https://mobigo-api.kundens-server.se/v1/contacts?customerNr=10003

# → { "items": [ { "Id": "11311", "CustomerNr": "10003", "Name": "Linus Sedin",
#                  "Position": "Fastighetschef", "Mobile": "070-1234567",
#                  "Email": "[email protected]", "MostImportant": true } ],
#     "nextCursor": null, "page": 1 }

Alla kontakter

Utan customerNr listas hela registret. name söker fritext i namnet.

GET https://mobigo-api.kundens-server.se/v1/contacts?limit=500
GET https://mobigo-api.kundens-server.se/v1/contacts?name=Sedin
GET https://mobigo-api.kundens-server.se/v1/contacts?modifiedSince=2026-08-01T00:00:00Z

Lägga till en kontakt

POST https://mobigo-api.kundens-server.se/v1/contacts
Idempotency-Key: kontakt-10003-linus

{ "customerNr": "10003", "name": "Linus Sedin",
  "position": "Fastighetschef", "email": "[email protected]",
  "mobile": "070-1234567", "mostImportant": true }

Kontakter när kunden skapas

Skicka dem i samma anrop. Avvisas någon kontakt rullas hela kunden tillbaka.

POST https://mobigo-api.kundens-server.se/v1/customers
Idempotency-Key: kund-storfors

{
  "name": "Storfors Service AB",
  "addressLine1": "Storgatan 1",
  "postalCode": "412 50",
  "city": "Göteborg",
  "contacts": [
    { "name": "Linus Sedin", "position": "Fastighetschef",
      "email": "[email protected]", "mostImportant": true },
    { "name": "Anna Ek", "position": "Ekonomi", "email": "[email protected]" }
  ]
}

Numret utelämnades, så Mobigos nummerserie satte det. Svaret innehåller kunden med sitt Nr.

Leverantörskontakter

Samma fält, egen väg: /v1/suppliercontacts med supplierNr.

Adresser

Extra adresser — leverans, faktura, besök. Ägaren måste anges, för adresstabellen är gemensam för kunder, leverantörer och objekt.

GET https://mobigo-api.kundens-server.se/v1/addresses?customerNr=10003
GET https://mobigo-api.kundens-server.se/v1/addresses?objectNr=O1-11840&level=1

Extrafält

Kundens egna fält, definierade i deras Mobigo. De heter vad kunden döpt dem till och kommer alltid som strängar.

Vilka fält finns?

Varje resurs beskriver sina extrafält: nyckel, typ, om det går att skriva till och vilka värden ett listfält tillåter.

GET https://mobigo-api.kundens-server.se/v1/customers/extra-fields

# → { "items": [
#       { "Key": "Avtals_typ", "Name": "Avtals typ", "Category": "Avtal",
#         "Type": "Combo", "Writable": true, "ReadOnly": false, "Computed": false,
#         "Options": ["Grundservice", "Incitamentsavtal", "Jouravtal"] },
#       { "Key": "Startdatum_avtal", "Name": "Startdatum avtal",
#         "Type": "Date", "Writable": true },
#       { "Key": "Region", "Name": "Region",
#         "Type": "Sql", "Writable": false, "Computed": true }
#     ],
#     "count": 59 }

Writable: false betyder att en skrivning avvisas — fältet är antingen skrivskyddat eller beräknat av Mobigo. Options finns bara på listfält.

Samma väg på alla resurser, inklusive uppdrag: GET https://mobigo-api.kundens-server.se/v1/tasks/extra-fields.

Läsa

GET https://mobigo-api.kundens-server.se/v1/customers/10003

# → {
#     "Nr": "10003",
#     "Name": "Storfors Service AB",
#     "ExtraFields": {
#       "Avtals_typ": "Helservice",
#       "Startdatum_avtal": "2024-01-01",
#       "Index_regleras": ""
#     }
#   }

Tomma fält kommer med som tom sträng, så du ser vilka fält som finns. Det är också så du får de exakta namnen.

Skriva på en resurs

curl -X PATCH "https://mobigo-api.kundens-server.se/v1/customers/10003" \
     -H "Authorization: Bearer mk_..." \
     -H "Idempotency-Key: sync-10003-v4" \
     -H "Content-Type: application/json" \
     -d '{ "extraFields": { "Avtals_typ": "Delservice", "Avtals_nr": "A-9912" } }'

Skriva på ett uppdrag

Samma objekt, i samma anrop som uppdraget skapas:

curl -X POST "https://mobigo-api.kundens-server.se/v1/tasks" \
     -H "Authorization: Bearer mk_..." \
     -H "Idempotency-Key: order-4713" \
     -H "Content-Type: application/json" \
     -d '{
           "customerNr":  "10003",
           "taskText":    "Service",
           "extraFields": {
             "Visma_Ordernr.": "VO-4711",
             "Avtals_typ":     "Helservice",
             "Startdatum":     "2026-09-14"
           }
         }'

Nyckeln är fältets namn i kundens Mobigo, exakt som det står i ExtraFields när du läser posten. Punkter och understreck ingår i namnet. Värdet är alltid en sträng, även för datum och tal.

Fel du kan få

SvarBetyder
Posten har inget extrafält som heter "X". Giltiga: … Fälten definieras i Mobigo. Svaret listar de giltiga namnen
Extrafältet "Region" beräknas av Mobigo (typ Sql) och går inte att skriva till. Fältet räknas fram vid visning. Ett värde dit försvinner spårlöst
Värdet "imorgon" passar inte extrafältet "TestDatum", som är av typen Date. Mobigo kastar tyst bort värden som inte går att tolka. API:et läser tillbaka och säger ifrån

Register

Värdena som andra anrop kräver. De är kundens egna, så de går inte att lista i förväg. Alla är läsbara — de sätts i Mobigos administration.

VägGerBehövs för
GET /v1/usersSignaturer och namn ownerSign, userSigns, userSign
GET /v1/timetypesTidtypernas namn timeType på en tidrad
GET /v1/pricelistsPrislistornas nummer priceListNr
GET /v1/field-namesKundens namn på standardfälten att visa fälten som användaren känner igen
GET https://mobigo-api.kundens-server.se/v1/timetypes

# → { "items": [ { "Name": "Normaltid", "Unit": "tim", "BasePrice": 750,
#                  "InternalType": false, "SpecOptions": ["Felsökning", "Byte"] } ] }

Kundens egna fältnamn

Custom1Custom4 heter något annat hos kunden. /v1/field-names säger vad.

GET https://mobigo-api.kundens-server.se/v1/field-names

# → { "items": [
#       { "DbFieldName": "CustCustom1", "UserFieldName": "Post adress",
#         "ListOnly": false, "Hidden": false },
#       { "DbFieldName": "TaskCustom1", "UserFieldName": "Serviceavtal",
#         "ListOnly": true, "Hidden": false }
#     ] }

DbFieldName är namnet API:et använder. UserFieldName är kundens etikett. Hidden betyder att fältet inte visas i Mobigo.

Position

Mobigo geokodar sina poster själv, mot den karttjänst och de regler kunden satt upp. API:et läser den positionen och kan be Mobigo räkna om den, men geokodar aldrig själv.

GET https://mobigo-api.kundens-server.se/v1/tasks/U039079/location

# → { "Latitude": 57.7089, "Longitude": 11.9746,
#     "Address": "Storgatan 1, 412 50 Göteborg",
#     "Status": "Ok", "SourceType": "Address", "Provider": "GoogleMaps",
#     "Fixed": false, "Ambiguous": false }

?locate=true räknar om positionen först, från uppdragets kund, objekt eller adress. ?force=true gör om det även när en position redan finns.

Latitude och Longitude är null när posten saknar position. Status säger varför: NoAddress, AddressNotFound, AddressInvalid, Pending eller Error.

Fast position

För adresser som inte går att slå upp. En fast position skrivs aldrig över av Mobigos egen geokodning.

PUT https://mobigo-api.kundens-server.se/v1/tasks/U039079/location
Idempotency-Key: pos-U039079

{ "latitude": 57.7089, "longitude": 11.9746,
  "address": "Byggarbetsplats, Ringön" }

Samma två vägar finns på alla resurser: /v1/customers/10003/location, /v1/objects1/O1-11840/location och så vidare.

Dokument på ett uppdrag

Tre anrop: bifoga, lista och hämta. Listan och innehållet är åtskilda — ett uppdrag kan ha bilagor på tiotals megabyte.

POST /v1/tasks/U039079/documents
Idempotency-Key: bilaga-4711

{ "name": "arbetsorder.pdf", "contentBase64": "JVBERi0xLjQK..." }

201 { "id": 60728, "nr": "U039079", "name": "arbetsorder.pdf" }
GET /v1/tasks/U039079/documents

{ "items": [ { "Id": 60728, "Name": "arbetsorder.pdf", "DocType": "EMBED",
               "Kind": "embedded", "IsInternal": false, "HasContent": true,
               "Modified": "2026-08-19T22:41:23.72" } ],
  "count": 1 }
GET /v1/tasks/U039079/documents/60728

200 OK
Content-Type: application/pdf
Content-Disposition: attachment; filename=arbetsorder.pdf
<filens innehåll>

Länkade dokument och utskriftsmallar

Kind säger vad dokumentet är:

KindVad det ärVad du får
embeddedFilen ligger i Mobigofilen som den är
linkPekar på en sökväg utanför Mobigo filen hämtas från sökvägen
htmlHTML-innehåll i MobigoPDF
otherHar bara en utskriftsmall PDF, renderad ur mallen

Mobigos egen dokumenthantering gör jobbet i alla fyra fallen. Därför kan Content-Type bli application/pdf även när filnamnet slutar på något annat — typen kommer från innehållet, inte från namnet. Saknar namnet filändelse läggs rätt ändelse på i Content-Disposition.

En länk vars sökväg är otillgänglig från servern ger 422 med besked om det, inte en tom fil.

Felkoder

Alla fel är application/problem+json enligt RFC 9457.

{ "type": "https://sitterit.se/problems/command_failed",
  "title": "command_failed",
  "status": 422,
  "detail": "Ingen artikel med nummer FINNS-EJ." }
KodBetyderVad du gör
400Anropet är fel: saknad Idempotency-Key, okänt fältnamn, trasig JSONRätta anropet
401Nyckeln saknas, är fel eller återkallad Kontrollera nyckeln
403Nyckeln är giltig men saknar behörigheten Be om ett bredare scope
409Idempotency-Key återanvänd med annat innehåll Använd en ny nyckel
413Begäran är större än 32 MB. Base64 gör dokument ungefär en tredjedel större än filenSkicka färre eller mindre dokument
422Anropet var välformat men Mobigo sa nej. Texten är Mobigos egen Läs texten
429För många anrop Vänta enligt Retry-After
503Motorn är nere (engine_unreachable) eller full (engine_busy)Försök igen enligt Retry-After
504Motorn svarade inte i tid (engine_timeout) Försök igen med samma Idempotency-Key
503 och 504 är inte samma sak. Vid 503 tog motorn aldrig emot anropet och ett omförsök är riskfritt. Vid 504 kan den ha hunnit skriva innan den slutade svara — försök igen med samma Idempotency-Key.

Spårning: X-Request-Id

Varje svar bär X-Request-Id. Felsvar har samma värde i fältet requestId. Ange det i supportärenden.

{ "type": "https://sitterit.se/problems/command_failed",
  "title": "command_failed",
  "status": 422,
  "detail": "Ingen artikel med nummer FINNS-EJ.",
  "requestId": "8d1f55fc02754b1e" }

Skickar du ett eget X-Request-Id används det i stället och ekas tillbaka. Tillåtna tecken är bokstäver, siffror och - _ . :, högst 64.

Resurser

Varje resurs har samma form: GET /v1/<resurs> för en lista, GET /v1/<resurs>/<nyckel> för en post, och där det är tillåtet POST och PATCH.

customers products suppliers quotes orders orderlines contracts resources projects contacts suppliercontacts addresses users timetypes pricelists objects1 objects2 objects3 objects4 times materials

customers — kund

GET /v1/customers, GET /v1/customers/<Nr>, POST /v1/customers, PATCH /v1/customers/<Nr>
Behörigheter: customers:read, customers:write
Urval: modifiedSince, modifiedBefore, name, category

FältTypSkrivbart
Nrtextja
Statustext
Nametextja
Categorytextja
AddressLine1textja
AddressLine2textja
PostalCodetextja
Citytextja
Statetextja
Countrytextja
Phonetextja
Faxtextja
Emailtextja
Custom1textja
Custom2textja
Custom3textja
Custom4textja
Notetextja
Modifieddatum (ISO 8601)
ExtraFieldsobjekt, sträng → strängja

products — artikel

GET /v1/products, GET /v1/products/<Nr>, POST /v1/products, PATCH /v1/products/<Nr>
Behörigheter: products:read, products:write
Urval: modifiedSince, modifiedBefore, name, category

FältTypSkrivbart
Nrtextja
Statustext
Nametextja
Categorytextja
Unittextja
BasePricetalja
PurchasePricetalja
CostPricetalja
Barcodetextja
Custom1textja
Custom2textja
Custom3textja
Custom4textja
Notetextja
Modifieddatum (ISO 8601)
ExtraFieldsobjekt, sträng → strängja

suppliers — leverantör

GET /v1/suppliers, GET /v1/suppliers/<Nr>, POST /v1/suppliers, PATCH /v1/suppliers/<Nr>
Behörigheter: suppliers:read, suppliers:write
Urval: modifiedSince, modifiedBefore, name, category

FältTypSkrivbart
Nrtextja
Statustext
Nametextja
Categorytextja
AddressLine1textja
AddressLine2textja
PostalCodetextja
Citytextja
Statetextja
Countrytextja
Phonetextja
Faxtextja
Emailtextja
Custom1textja
Custom2textja
Custom3textja
Custom4textja
Notetextja
Modifieddatum (ISO 8601)
ExtraFieldsobjekt, sträng → strängja

quotes — offert

GET /v1/quotes, GET /v1/quotes/<Nr>, POST /v1/quotes, PATCH /v1/quotes/<Nr>
Behörigheter: quotes:read, quotes:write
Urval: modifiedSince, modifiedBefore, status, customerNr

FältTypSkrivbart
Nrtextja
Statustext
CustomerNrtextja
CustomerNametext
CustomerOrderertextja
CustomerReftextja
Descriptiontextja
Notetextja
OwnerSigntextja
QuoteDatedatum (ISO 8601)ja
ValidUntilDatedatum (ISO 8601)ja
AcceptedDatedatum (ISO 8601)ja
PlanStartDatedatum (ISO 8601)ja
PlanStopDatedatum (ISO 8601)ja
PlanDateTypetextja
Object1Nrtextja
Object1Nametext
Object2Nrtextja
Object2Nametext
Object3Nrtextja
Object3Nametext
Object4Nrtextja
Object4Nametext
CreatedBytext
CreatedDatedatum (ISO 8601)
Custom1textja
Custom2textja
Custom3textja
Custom4textja
Modifieddatum (ISO 8601)
ExtraFieldsobjekt, sträng → strängja

orders — order

GET /v1/orders, GET /v1/orders/<Nr>, POST /v1/orders, PATCH /v1/orders/<Nr>
Behörigheter: orders:read, orders:write
Urval: modifiedSince, modifiedBefore, status, customerNr, supplierNr

FältTypSkrivbart
Nrtextja
Statustext
CustomerNrtextja
CustomerNametext
CustomerOrderertextja
SupplierNrtextja
UserSigntextja
OrderDatedatum (ISO 8601)ja
DeliveryDatedatum (ISO 8601)ja
DeliveryNametextja
InternalNotetextja
Notetextja
DeliveryAddressLine1textja
DeliveryAddressLine2textja
DeliveryPostalCodetextja
DeliveryCitytextja
DeliveryStatetextja
DeliveryCountrytextja
DeliveryAddressIdtextja
CreatedBytext
CreatedDatedatum (ISO 8601)
Custom1textja
Custom2textja
Custom3textja
Custom4textja
Modifieddatum (ISO 8601)
ExtraFieldsobjekt, sträng → strängja

orderlines — orderrad

GET /v1/orderlines, GET /v1/orderlines/<Id>, PATCH /v1/orderlines/<Id>
Behörigheter: orderlines:read, orderlines:write
Urval: modifiedSince, modifiedBefore, orderNr, includeZeroQuantity

FältTypSkrivbart
Idtext
OrderNrtextja
ProductNrtextja
ProductNametext
Quantitytalja
Unittextja
Pricetalja
PurchasePricetalja
PriceListNrtextja
PurchasePriceListNrtextja
SupplierNrtextja
DiscountPcttalja
DiscountPricetalja
TotalPricetal
DeliveryDatedatum (ISO 8601)ja
Notetextja
InternalNotetextja
Custom1textja
Custom2textja
Custom3textja
Modifieddatum (ISO 8601)

contracts — avtal

GET /v1/contracts, GET /v1/contracts/<Nr>, POST /v1/contracts, PATCH /v1/contracts/<Nr>
Behörigheter: contracts:read, contracts:write
Urval: modifiedSince, modifiedBefore, status, customerNr

FältTypSkrivbart
Nrtextja
Statustext
CustomerNrtextja
CustomerNametext
CustomerReftextja
CustomerOrderertextja
StartDatedatum (ISO 8601)ja
StopDatedatum (ISO 8601)ja
LastGenerationDatedatum (ISO 8601)
GeneratedStartDatedatum (ISO 8601)ja
GeneratedStopDatedatum (ISO 8601)ja
IsGeneratedja/nej
Object1Nrtextja
Object1Nametext
Object2Nrtextja
Object2Nametext
Object3Nrtextja
Object3Nametext
Object4Nrtextja
Object4Nametext
Custom1textja
Custom2textja
Custom3textja
Custom4textja
Notetextja
Modifieddatum (ISO 8601)
ExtraFieldsobjekt, sträng → strängja

resources — resurs

GET /v1/resources, GET /v1/resources/<Nr>, POST /v1/resources, PATCH /v1/resources/<Nr>
Behörigheter: resources:read, resources:write
Urval: modifiedSince, modifiedBefore, name, category

FältTypSkrivbart
Nrtextja
Statustext
Nametextja
Categorytextja
ProductNrtextja
LogUnittextja
BasePricetalja
CostPricetalja
Custom1textja
Custom2textja
Custom3textja
Notetextja
Modifieddatum (ISO 8601)
ExtraFieldsobjekt, sträng → strängja

projects — projekt

GET /v1/projects, GET /v1/projects/<Nr>, POST /v1/projects, PATCH /v1/projects/<Nr>
Behörigheter: projects:read, projects:write
Urval: modifiedSince, modifiedBefore, customerNr, owner, status

FältTypSkrivbart
Nrtextja
Statustext
Nametextja
CustomerNrtextja
CustomerNametext
CustomerReftextja
CustomerOrderertextja
Ownertextja
PlanStartDatedatum (ISO 8601)ja
PlanStopDatedatum (ISO 8601)ja
Object1Nrtextja
Object1Nametext
Object2Nrtextja
Object2Nametext
Object3Nrtextja
Object3Nametext
Object4Nrtextja
Object4Nametext
CreatedBytext
CreatedDatedatum (ISO 8601)
Custom1textja
Custom2textja
Custom3textja
Custom4textja
Notetextja
Modifieddatum (ISO 8601)
ExtraFieldsobjekt, sträng → strängja

contacts — kontakt

GET /v1/contacts, GET /v1/contacts/<Id>, POST /v1/contacts, PATCH /v1/contacts/<Id>
Behörigheter: contacts:read, contacts:write
Urval: modifiedSince, modifiedBefore, customerNr, name

FältTypSkrivbart
Idtext
CustomerNrtextja
Statustext
Nametextja
Positiontextja
Phonetextja
Mobiletextja
Faxtextja
Emailtextja
MostImportantja/nejja
Custom1textja
Custom2textja
Custom3textja
Custom4textja
Notetextja
Modifieddatum (ISO 8601)

suppliercontacts — leverantörskontakt

GET /v1/suppliercontacts, GET /v1/suppliercontacts/<Id>, POST /v1/suppliercontacts, PATCH /v1/suppliercontacts/<Id>
Behörigheter: suppliercontacts:read, suppliercontacts:write
Urval: modifiedSince, modifiedBefore, supplierNr, name

FältTypSkrivbart
Idtext
SupplierNrtextja
Statustext
Nametextja
Positiontextja
Phonetextja
Mobiletextja
Faxtextja
Emailtextja
MostImportantja/nejja
Custom1textja
Custom2textja
Custom3textja
Custom4textja
Notetextja
Modifieddatum (ISO 8601)

addresses — adress

GET /v1/addresses, GET /v1/addresses/<Id>, POST /v1/addresses, PATCH /v1/addresses/<Id>
Behörigheter: addresses:read, addresses:write
Urval: modifiedSince, modifiedBefore, customerNr, supplierNr, objectNr, level

FältTypSkrivbart
Idtext
CustomerNrtextja
SupplierNrtextja
ObjectNrtextja
Leveltalja
Statustext
Nametextja
MostImportantja/nejja
AddressLine1textja
AddressLine2textja
PostalCodetextja
Citytextja
Statetextja
Countrytextja
Phonetextja
Faxtextja
Emailtextja
Custom1textja
Custom2textja
Custom3textja
Custom4textja
Notetextja
Modifieddatum (ISO 8601)

users — användare

GET /v1/users, GET /v1/users/<Sign>
Behörigheter: users:read, users:write
Urval: modifiedSince, modifiedBefore, name, includePassive, includeArchived

Enbart läsning. Det här är en inställning i produkten — en ändring gäller alla användare, och hör därför hemma i Mobigos administration.
FältTypSkrivbart
Signtext
Nametext
Statustext
Phonetext
Mobiletext
Emailtext
Custom1text
Custom2text
Custom3text
Custom4text
Notetext
Modifieddatum (ISO 8601)

timetypes — tidtyp

GET /v1/timetypes, GET /v1/timetypes/<Name>
Behörigheter: timetypes:read, timetypes:write
Urval: modifiedSince, modifiedBefore, billable, includeArchived

Enbart läsning. Det här är en inställning i produkten — en ändring gäller alla användare, och hör därför hemma i Mobigos administration.
FältTypSkrivbart
Nametext
Statustext
Unittext
BasePricetal
CostPricetal
ProductNrtext
InternalTypeja/nej
ResourceTypeja/nej
BookingTypeja/nej
Summableja/nej
ShowInCalendarja/nej
Colortext
SpecOptionstext
DateTypetext
Custom1text
Custom2text
Custom3text
Modifieddatum (ISO 8601)

pricelists — prislista

GET /v1/pricelists, GET /v1/pricelists/<Nr>
Behörigheter: pricelists:read, pricelists:write
Urval: modifiedSince, modifiedBefore, includeArchived

Enbart läsning. Det här är en inställning i produkten — en ändring gäller alla användare, och hör därför hemma i Mobigos administration.
FältTypSkrivbart
Nrtext
Nametext
Statustext
HasMarkupPctja/nej
MarkupPcttal
Notetext
Modifieddatum (ISO 8601)

objects1 — objekt 1

GET /v1/objects1, GET /v1/objects1/<Nr>, POST /v1/objects1, PATCH /v1/objects1/<Nr>
Behörigheter: objects1:read, objects1:write
Urval: modifiedSince, modifiedBefore, name, category, customerNr

FältTypSkrivbart
Nrtextja
Statustext
Nametextja
Categorytextja
CustomerNrtextja
Leveltal
ParentNrtextja
Custom1textja
Custom2textja
Custom3textja
Custom4textja
Notetextja
Modifieddatum (ISO 8601)
ExtraFieldsobjekt, sträng → strängja

objects2 — objekt 2

GET /v1/objects2, GET /v1/objects2/<Nr>, POST /v1/objects2, PATCH /v1/objects2/<Nr>
Behörigheter: objects2:read, objects2:write
Urval: modifiedSince, modifiedBefore, name, category, customerNr

FältTypSkrivbart
Nrtextja
Statustext
Nametextja
Categorytextja
CustomerNrtextja
Leveltal
ParentNrtextja
Custom1textja
Custom2textja
Custom3textja
Custom4textja
Notetextja
Modifieddatum (ISO 8601)
ExtraFieldsobjekt, sträng → strängja

objects3 — objekt 3

GET /v1/objects3, GET /v1/objects3/<Nr>, POST /v1/objects3, PATCH /v1/objects3/<Nr>
Behörigheter: objects3:read, objects3:write
Urval: modifiedSince, modifiedBefore, name, category, customerNr

FältTypSkrivbart
Nrtextja
Statustext
Nametextja
Categorytextja
CustomerNrtextja
Leveltal
ParentNrtextja
Custom1textja
Custom2textja
Custom3textja
Custom4textja
Notetextja
Modifieddatum (ISO 8601)
ExtraFieldsobjekt, sträng → strängja

objects4 — objekt 4

GET /v1/objects4, GET /v1/objects4/<Nr>, POST /v1/objects4, PATCH /v1/objects4/<Nr>
Behörigheter: objects4:read, objects4:write
Urval: modifiedSince, modifiedBefore, name, category, customerNr

FältTypSkrivbart
Nrtextja
Statustext
Nametextja
Categorytextja
CustomerNrtextja
Leveltal
ParentNrtextja
Custom1textja
Custom2textja
Custom3textja
Custom4textja
Notetextja
Modifieddatum (ISO 8601)
ExtraFieldsobjekt, sträng → strängja

times — tidrad

GET /v1/times, GET /v1/times/<Id>, PATCH /v1/times/<Id>
Behörigheter: times:read, times:write
Urval: modifiedSince, modifiedBefore, ownerNr, ownerType, userSign, invoice

Nya rader skapas alltid på sitt uppdrag med POST /v1/tasks/<nr>/times. En rad utan ägare blir en lös post som aldrig syns på uppdraget, så den vägen finns inte här.
FältTypSkrivbart
Idtext
OwnerNrtext
TimeTypetext
UserSigntextja
Spectextja
Hourstalja
InvoiceHourstalja
Pricetalja
DiscountPcttalja
Invoiceja/nejja
ResourceNrtextja
CostPerUnittalja
TotalCosttalja
Datedatum (ISO 8601)ja
Sign1Bytextja
Sign1Datedatum (ISO 8601)ja
Sign2Bytextja
Sign2Datedatum (ISO 8601)ja
Modifieddatum (ISO 8601)

materials — materialrad

GET /v1/materials, GET /v1/materials/<Id>, PATCH /v1/materials/<Id>
Behörigheter: materials:read, materials:write
Urval: modifiedSince, modifiedBefore, ownerNr, ownerType, productNr, invoice

Nya rader skapas alltid på sitt uppdrag med POST /v1/tasks/<nr>/materials. En rad utan ägare blir en lös post som aldrig syns på uppdraget, så den vägen finns inte här.
FältTypSkrivbart
Idtext
OwnerNrtext
ProductNrtext
ProductNametext
Unittext
Notetextja
UserSigntextja
Quantitytalja
InvoiceQuantitytalja
Pricetalja
DiscountPcttalja
Invoiceja/nejja
DeliveryDatedatum (ISO 8601)ja
SupplierNrtextja
PurchasePriceListNrtextja
PurchasePricetalja
CostPerUnittalja
TotalCosttalja
Custom1textja
Custom2textja
Custom3textja
Sign1Bytextja
Sign1Datedatum (ISO 8601)ja
Sign2Bytextja
Sign2Datedatum (ISO 8601)ja
Modifieddatum (ISO 8601)