Siirry pääsisältöön

Cosafe Support Center


Esimerkkejä SCIM-pyyntöjen lähettämisestä

Important

Tässä artikkelissa on esimerkkejä API:n tukemista SCIM-päätepistepyynnöistä. Identiteettipalveluntarjoajasi (IdP) käsittelee nämä pyynnöt yleensä automaattisesti, joten manuaalinen toiminta on yleensä tarpeetonta.

Käytä näitä esimerkkejä vain, jos olet rakentamassa mukautettua yhdistintä ja sinun on testattava sitä SCIM API:a vasten. Mukautetut liittimet voivat tuottaa epävakaita tai arvaamattomia tuloksia, jos ne toimivat odottamatta, joten emme yleensä suosittele niiden kirjoittamista alusta alkaen. Jos tilanteesi kuitenkin vaatii manuaalista integrointia etkä voi käyttää valmiiksi rakennettua kolmannen osapuolen yhdistintä, katso ohjeita näistä esimerkeistä.

Perus-URL

Käytä SCIM-lisäosan aktivoinnin aikana annettua perus-URL-osoitetta. Tämän dokumentin esimerkeissä tähän viitataan muodossa <base-url>.

Ylätunnisteet

Kaikkien pyyntöjen on sisällettävä seuraavat otsikot:

'Valtuutus': 'Hallinta <your-api-key>',
'Sisältötyyppi': 'application/scim+json; charset=utf-8',

Yksinkertaisuuden vuoksi seuraavat esimerkit näyttävät vain URL-osoitteen ja pyynnön rungon.

Rajoitukset

  • Sivutusten enimmäismäärä: 1000
  • Pyynnön members-attribuutin enimmäispituus: 1000
  • GET filter tukee yhtä attribuuttia vain eq (equal) -operaatiolla

Lue päätepisteitä

Listaa kaikki käyttäjät

GET <base-url>/Käyttäjät

Vastaus:

{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"Resurssit": [
{
"active": true,
"id": "8693b7d1-afe8-11f0-8cc2-3a7cb373875a",
"userName": "john@example.com",
"emails": [
{
"value": "john@example.com",
"primary": true
}
],
"displayName": "Matti Meikäläinen",
"phoneNumbers": [
{
"primary": true,
"value": "+467017406351",
"type": "työ"
},
{
"primary": false,
"value": "+46313900642",
"type": "mobile"
}
]
}
],
"aloitusindeksi": 1,
"kohteitaSivulla": 20,
"tuloksia yhteensä": 1
}

Listaa kaikki ryhmät

GET <base-url>/Ryhmät

Vastaus:

{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"Resurssit": [
{
"id": "8e9d1a59-bbe5-11f0-90fb-3e40deb6141c",
"displayName": "Läntinen piirikunta -- kaikki-henkilökunta"
}
],
"startIndex": 1,
"itemsPerPage": 20,
"totalResults": 1
}

Etsi olemassa oleva käyttäjä

GET <base-url>/Käyttäjät?filter=käyttäjäNimi eq "matti@esimerkki.com"

Tarkistaaksesi, onko käyttäjä jo järjestelmässä, ja hakeaksesi hänen id-tietonsa myöhempiä pyyntöjä varten, käytä filter-parametria ja vastaavaa userName-attribuuttia käyttäjän löytämiseksi hänen yksilöllisen nimensä perusteella.

Jos käyttäjä on olemassa, päätepiste palauttaa käyttäjäskeeman, joka sisältää id-attribuutin, jota käytetään kaikissa tämän käyttäjän myöhemmissä pyynnöissä:

{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"startIndex": 1,
"itemsPerPage": 20,
"totalResults": 1,
"Resurssit": [
{
"active": true,
"id": "8693b7d1-afe8-11f0-8cc2-3a7cb373875a",
"userName": "john@example.com",
"sähköpostit": [
{
"arvo": "matti@esimerkki.com",
"ensisijainen": true
}
],
"näyttöNimi": "Matti Meikäläinen",
"puhelinnumerot": [
{
"ensisijainen": true,
"arvo": "+46701740635",
"tyyppi": "työ"
},
{
"ensisijainen": false,
"value": "+46313900642",
"type": "mobile"
}
]
}
]
}

