SCIM 2.0-referanse
Teknisk referanse for identitetsforvaltningsteam som kobler en IdP (Microsoft Entra ID, SailPoint IdentityIQ, …) til mTime: hvilke SCIM 2.0-attributter og -operasjoner mTime støtter, og hva hver av dem gjør.
Oversikt
| Basis-URL | https://<your mTime host>/api/scim/v2 |
| Standarder | RFC 7643 (skjema), RFC 7644 (protokoll) |
| Autentisering | Bearer-token: en API-nøkkel for arbeidsområdets provisjonerings-servicebruker (se Sett opp SCIM med Microsoft Entra ID) |
| Medietype | application/scim+json |
| Ressurser | /Users, /Groups |
| Feil | SCIM-feilsvar (RFC 7644 §3.12) |
Hva SCIM styrer, og hva det ikke styrer
mTime skiller brukeren (pålogging, roller, tilgang) fra den ansatte og vedkommendes ansettelser:
Bruker → Ansatt → n ansettelser
SCIM styrer brukeren: hvem som kan logge på, under hvilket navn og med hvilke roller. Ansatte og ansettelser — organisasjonsenhet, leder, ansettelsesvilkår, arbeidstidsnorm, start- og sluttdato — er daterte data som mTime beregner ut fra, og de kommer fra HR-integrasjonen din, ikke fra SCIM. En SCIM-bruker knyttes til sin ansatte via externalId (se Slik provisjoneres brukere).
Derfor støtter ikke mTime Enterprise User Extension: department, manager og employeeNumber er enkeltverdier uten gyldighetsdato, mens en ansatt i mTime kan ha flere daterte ansettelser.
Brukere
Attributter
Skjema urn:ietf:params:scim:schemas:core:2.0:User.
| Attributt | Lese | Opprette | Oppdatere | Merknader |
|---|---|---|---|---|
id | ✅ | — | — | Tildeles av mTime, kan ikke endres |
externalId | ✅ | ✅ | ✅ | Stabil nøkkel (f.eks. ansattnummer), unik per arbeidsområde; et duplikat gir 409 uniqueness. Kan kobles til et ansattattributt for å knytte brukeren til den ansatte |
userName | ✅ | ✅ | ⚠️ | Brukerens e-postadresse. Kan bare endres så lenge brukeren ikke har aktivert invitasjonen sin |
emails | ✅ | ✅ | ⚠️ | Primærverdien (eller den første) brukes; samme regel som for userName. Returneres som én primær e-postadresse |
name.givenName, name.familyName | ❌ | ✅ | ⚠️ | Slås sammen til det fulle navnet — bare når begge sendes samtidig (i ett name-objekt eller begge stiene i samme PATCH). mTime lagrer ett fullt navn og deler det aldri opp, så en PATCH med bare det ene ignoreres. Ved oppretting og PUT brukes et fornavn eller etternavn alene bare når det ikke finnes noe name.formatted eller displayName. Returneres ikke ved lesing: navnet kommer tilbake som name.formatted |
name.formatted | ✅ | ✅ | ⚠️ | Fullt navn; går foran fornavn og etternavn. En endring har ingen synlig effekt for en bruker som er knyttet til en ansatt, med mindre IdP-en gir de ansatte navn — se Hvilket navn SCIM setter |
displayName | ✅ | ✅ | ⚠️ | Fullt navn. Samme regel for endringer som name.formatted |
active | ✅ | — | ✅ | false suspenderer brukeren; true reaktiverer |
meta.resourceType, meta.location | ✅ | — | — |
Alle andre Core User-attributter (nickName, title, phoneNumbers, addresses, password, …) og Enterprise User Extension (urn:ietf:params:scim:schemas:extension:enterprise:2.0:User) støttes ikke: de ignoreres ved oppretting og oppdatering og returneres aldri.
Hvilket navn SCIM setter
mTime viser ett navn for en person: den ansattes navn når brukeren er knyttet til en ansatt, ellers brukerens navn.
- En bruker som er knyttet til en ansatt, viser den ansattes navn, som HR-integrasjonen din vedlikeholder. Som standard oppdaterer ikke SCIM en eksisterende ansatt, så et navn sendt via SCIM har ingen synlig effekt for denne brukeren. Er Bruk navn fra identitetsleverandøren som ansattnavn
slått på, skriver hver oppretting,
PUTellerPATCHmed et navn også navnet til den tilknyttede ansatte — se Bruke identitetsleverandørens navn på ansatte. - En bruker uten ansatt (f.eks. et utkast) viser brukerens eget navn. SCIM setter det ved oppretting og kan endre det til personen aktiverer invitasjonen sin; deretter følger det navnet på personens egen mTime-konto. Oppretter en rolle senere personens ansattpost, får den ansatte dette navnet fra start.
Endre navnet i HR-systemet for å gi en ansatt nytt navn — eller i IdP-en hvis den innstillingen er slått på.
Operasjoner
| Operasjon | Støttet | Virkemåte |
|---|---|---|
POST /Users | ✅ | Oppretter brukeren som invitert og sender invitasjons-e-posten. En e-postadresse er påkrevd (emails, eller userName når den er en adresse). Knytter brukeren til en eksisterende ansatt når en matcher; ellers opprettes et utkast uten rolle, uten ansatt og uten invitasjon. 409 hvis externalId eller den ansatte allerede er i bruk |
GET /Users/{id} | ✅ | |
GET /Users?filter=… | ⚠️ | Bare attribute eq "value", på userName eller externalId. Andre attributter eller operatorer gir 400. Kan kombineres med paginering |
GET /Users (uten filter) | ✅ | Alle brukere, side for side — se Paginering |
PUT /Users/{id} | ✅ | Bruker de støttede attributtene ovenfor |
PATCH /Users/{id} | ⚠️ | add og replace på active, userName, emails, displayName, name (objekt), name.givenName, name.familyName, name.formatted, externalId, eller uten sti (delvis ressurs). En sti kan ha skjemaprefikset (urn:ietf:params:scim:schemas:core:2.0:User:name.givenName). remove og andre stier ignoreres |
DELETE /Users/{id} | ✅ | Sletter brukerkontoen (myk sletting) og avslutter alle økter. Den ansatte og historikken bevares. Returnerer 204 |
Brukere med rollen owner kan ikke endres eller slettes via SCIM (403).
Deaktivere eller slette?
PATCH active=false | DELETE | |
|---|---|---|
| Kan logge på | Nei — øktene avsluttes umiddelbart | Nei — øktene avsluttes umiddelbart |
| Brukerkonto | Beholdes, status suspendert | Slettes (myk sletting) |
| Ansatt, tidsregistreringer, godkjenninger | Beholdes | Beholdes |
| Tilbakekomst | PATCH active=true gjenoppretter den samme brukeren | En ny POST oppretter en ny bruker, knyttet til den samme ansatte |
Grupper
Grupper tilsvarer mTime-roller: IdP-en bestemmer om en gruppe finnes og hvem som er medlem, mTime-administratorene bestemmer rollens tillatelser. Se Slik blir grupper til roller.
Attributter
Skjema urn:ietf:params:scim:schemas:core:2.0:Group.
| Attributt | Lese | Opprette | Oppdatere | Merknader |
|---|---|---|---|---|
id | ✅ | — | — | Tildeles av mTime |
externalId | ✅ | ✅ | ✅ | |
displayName | ✅ | ✅ | ✅ | Knyttes til rollen med samme navn, eller oppretter en tom egendefinert rolle. Gis gruppen nytt navn, får rollen det også |
members (value, display) | ✅ | ✅ | ✅ | value er brukerens SCIM-id |
Operasjoner
| Operasjon | Støttet | Virkemåte |
|---|---|---|
POST /Groups | ✅ | Knyttes til rollen eller oppretter den |
GET /Groups/{id} | ✅ | |
GET /Groups?filter=… | ⚠️ | Bare attribute eq "value", på displayName eller externalId |
GET /Groups (uten filter) | ✅ | Alle roller som styres av IdP-en, side for side — se Paginering |
PUT /Groups/{id} | ✅ | Erstatter navn og medlemmer |
PATCH /Groups/{id} | ✅ | add, replace og remove på members (inkludert members[value eq "…"]) og displayName |
DELETE /Groups/{id} | ✅ | Fjerner rollen fra medlemmene. Selve rollen slettes bare hvis ingen administrator noen gang har konfigurert den |
Paginering
GET /Users og GET /Groups støtter indeksbasert paginering (RFC 7644 §3.4.2.4), med eller uten filter.
| Parameter | Standard | Merknader |
|---|---|---|
startIndex | 1 | 1-basert posisjon for det første resultatet. Verdier under 1 regnes som 1 |
count | 200 | Resultater per side, høyst 200. count=0 returnerer bare totalResults |
Svaret angir totalResults (alle treff), startIndex og itemsPerPage (resultatene på denne siden). Hent neste side med startIndex + itemsPerPage til du har totalResults resultater. Resultatene kommer i fast rekkefølge, så sidene verken hopper over eller gjentar resultater, med mindre brukere eller grupper opprettes eller slettes underveis.
Discovery-endepunkter
Alle tre krever det samme bearer-tokenet som de andre SCIM-endepunktene.
| Endepunkt | Innhold |
|---|---|
GET /ServiceProviderConfig | Funksjoner, vist nedenfor |
GET /Schemas | Core-skjemaene User og Group, begrenset til attributtene ovenfor |
GET /ResourceTypes | User (/Users) og Group (/Groups), uten skjemautvidelser |
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig"],
"documentationUri": "https://help.mtime.app",
"patch": { "supported": true },
"bulk": { "supported": false, "maxOperations": 0, "maxPayloadSize": 0 },
"filter": { "supported": true, "maxResults": 200 },
"changePassword": { "supported": false },
"sort": { "supported": false },
"etag": { "supported": false },
"authenticationSchemes": [
{
"type": "oauthbearertoken",
"name": "OAuth Bearer Token",
"description": "Bearer token issued for the workspace's provisioning service user",
"primary": true
}
]
}Feilsøking
| Problem | Løsning |
|---|---|
400 Unsupported filter | Bruk eq på userName eller externalId (brukere) eller displayName eller externalId (grupper) |
409 uniqueness ved oppretting | En annen bruker har allerede denne externalId, eller den ansatte har allerede en bruker. Slå opp brukeren med filter=externalId eq "…" og oppdater den i stedet |
| Et endret fornavn eller etternavn vises ikke | mTime lagrer ett fullt navn og deler det aldri opp, så det kan ikke endre bare den ene delen. Send givenName og familyName sammen i samme PATCH, eller send name.formatted eller displayName |
| En navneendring fra IdP-en vises ikke | Forventet for en bruker som er knyttet til en ansatt så lenge Bruk navn fra identitetsleverandøren som ansattnavn er slått av: navnet som vises, er den ansattes, og det kommer fra HR-integrasjonen. Slå på innstillingen hvis IdP-en skal bestemme de ansattes navn — se Hvilket navn SCIM setter |
| En endring av e-postadressen vises ikke | Brukeren har allerede aktivert kontoen sin; påloggings-e-posten styres ikke lenger av provisjoneringen |
403 på en bruker | Brukeren er eier av arbeidsområdet, og det kan ikke SCIM administrere |