Skip to content

SCIM 2.0-referens

Teknisk referens för identitetshanteringsteam som ansluter en IdP (Microsoft Entra ID, SailPoint IdentityIQ, …) till mTime: vilka SCIM 2.0-attribut och -operationer mTime stöder och vad var och en gör.

Översikt

Bas-URLhttps://<your mTime host>/api/scim/v2
StandarderRFC 7643 (schema), RFC 7644 (protokoll)
AutentiseringBearer-token: en API-nyckel för arbetsytans provisionerings-serviceanvändare (se Konfigurera SCIM med Microsoft Entra ID)
Medietypapplication/scim+json
Resurser/Users, /Groups
FelSCIM-felsvar (RFC 7644 §3.12)

Vad SCIM hanterar, och vad det inte hanterar

mTime skiljer användaren (inloggning, roller, åtkomst) från den anställda och dennes anställningar:

Användare → Anställd → n anställningar

SCIM hanterar användaren: vem som får logga in, under vilket namn och med vilka roller. Anställda och anställningar — organisationsenhet, chef, anställningsvillkor, arbetstidsnorm, start- och slutdatum — är daterade uppgifter som mTime räknar på, och de kommer från din HR-integration, inte från SCIM. En SCIM-användare kopplas till sin anställda via externalId (se Så provisioneras användare).

Därför stöder mTime inte Enterprise User Extension: department, manager och employeeNumber är enskilda värden utan giltighetsdatum, medan en anställd i mTime kan ha flera daterade anställningar.

Användare

Attribut

Schema urn:ietf:params:scim:schemas:core:2.0:User.

AttributLäsaSkapaUppdateraAnmärkningar
id✅——Tilldelas av mTime, kan inte ändras
externalId✅✅✅Stabil nyckel (t.ex. anställningsnummer), unik per arbetsyta; en dubblett ger 409 uniqueness. Kan kopplas till ett anställdattribut för matchning
userName✅✅⚠️Användarens e-postadress. Kan bara ändras så länge användaren inte har aktiverat sin inbjudan
emails✅✅⚠️Det primära (eller första) värdet används; samma regel som för userName. Returneras som en enda primär e-postadress
name.givenName, name.familyName❌✅⚠️Slås ihop till det fullständiga namnet — bara när båda skickas tillsammans (i ett name-objekt eller båda sökvägarna i samma PATCH). mTime lagrar ett fullständigt namn och delar aldrig upp det, så en PATCH med bara det ena ignoreras. Vid skapande och PUT används ett för- eller efternamn ensamt bara när det saknas name.formatted och displayName. Returneras inte vid läsning: namnet kommer tillbaka som name.formatted
name.formatted✅✅⚠️Fullständigt namn; har företräde framför för- och efternamn. En ändring syns inte för en användare som är kopplad till en anställd, om inte IdP:n namnger de anställda — se Vilket namn SCIM sätter
displayName✅✅⚠️Fullständigt namn. Samma regel för ändringar som name.formatted
active✅—✅false stänger av användaren; true återaktiverar
meta.resourceType, meta.location✅——

Alla andra Core User-attribut (nickName, title, phoneNumbers, addresses, password, …) och Enterprise User Extension (urn:ietf:params:scim:schemas:extension:enterprise:2.0:User) stöds inte: de ignoreras när användare skapas och uppdateras och returneras aldrig.

Vilket namn SCIM sätter

mTime visar ett namn för en person: den anställdas namn när användaren är kopplad till en anställd, annars användarens namn.

  • En användare som är kopplad till en anställd visar den anställdas namn, som er HR-integration underhåller. Som standard uppdaterar SCIM inte en befintlig anställd, så ett namn som skickas via SCIM syns inte för den här användaren. Är Använd identitetsleverantörens namn som medarbetarnamn påslagen skriver varje skapande, PUT eller PATCH med ett namn även namnet till den kopplade anställda — se Använda identitetsleverantörens namn för anställda.
  • En användare utan anställd (t.ex. ett utkast) visar användarens eget namn. SCIM sätter det vid skapandet och kan ändra det tills personen aktiverar sin inbjudan; därefter följer det namnet på personens eget mTime-konto. Skapar en roll senare personens anställdpost, får den anställda det här namnet från början.

Ändra namnet i HR-systemet för att byta namn på en anställd — eller i IdP:n om den inställningen är påslagen.

Operationer