Jos käyttäjää ei ole olemassa, päätepiste palauttaa arvon 200 OK tyhjällä listalla.

Hanki käyttäjä

Hae olemassa oleva käyttäjä tekemällä GET-pyyntö /Users-päätepisteeseen käyttäjän id-arvolla.

GET <base-url>/Käyttäjät/8693b7d1-afe8-11f0-8cc2-3a7cb373875a

Vastaus:

{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "8693b7d1-afe8-11f0-8cc2-3a7cb373875a",
"meta": {
"resourceType": "Käyttäjä",
"location": "/core/v1/scim/v2/Users/8693b7d1-afe8-11f0-8cc2-3a7cb373875a"
},
"userName": "matti@esimerkki.com",
"displayName": "Matti Meikäläinen",
"active": true,
"emails": [
{
"value": "matti@esimerkki.com",
"primary": true
}
],
"phoneNumbers": [
{
"primary": true,
"value": "+46701740635",
"type": "work"
},
{
"ensisijainen": false,
"arvo": "+46313900642",
"tyyppi": "mobiili"
}
]
}

Käytä tätä päätepistettä varmistaaksesi, että käyttäjä on edelleen järjestelmässä, tai tarkistaaksesi yhteensopimattomat määritteet.

Etsi olemassa oleva ryhmä

Käytä externalId-attribuuttia ryhmän etsimiseen. Ohjeet Ryhmätunnus-kentän määrittämiseen hallintapaneelissa ovat kohdassa Ryhmien määrittäminen.

GET <base-url>/Groups?filter=ulkoinenId eq "b55a6bbf-fcc1-4d06-943e-896d963b649a"

Vastaus:

{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"Resurssit": [
{
"id": "19bd0074-9879-11f0-907c-3ec688ae4630",
"externalId": "b55a6bbf-fcc1-4d06-943e-896d963b649a",
"displayName": "Läntinen piirikunta -- kaikki-henkilökunta"
}
],
"startIndex": 1,
"itemsPerPage": 20,
"totalResults": 1
}

Tärkeitä huomioitavia asioita:

  • Jos tämä päätepiste palauttaa arvon "totalResults": 2 (tai minkä tahansa arvon, joka on suurempi kuin 1), liittämistä pidetään epäonnistuneena äläkä yritä käyttää luettelon ensimmäistä elementtiä vastaavana käyttäjänä.
  • Jos ryhmää ei löydy, luo ryhmä Cosafe-hallintapaneelista ja aseta ryhmän tunnus sisäiseksi järjestelmätunnukseksesi. Tästä kentästä tulee externalId-attribuutti.
  • Members-attribuuttia ei ole sisällytetty tähän luetteloon. Jäsenten hakemiseen käytä get a group endpoint -metodia.
  • Jos vastaus ei sisällä externalId-attribuuttia, ryhmän tunnusta ei ole määritetty oikein hallintapaneelissa. Katso Ryhmien määrittäminen.

Hanki ryhmä

Hae olemassa oleva ryhmä tekemällä GET-pyyntö /Groups-päätepisteeseen ryhmän id-määritteellä.

GET <base-url>/Ryhmät/19bd0074-9879-11f0-907c-3ec688ae4630

Vastaus:

{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
"id": "19bd0074-9879-11f0-907c-3ec688ae4630",
"externalId": "b55a6bbf-fcc1-4d06-943e-896d963b649a",
"meta": {
"resourceType": "Ryhmä",
"location": "/core/v1/scim/v2/Groups/19bd0074-9879-11f0-907c-3ec688ae4630"
},
"displayName": "Läntinen piirikunta -- kaikki-henkilökunta",
"members": [
{ "value": "86954066-afe8-11f0-8cc2-3a7cb373875a" },
{ "value": "cad12528-b981-11f0-93b9-ca6e7f736f08" },
{ "value": "e6a5a88a-b980-11f0-93b9-ca6e7f736f08" }
]
}

members-attribuutti sisältää luettelon kyseiseen ryhmään kuuluvista käyttäjätunnuksista (id) value-arvona.

Ryhmän nimessä etuliite "West County" ei ole osa ryhmän nimeä. Se on sen alatilin nimi, johon ryhmä kuuluu. Tämä etuliite lisätään IdP:ille, joiden on erotettava palautetut ryhmät niiden displayName-attribuutin perusteella, koska eri alatileillä on usein identtisen nimen omaavia ryhmiä.

