SCIM 2.0-reference
Teknisk reference for de teams, der står for identitetsstyring og forbinder en IdP (Microsoft Entra ID, SailPoint IdentityIQ m.fl.) med mTime: hvilke SCIM 2.0-attributter og -operationer mTime understøtter, og hvad hver enkelt gør.
Overblik
| Basis-URL | https://<din mTime-vært>/api/scim/v2 |
| Standarder | RFC 7643 (skema), RFC 7644 (protokol) |
| Autentificering | Bearer-token: en API-nøgle til arbejdsområdets provisionerings-servicebruger (se Opsæt SCIM med Microsoft Entra ID) |
| Medietype | application/scim+json |
| Ressourcer | /Users, /Groups |
| Fejl | SCIM-fejlsvar (RFC 7644 §3.12) |
Hvad SCIM styrer, og hvad det ikke styrer
mTime skelner mellem brugeren (login, roller og adgang) og medarbejderen med sine ansættelser:
Bruger → Medarbejder → n Ansættelser
SCIM styrer brugeren: hvem der kan logge ind, under hvilket navn og med hvilke roller. Medarbejdere og ansættelser — organisatorisk enhed, leder, ansættelsesvilkår, arbejdstidsnorm, start- og slutdato — er datostyrede data, som mTime regner på. De kommer fra jeres HR-integration, ikke fra SCIM. En SCIM-bruger forbindes med sin medarbejder via externalId (se Sådan provisioneres brugere).
Derfor understøtter mTime ikke Enterprise User Extension: department, manager og employeeNumber er enkeltværdier uden gyldighedsdato, mens en medarbejder i mTime kan have flere datostyrede ansættelser.
Brugere
Attributter
Skema urn:ietf:params:scim:schemas:core:2.0:User.
| Attribut | Læs | Opret | Ændr | Bemærkninger |
|---|---|---|---|---|
id | ✅ | — | — | Tildeles af mTime og kan ikke ændres |
externalId | ✅ | ✅ | ✅ | Fast nøgle (f.eks. medarbejdernummer), unik i arbejdsområdet; en dublet giver 409 uniqueness. Kan knyttes til en medarbejderattribut, så medarbejderen findes ud fra den |
userName | ✅ | ✅ | ⚠️ | Brugerens e-mailadresse. Kan kun ændres, så længe brugeren ikke har aktiveret sin invitation |
emails | ✅ | ✅ | ⚠️ | Den primære (eller første) værdi bruges; samme regel som userName. Returneres som én primær e-mail |
name.givenName, name.familyName | ❌ | ✅ | ⚠️ | Sættes sammen til det fulde navn — kun når begge sendes samtidig (i ét name-objekt eller begge paths i samme PATCH). mTime gemmer ét fulde navn og opdeler det aldrig, så en PATCH med kun det ene ignoreres. Ved oprettelse og PUT bruges et fornavn eller efternavn alene kun, når der ikke er noget name.formatted eller displayName. Returneres ikke ved læsning: navnet kommer tilbage som name.formatted |
name.formatted | ✅ | ✅ | ⚠️ | Fulde navn; har forrang for fornavn/efternavn. En ændring har ingen synlig effekt for en bruger, der er knyttet til en medarbejder, medmindre IdP’en navngiver medarbejdere — se Hvilket navn SCIM sætter |
displayName | ✅ | ✅ | ⚠️ | Fulde navn. Samme regel for ændringer som name.formatted |
active | ✅ | — | ✅ | false suspenderer brugeren; true genaktiverer |
meta.resourceType, meta.location | ✅ | — | — |
Alle andre attributter i Core User (nickName, title, phoneNumbers, addresses, password m.fl.) og hele Enterprise User Extension (urn:ietf:params:scim:schemas:extension:enterprise:2.0:User) understøttes ikke: de ignoreres ved oprettelse og ændring og returneres aldrig.
Hvilket navn SCIM sætter
mTime viser ét navn for en person: medarbejderens navn, når brugeren er knyttet til en medarbejder, ellers brugerens navn.
- En bruger, der er knyttet til en medarbejder, viser medarbejderens navn, som jeres HR-integration vedligeholder. Som standard opdaterer SCIM ikke en eksisterende medarbejder, så et navn sendt via SCIM har ingen synlig effekt for denne bruger. Er Brug navne fra identitetsudbyderen som medarbejdernavne
slået til, skriver hver oprettelse,
PUTellerPATCHmed et navn også navnet på den tilknyttede medarbejder — se Brug identitetsudbyderens navn på medarbejdere. - En bruger uden medarbejder (f.eks. en kladde) viser brugerens eget navn. SCIM sætter det ved oprettelsen og kan ændre det, indtil personen aktiverer sin invitation; derefter følger det navnet på personens egen mTime-konto. Opretter en rolle senere personens medarbejder, får medarbejderen dette navn fra start.
Skift navnet i jeres HR-system for at omdøbe en person, der er medarbejder — eller i IdP’en, hvis den indstilling er slået til.
Operationer
| Operation | Understøttet | Hvad sker der |
|---|---|---|
POST /Users | ✅ | Opretter brugeren som inviteret og sender invitations-e-mailen. E-mail er påkrævet (emails, eller userName, når det er en adresse). Knytter brugeren til en eksisterende medarbejder, når en matcher; ellers oprettes en kladde uden rolle, uden medarbejder og uden invitation. 409, hvis externalId eller medarbejderen allerede er i brug |
GET /Users/{id} | ✅ | |
GET /Users?filter=… | ⚠️ | Kun attribute eq "value" på userName eller externalId. Andre attributter eller operatorer giver 400. Kan kombineres med paging |
GET /Users (uden filter) | ✅ | Alle brugere, side for side — se Paging |
PUT /Users/{id} | ✅ | Anvender de understøttede attributter ovenfor |
PATCH /Users/{id} | ⚠️ | add og replace på active, userName, emails, displayName, name (objekt), name.givenName, name.familyName, name.formatted, externalId eller uden path (delvis ressource). En path må have skemapræfikset (urn:ietf:params:scim:schemas:core:2.0:User:name.givenName). remove og andre paths ignoreres |
DELETE /Users/{id} | ✅ | Sletter brugerkontoen (blød sletning) og afslutter alle sessioner. Medarbejderen og vedkommendes historik bevares. Returnerer 204 |
Brugere med rollen owner kan ikke ændres eller slettes via SCIM (403).
Deaktivere eller slette?
PATCH active=false | DELETE | |
|---|---|---|
| Kan logge ind | Nej — sessionerne afsluttes med det samme | Nej — sessionerne afsluttes med det samme |
| Brugerkonto | Bevares med status suspenderet | Slettes (blød sletning) |
| Medarbejder, tidsregistreringer, godkendelser | Bevares | Bevares |
| Genaktivering | PATCH active=true gendanner samme bruger | En ny POST opretter en ny bruger, knyttet til samme medarbejder |
Grupper
Grupper svarer til mTime-roller: IdP’en ejer gruppen og dens medlemmer, mens mTime-administratorer ejer rollens rettigheder. Se Sådan bliver grupper til roller.
Attributter
Skema urn:ietf:params:scim:schemas:core:2.0:Group.
| Attribut | Læs | Opret | Ændr | Bemærkninger |
|---|---|---|---|---|
id | ✅ | — | — | Tildeles af mTime |
externalId | ✅ | ✅ | ✅ | |
displayName | ✅ | ✅ | ✅ | Knyttes til rollen med samme navn eller opretter en tom brugerdefineret rolle. Omdøbning omdøber rollen |
members (value, display) | ✅ | ✅ | ✅ | value er SCIM-brugerens id |
Operationer
| Operation | Understøttet | Hvad sker der |
|---|---|---|
POST /Groups | ✅ | Knytter gruppen til en rolle eller opretter rollen |
GET /Groups/{id} | ✅ | |
GET /Groups?filter=… | ⚠️ | Kun attribute eq "value" på displayName eller externalId |
GET /Groups (uden filter) | ✅ | Alle roller, som IdP’en styrer, side for side — se Paging |
PUT /Groups/{id} | ✅ | Erstatter navn og medlemmer |
PATCH /Groups/{id} | ✅ | add, replace og remove på members (også members[value eq "…"]) og displayName |
DELETE /Groups/{id} | ✅ | Fjerner rollen fra medlemmerne. Selve rollen slettes kun, hvis ingen administrator har konfigureret den |
Paging
GET /Users og GET /Groups understøtter indeksbaseret paging (RFC 7644 §3.4.2.4), med eller uden filter.
| Parameter | Standard | Bemærkninger |
|---|---|---|
startIndex | 1 | 1-baseret position for det første resultat. Værdier under 1 tæller som 1 |
count | 200 | Resultater pr. side, højst 200. count=0 returnerer kun totalResults |
Svaret angiver totalResults (alle match), startIndex og itemsPerPage (resultaterne på denne side). Hent næste side med startIndex + itemsPerPage, indtil du har totalResults resultater. Resultaterne kommer i en fast rækkefølge, så siderne hverken springer resultater over eller gentager dem, medmindre brugere eller grupper oprettes eller slettes undervejs.
Discovery-endpoints
Alle tre kræver samme bearer-token som de øvrige SCIM-endpoints.
| Endpoint | Indhold |
|---|---|
GET /ServiceProviderConfig | Understøttede funktioner, vist nedenfor |
GET /Schemas | Core-skemaerne User og Group, begrænset til attributterne ovenfor |
GET /ResourceTypes | User (/Users) og Group (/Groups), uden skemaudvidelser |
{
"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
}
]
}Fejlfinding
| Problem | Løsning |
|---|---|
400 Unsupported filter | Brug eq på userName eller externalId (brugere) eller på displayName eller externalId (grupper) |
409 uniqueness ved oprettelse | En anden bruger har allerede dette externalId, eller medarbejderen har allerede en bruger. Find brugeren med filter=externalId eq "…", og opdatér den i stedet |
| Et ændret fornavn eller efternavn vises ikke | mTime gemmer ét fulde navn og opdeler det aldrig, så det kan ikke ændre kun den ene del. Send givenName og familyName sammen i samme PATCH, eller send name.formatted eller displayName |
| Et navneskift fra IdP’en vises ikke | Forventet for en bruger, der er knyttet til en medarbejder, så længe Brug navne fra identitetsudbyderen som medarbejdernavne er slået fra: det viste navn er medarbejderens, og det kommer fra jeres HR-integration. Slå indstillingen til, hvis IdP’en skal bestemme medarbejdernavnene — se Hvilket navn SCIM sætter |
| Et skift af e-mail vises ikke | Brugeren har allerede aktiveret sin konto; login-e-mailen styres ikke længere af provisioneringen |
403 på en bruger | Brugeren er ejer af arbejdsområdet, og ejere kan ikke styres via SCIM |