OperationStödsBeteende
POST /Users✅Skapar användaren som inbjuden och skickar inbjudningsmejlet. En e-postadress krävs (emails, eller userName när det är en adress). Kopplar till en befintlig anställd när någon matchar; annars skapas ett utkast utan roll, utan anställd och utan inbjudan. 409 om externalId eller den anställda redan är upptagen
GET /Users/{id}✅
GET /Users?filter=…⚠️Endast attribute eq "value", på userName eller externalId. Andra attribut eller operatorer ger 400. Kan kombineras med sidindelning
GET /Users (utan filter)✅Alla användare, sida för sida — se Sidindelning
PUT /Users/{id}✅Tillämpar de attribut som stöds ovan
PATCH /Users/{id}⚠️add och replace på active, userName, emails, displayName, name (objekt), name.givenName, name.familyName, name.formatted, externalId, eller utan sökväg (partiell resurs). En sökväg får ha schemaprefixet (urn:ietf:params:scim:schemas:core:2.0:User:name.givenName). remove och andra sökvägar ignoreras
DELETE /Users/{id}✅Raderar användarkontot (mjuk radering) och avslutar alla sessioner. Den anställda och dennes historik bevaras. Returnerar 204

Användare med rollen owner kan inte ändras eller raderas via SCIM (403).

Inaktivera eller radera?

PATCH active=falseDELETE
Kan logga inNej — sessionerna avslutas direktNej — sessionerna avslutas direkt
AnvändarkontoBehålls, status avstängdRaderas (mjuk radering)
Anställd, tidsposter, godkännandenBehållsBehålls
ÅterkomstPATCH active=true återställer samma användareEn ny POST skapar en ny användare, kopplad till samma anställda

Grupper

Grupper motsvarar mTime-roller: IdP:n bestämmer om en grupp finns och vilka som är medlemmar, mTime-administratörerna bestämmer rollens behörigheter. Se Så blir grupper roller.

Attribut

Schema urn:ietf:params:scim:schemas:core:2.0:Group.

AttributLäsaSkapaUppdateraAnmärkningar
id✅——Tilldelas av mTime
externalId✅✅✅
displayName✅✅✅Kopplas till rollen med samma namn, eller skapar en tom anpassad roll. Byter gruppen namn byter rollen också namn
members (value, display)✅✅✅value är användarens SCIM-id

Operationer

OperationStödsBeteende
POST /Groups✅Kopplas till rollen eller skapar den
GET /Groups/{id}✅
GET /Groups?filter=…⚠️Endast attribute eq "value", på displayName eller externalId
GET /Groups (utan filter)✅Alla roller som hanteras av IdP:n, sida för sida — se Sidindelning
PUT /Groups/{id}✅Ersätter namn och medlemmar
PATCH /Groups/{id}✅add, replace och remove på members (inklusive members[value eq "…"]) och displayName
DELETE /Groups/{id}✅Tar bort rollen från dess medlemmar. Själva rollen raderas bara om ingen administratör någonsin har konfigurerat den

Sidindelning

GET /Users och GET /Groups stöder indexbaserad sidindelning (RFC 7644 §3.4.2.4), med eller utan filter.

ParameterStandardKommentar
startIndex11-baserad position för det första resultatet. Värden under 1 räknas som 1
count200Resultat per sida, högst 200. count=0 returnerar bara totalResults

Svaret anger totalResults (alla träffar), startIndex och itemsPerPage (resultaten på den här sidan). Hämta nästa sida med startIndex + itemsPerPage tills du har totalResults resultat. Resultaten kommer i en fast ordning, så sidorna varken hoppar över eller upprepar resultat, om inte användare eller grupper skapas eller tas bort under tiden.

Discovery-endpoints

Alla tre kräver samma bearer-token som de övriga SCIM-endpointerna.

EndpointInnehåll
GET /ServiceProviderConfigFunktioner, visas nedan
GET /SchemasCore-schemana User och Group, begränsade till attributen ovan
GET /ResourceTypesUser (/Users) och Group (/Groups), utan schemautökningar
{
  "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
    }
  ]
}

Felsökning

ProblemLösning
400 Unsupported filterAnvänd eq på userName eller externalId (användare) eller på displayName eller externalId (grupper)
409 uniqueness när användaren skapasEn annan användare har redan detta externalId, eller så har den anställda redan en användare. Slå upp användaren med filter=externalId eq "…" och uppdatera den i stället
Ett ändrat för- eller efternamn syns intemTime lagrar ett fullständigt namn och delar aldrig upp det, så det kan inte ändra bara den ena delen. Skicka givenName och familyName tillsammans i samma PATCH, eller skicka name.formatted eller displayName
En namnändring från IdP:n syns inteFörväntat för en användare som är kopplad till en anställd så länge Använd identitetsleverantörens namn som medarbetarnamn är avslagen: namnet som visas är den anställdas, och det kommer från er HR-integration. Slå på inställningen om IdP:n ska bestämma de anställdas namn — se Vilket namn SCIM sätter
En ändrad e-postadress syns inteAnvändaren har redan aktiverat sitt konto; inloggningsadressen hanteras inte längre av provisioneringen
403 på en användareAnvändaren är arbetsyteägare, och sådana kan SCIM inte hantera