Luo päätepisteitä

Luo käyttäjä

POST <base-url>/Käyttäjät

Pyynnön runko:

{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"active": true,
"userName": "matti@esimerkki.com",
"displayName": "Matti Meikäläinen",
"title": "Opettaja",
"phoneNumbers": [
{ "primary": true, "type": "työ", "value": "+46701740635" },
{ "primary": false, "type": "mobiili", "value": "+46313900642" }
]
}

Vastaus:

{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "de11042f-bbb5-11f0-90fb-3e40deb6141c",
"meta": {
"resourceType": "Käyttäjä",
"location": "/core/v1/scim/v2/Users/de11042f-bbb5-11f0-90fb-3e40deb6141c"
},
"userName": "john@example.com",
"displayName": "Matti Meikäläinen",
"title": "Opettaja",
"active": true,
"emails": [
{
"value": "matti@esimerkki.com",
"primary": true
}
],
"phoneNumbers": [
{
"value": "+46701740635",
"type": "work",
"primary": true
},
{
"arvo": "+46313900642",
"tyyppi": "mobiili",
"ensisijainen": false
}
]
}

Vastaus sisältää id-attribuutin, jota käytät kaikissa tämän käyttäjän myöhemmissä pyynnöissä.

Luo ryhmä

Luodaksesi ryhmän, luo se Cosafe-hallintapaneelissa ja aseta ryhmän tunnus sisäiseksi järjestelmätunnukseksi, josta tulee externalId.

Päivitä päätepisteitä

Suositeltava tapa muokata resurssia on käyttää PATCH-pyyntöä, jossa on operaatio attribuutille.

Ryhmän päivittäminen

KORJAUS <base-url>/Ryhmät/19bd0074-9879-11f0-907c-3ec688ae4630

Pyynnön runko:

{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operaatiot": [
{
"op": "replace",
"path": "displayName",
"value": "senior-staff"
}
]
}

PATCH-operaatiopyyntö voi sisältää useita toimintoja.

Tämä pyyntö korvaa "all-staff"-sanan "senior-staff"-sanalla.

Vastaus:

{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
"id": "19bd0074-9879-11f0-907c-3ec688ae4630",
"externalId": "b55a6bbf-fcc1-4d06-943e-896d963b649a",
"meta": {
"resourceType": "Ryhmä",
"location": "/core/v1/scim/v2/Groups/19bd0074-9879-11f0-907c-3ec688ae4630"
},
"displayName": "Läntinen piirikunta -- vanhempi-henkilöstö",
"members": [
{ "value": "86954066-afe8-11f0-8cc2-3a7cb373875a" },
{ "value": "cad12528-b981-11f0-93b9-ca6e7f736f08" },
{ "value": "e6a5a88a-b980-11f0-93b9-ca6e7f736f08" }
]
}

Päivitä ryhmän jäsenet

Voit päivittää ryhmän jäseniä kahdella tavalla:

1. Osittainen päivitys (lisää tai poista tiettyjä käyttäjiä)

Jäsenten lisääminen:

KORJAUS <base-url>/Ryhmät/19bd0074-9879-11f0-907c-3ec688ae4630

Pyynnön runko:

{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operaatiot": [
{
"op": "lisää",
"path": "jäsenet",
"arvo": [
{ "arvo": "5e2612e1-0d52-4261-ba00-46c144bcdf46" },
{ "arvo": "93025edd-af0d-4f04-8883-98d779469c50" }
]
}
]
}

Elementti value on käyttäjän id.

Vastaus:

{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
"id": "19bd0074-9879-11f0-907c-3ec688ae4630",
"externalId": "b55a6bbf-fcc1-4d06-943e-896d963b649a",
"meta": {
"resourceType": "Ryhmä",
"location": "/core/v1/scim/v2/Groups/19bd0074-9879-11f0-907c-3ec688ae4630"
},
"displayName": "Läntinen piirikunta -- vanhempi-henkilöstö",
"members": [
{ "value": "86954066-afe8-11f0-8cc2-3a7cb373875a" },
{ "value": "cad12528-b981-11f0-93b9-ca6e7f736f08" },
{ "value": "e6a5a88a-b980-11f0-93b9-ca6e7f736f08" },
{ "arvo": "5e2612e1-0d52-4261-ba00-46c144bcdf46" },
{ "arvo": "93025edd-af0d-4f04-8883-98d779469c50" }
]
}

Jäsenten poistaminen:

KORJAUS <base-url>/Ryhmät/19bd0074-9879-11f0-907c-3ec688ae4630

Pyynnön runko:

{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operaatiot": [
{
"op": "poista",
"path": "jäsenet",
"arvo": [
{ "arvo": "86954066-afe8-11f0-8cc2-3a7cb373875a" },
{ "arvo": "93025edd-af0d-4f04-8883-98d779469c50" }
]
}
]
}

Vastaus:

{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
"id": "19bd0074-9879-11f0-907c-3ec688ae4630",
"externalId": "b55a6bbf-fcc1-4d06-943e-896d963b649a",
"meta": {
"resourceType": "Ryhmä",
"location": "/core/v1/scim/v2/Groups/19bd0074-9879-11f0-907c-3ec688ae4630"
},
"displayName": "Läntinen piirikunta -- vanhempi-henkilöstö",
"members": [
{ "value": "cad12528-b981-11f0-93b9-ca6e7f736f08" },
{ "value": "e6a5a88a-b980-11f0-93b9-ca6e7f736f08" },
{ "value": "5e2612e1-0d52-4261-ba00-46c144bcdf46" }
]
}

2. Korvaa koko jäsentaulukko

Jos haluat mieluummin korvata koko members-taulukon, käytä PUT-pyyntöä.

Huomautus: Tätä lähestymistapaa ei suositella ryhmille, joissa on paljon jäseniä. Suorituskyvyn vuoksi käytä osittaisia päivityksiä lisää/poista-toimintojen kautta vain muuttuneille jäsenyyksille, myös ryhmän alkutäytön aikana.

PUT <base-url>/Ryhmät/19bd0074-9879-11f0-907c-3ec688ae4630

Pyynnön runko:

{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
"id": "19bd0074-9879-11f0-907c-3ec688ae4630",
"externalId": "b55a6bbf-fcc1-4d06-943e-896d963b649a",
"displayName": "vanhempi-henkilöstö",
"members": [
{ "value": "86954066-afe8-11f0-8cc2-3a7cb373875a" },}
{ "arvo": "cad12528-b981-11f0-93b9-ca6e7f736f08" },
{ "arvo": "e6a5a88a-b980-11f0-93b9-ca6e7f736f08" },
{ "arvo": "5e2612e1-0d52-4261-ba00-46c144bcdf46" },
{ "arvo": "93025edd-af0d-4f04-8883-98d779469c50" }
]
}

Vastaus:

{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
"id": "19bd0074-9879-11f0-907c-3ec688ae4630",
"externalId": "b55a6bbf-fcc1-4d06-943e-896d963b649a",
"meta": {
"resourceType": "Ryhmä",
"location": "/core/v1/scim/v2/Groups/19bd0074-9879-11f0-907c-3ec688ae4630"
},
"displayName": "Läntinen piirikunta -- vanhempi-henkilöstö",
"members": [
{ "value": "86954066-afe8-11f0-8cc2-3a7cb373875a" },
{ "value": "cad12528-b981-11f0-93b9-ca6e7f736f08" },
{ "value": "e6a5a88a-b980-11f0-93b9-ca6e7f736f08" },
{ "arvo": "5e2612e1-0d52-4261-ba00-46c144bcdf46" },
{ "arvo": "93025edd-af0d-4f04-8883-98d779469c50" }
]
}

Päivitä käyttäjän tavalliset määritteet

KORJAUS <base-url>/Käyttäjät/de11042f-bbb5-11f0-90fb-3e40deb6141c

Pyynnön runko:

{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operaatiot": [
{
"op": "replace",
"path": "displayName",
"value": "Matti Meikäläinen nuorempi."
}
]
}

Vastaus:

{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "de11042f-bbb5-11f0-90fb-3e40deb6141c",
"meta": {
"resourceType": "Käyttäjä",
"location": "/core/v1/scim/v2/Users/de11042f-bbb5-11f0-90fb-3e40deb6141c"
},
"userName": "john@example.com",
"displayName": "John Doe Jr.",
"title": "Opettaja",
"active": true,
"emails": [
{
"value": "john@example.com",
"primary": true
}
],
"phoneNumbers": [
{
"value": "+46701740635",
"type": "work",
"primary": true
},
{
"arvo": "+46313900642",
"tyyppi": "mobiili",
"ensisijainen": false
}
]
}

Päivitä käyttäjän moniarvoiset määritteet

1. Vaihda puhelinnumerot

KORJAUS <base-url>/Käyttäjät/de11042f-bbb5-11f0-90fb-3e40deb6141c

Pyynnön runko:

{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operaatiot": [
{
"op": "korvaa",
"path": "puhelinnumerot",
"arvo": [
{ "primary": true, "arvo": "+46701740635" },
{ "primary": false, "arvo": "+46406280473" }
]
}
]
}

Vastaus:

{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "de11042f-bbb5-11f0-90fb-3e40deb6141c",
"meta": {
"resourceType": "Käyttäjä",
"location": "/core/v1/scim/v2/Users/de11042f-bbb5-11f0-90fb-3e40deb6141c"
},
"userName": "john@example.com",
"displayName": "John Doe Jr.",
"title": "Opettaja",
"active": true,
"emails": [
{
"value": "john@example.com",
"primary": true
}
],
"phoneNumbers": [
{
"value": "+46701740635",
"type": "work",
"primary": true
},
{
"arvo": "+46406280473",
"tyyppi": "mobiili",
"ensisijainen": false
}
]
}

2. Korvaa puhelinnumerot poistamalla

KORJAUS <base-url>/Käyttäjät/de11042f-bbb5-11f0-90fb-3e40deb6141c

Pyynnön runko:

{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operaatiot": [
{
"op": "korvaa",
"path": "puhelinnumerot",
"arvo": [{ "primary": true, "arvo": "+46701740635" }]
}
]
}

Vastaus:

{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "de11042f-bbb5-11f0-90fb-3e40deb6141c",
"meta": {
"resourceType": "Käyttäjä",
"location": "/core/v1/scim/v2/Users/de11042f-bbb5-11f0-90fb-3e40deb6141c"
},
"userName": "john@example.com",
"displayName": "John Doe Jr.",
"title": "Opettaja",
"active": true,
"emails": [
{
"value": "john@example.com",
"primary": true
}
],
"phoneNumbers": [
{
"value": "+46701740635",
"type": "work",
"primary": true
},
{
"arvo": "",
"tyyppi": "mobiili",
"ensisijainen": false
}
]
}

3. Entra-yhteensopiva formaatti

API tukee myös Entran lähettämää muotoa:

KORJAUS <base-url>/Käyttäjät/de11042f-bbb5-11f0-90fb-3e40deb6141c

Pyynnön runko:

{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operaatiot": [
{
"op": "korvaa",
"path": "puhelinnumerot[type eq \"mobile\"].value",
"value": "+46980319247"
}
]
}

Vastaus:

{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "de11042f-bbb5-11f0-90fb-3e40deb6141c",
"meta": {
"resourceType": "Käyttäjä",
"location": "/core/v1/scim/v2/Users/de11042f-bbb5-11f0-90fb-3e40deb6141c"
},
"userName": "john@example.com",
"displayName": "John Doe Jr.",
"title": "Opettaja",
"active": true,
"emails": [
{
"value": "john@example.com",
"primary": true
}
],
"phoneNumbers": [
{
"value": "+46701740635",
"type": "work",
"primary": true
},
{
"arvo": "+46980319247",
"tyyppi": "mobiili",
"ensisijainen": false
}
]
}

Poista päätepisteet

Käyttäjän poistaminen

POISTA <base-url>/Käyttäjät/de11042f-bbb5-11f0-90fb-3e40deb6141c

Vastaus:

204 Ei sisältöä

Tämän resurssin myöhemmät GET-pyynnöt ID:n perusteella palauttavat virheen 404 Not Found.

Ryhmän poistaminen

POISTA <base-url>/Ryhmät/19bd0074-9879-11f0-907c-3ec688ae4630

Vastaus:

204 Ei sisältöä

Tämän resurssin myöhemmät GET-pyynnöt ID:n perusteella palauttavat virheen 404 Not Found.