SCIM provisioning

Groups

GET /scim/v2/Groups

SCIM 2.0 list/query Groups

This endpoint does not require authentication.

curl
curl -X GET "https://appliance.example.com/api/v1/scim/v2/Groups"
PHP
<?php

$url = 'https://appliance.example.com/api/v1/scim/v2/Groups';
$headers = [
];

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_RETURNTRANSFER => true,
]);

$response = json_decode(curl_exec($ch), true);
curl_close($ch);
Python
import requests


response = requests.get("https://appliance.example.com/api/v1/scim/v2/Groups")
response.raise_for_status()
print(response.json())
JavaScript
const response = await fetch('https://appliance.example.com/api/v1/scim/v2/Groups', {
  method: 'GET',
});

const data = await response.json();
Response
{
  "schemas": [
    "urn:ietf:params:scim:api:messages:2.0:ListResponse"
  ],
  "totalResults": 1,
  "startIndex": 1,
  "itemsPerPage": 1,
  "Resources": [
    {
      "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:Group"
      ],
      "id": "7c3-11a-902-4de",
      "externalId": "b21-77d-004-9ac",
      "displayName": "Administrators",
      "members": [
        {
          "value": "5e1-db5-4e8-c26",
          "display": "jdoe@loadbalancer.org"
        }
      ],
      "meta": {
        "resourceType": "Group",
        "location": "/scim/v2/Groups/7c3-11a-902-4de"
      }
    }
  ]
}

POST /scim/v2/Groups

SCIM 2.0 create Group

This endpoint does not require authentication.

This change is staged. Send PUT /services/apply to apply it.

curl
curl -X POST "https://appliance.example.com/api/v1/scim/v2/Groups"
PHP
<?php

$url = 'https://appliance.example.com/api/v1/scim/v2/Groups';
$headers = [
];

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_RETURNTRANSFER => true,
]);

$response = json_decode(curl_exec($ch), true);
curl_close($ch);
Python
import requests


response = requests.post("https://appliance.example.com/api/v1/scim/v2/Groups")
response.raise_for_status()
print(response.json())
JavaScript
const response = await fetch('https://appliance.example.com/api/v1/scim/v2/Groups', {
  method: 'POST',
});

const data = await response.json();
Response
{
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Group"
  ],
  "id": "7c3-11a-902-4de",
  "externalId": "b21-77d-004-9ac",
  "displayName": "Administrators",
  "members": [
    {
      "value": "5e1-db5-4e8-c26",
      "display": "jdoe@loadbalancer.org"
    }
  ],
  "meta": {
    "resourceType": "Group",
    "location": "/scim/v2/Groups/7c3-11a-902-4de"
  }
}

Groups by ID

GET /scim/v2/Groups/{id}

SCIM 2.0 get Group by id

This endpoint does not require authentication.

Path parameters
id string Required

The id of the Group.

curl
curl -X GET "https://appliance.example.com/api/v1/scim/v2/Groups/{id}"
PHP
<?php

$url = 'https://appliance.example.com/api/v1/scim/v2/Groups/{id}';
$headers = [
];

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_RETURNTRANSFER => true,
]);

$response = json_decode(curl_exec($ch), true);
curl_close($ch);
Python
import requests


response = requests.get("https://appliance.example.com/api/v1/scim/v2/Groups/{id}")
response.raise_for_status()
print(response.json())
JavaScript
const response = await fetch('https://appliance.example.com/api/v1/scim/v2/Groups/{id}', {
  method: 'GET',
});

const data = await response.json();
Response
{
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Group"
  ],
  "id": "7c3-11a-902-4de",
  "externalId": "b21-77d-004-9ac",
  "displayName": "Administrators",
  "members": [
    {
      "value": "5e1-db5-4e8-c26",
      "display": "jdoe@loadbalancer.org"
    }
  ],
  "meta": {
    "resourceType": "Group",
    "location": "/scim/v2/Groups/7c3-11a-902-4de"
  }
}

PATCH /scim/v2/Groups/{id}

SCIM 2.0 patch Group (membership / rename)

This endpoint does not require authentication.

This change is staged. Send PUT /services/apply to apply it.

Path parameters
id string Required

The id of the Group.

curl
curl -X PATCH "https://appliance.example.com/api/v1/scim/v2/Groups/{id}"
PHP
<?php

$url = 'https://appliance.example.com/api/v1/scim/v2/Groups/{id}';
$headers = [
];

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'PATCH',
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_RETURNTRANSFER => true,
]);

$response = json_decode(curl_exec($ch), true);
curl_close($ch);
Python
import requests


response = requests.patch("https://appliance.example.com/api/v1/scim/v2/Groups/{id}")
response.raise_for_status()
print(response.json())
JavaScript
const response = await fetch('https://appliance.example.com/api/v1/scim/v2/Groups/{id}', {
  method: 'PATCH',
});

const data = await response.json();
Response
{
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Group"
  ],
  "id": "7c3-11a-902-4de",
  "externalId": "b21-77d-004-9ac",
  "displayName": "Administrators",
  "members": [
    {
      "value": "5e1-db5-4e8-c26",
      "display": "jdoe@loadbalancer.org"
    }
  ],
  "meta": {
    "resourceType": "Group",
    "location": "/scim/v2/Groups/7c3-11a-902-4de"
  }
}

DELETE /scim/v2/Groups/{id}

SCIM 2.0 delete Group

This endpoint does not require authentication.

This change is staged. Send PUT /services/apply to apply it.

Path parameters
id string Required

The id of the Group.

curl
curl -X DELETE "https://appliance.example.com/api/v1/scim/v2/Groups/{id}"
PHP
<?php

$url = 'https://appliance.example.com/api/v1/scim/v2/Groups/{id}';
$headers = [
];

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'DELETE',
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_RETURNTRANSFER => true,
]);

$response = json_decode(curl_exec($ch), true);
curl_close($ch);
Python
import requests


response = requests.delete("https://appliance.example.com/api/v1/scim/v2/Groups/{id}")
response.raise_for_status()
print(response.json())
JavaScript
const response = await fetch('https://appliance.example.com/api/v1/scim/v2/Groups/{id}', {
  method: 'DELETE',
});

const data = await response.json();
Response
{
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Group"
  ],
  "id": "7c3-11a-902-4de",
  "meta": {
    "resourceType": "Group",
    "location": "/scim/v2/Groups/7c3-11a-902-4de"
  }
}

List the SCIM resource types

GET /scim/v2/ResourceTypes

SCIM 2.0 ResourceTypes (bearer-authenticated)

This endpoint does not require authentication.

curl
curl -X GET "https://appliance.example.com/api/v1/scim/v2/ResourceTypes"
PHP
<?php

$url = 'https://appliance.example.com/api/v1/scim/v2/ResourceTypes';
$headers = [
];

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_RETURNTRANSFER => true,
]);

$response = json_decode(curl_exec($ch), true);
curl_close($ch);
Python
import requests


response = requests.get("https://appliance.example.com/api/v1/scim/v2/ResourceTypes")
response.raise_for_status()
print(response.json())
JavaScript
const response = await fetch('https://appliance.example.com/api/v1/scim/v2/ResourceTypes', {
  method: 'GET',
});

const data = await response.json();
Response
{
  "schemas": [
    "urn:ietf:params:scim:api:messages:2.0:ListResponse"
  ],
  "totalResults": 1,
  "startIndex": 1,
  "itemsPerPage": 1,
  "Resources": [
    {
      "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:ResourceType"
      ],
      "id": "User",
      "name": "User",
      "endpoint": "/Users",
      "schema": "urn:ietf:params:scim:schemas:core:2.0:User",
      "meta": {
        "resourceType": "ResourceType",
        "location": "/scim/v2/ResourceTypes/User"
      }
    }
  ]
}

List the SCIM schemas

GET /scim/v2/Schemas

SCIM 2.0 Schemas (bearer-authenticated)

This endpoint does not require authentication.

curl
curl -X GET "https://appliance.example.com/api/v1/scim/v2/Schemas"
PHP
<?php

$url = 'https://appliance.example.com/api/v1/scim/v2/Schemas';
$headers = [
];

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_RETURNTRANSFER => true,
]);

$response = json_decode(curl_exec($ch), true);
curl_close($ch);
Python
import requests


response = requests.get("https://appliance.example.com/api/v1/scim/v2/Schemas")
response.raise_for_status()
print(response.json())
JavaScript
const response = await fetch('https://appliance.example.com/api/v1/scim/v2/Schemas', {
  method: 'GET',
});

const data = await response.json();
Response
{
  "schemas": [
    "urn:ietf:params:scim:api:messages:2.0:ListResponse"
  ],
  "totalResults": 1,
  "startIndex": 1,
  "itemsPerPage": 1,
  "Resources": [
    {
      "id": "urn:ietf:params:scim:schemas:core:2.0:User",
      "name": "User",
      "meta": {
        "resourceType": "Schema",
        "location": "/scim/v2/Schemas/urn:ietf:params:scim:schemas:core:2.0:User"
      }
    }
  ]
}

Get the SCIM service provider configuration

GET /scim/v2/ServiceProviderConfig

SCIM 2.0 ServiceProviderConfig (bearer-authenticated)

This endpoint does not require authentication.

curl
curl -X GET "https://appliance.example.com/api/v1/scim/v2/ServiceProviderConfig"
PHP
<?php

$url = 'https://appliance.example.com/api/v1/scim/v2/ServiceProviderConfig';
$headers = [
];

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_RETURNTRANSFER => true,
]);

$response = json_decode(curl_exec($ch), true);
curl_close($ch);
Python
import requests


response = requests.get("https://appliance.example.com/api/v1/scim/v2/ServiceProviderConfig")
response.raise_for_status()
print(response.json())
JavaScript
const response = await fetch('https://appliance.example.com/api/v1/scim/v2/ServiceProviderConfig', {
  method: 'GET',
});

const data = await response.json();
Response
{
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig"
  ],
  "patch": {
    "supported": true
  },
  "filter": {
    "supported": true,
    "maxResults": 200
  },
  "authenticationSchemes": [
    {
      "type": "oauthbearertoken",
      "name": "OAuth Bearer Token"
    }
  ],
  "meta": {
    "resourceType": "ServiceProviderConfig",
    "location": "/scim/v2/ServiceProviderConfig"
  }
}

Users

GET /scim/v2/Users

SCIM 2.0 list/query Users

This endpoint does not require authentication.

curl
curl -X GET "https://appliance.example.com/api/v1/scim/v2/Users"
PHP
<?php

$url = 'https://appliance.example.com/api/v1/scim/v2/Users';
$headers = [
];

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_RETURNTRANSFER => true,
]);

$response = json_decode(curl_exec($ch), true);
curl_close($ch);
Python
import requests


response = requests.get("https://appliance.example.com/api/v1/scim/v2/Users")
response.raise_for_status()
print(response.json())
JavaScript
const response = await fetch('https://appliance.example.com/api/v1/scim/v2/Users', {
  method: 'GET',
});

const data = await response.json();
Response
{
  "schemas": [
    "urn:ietf:params:scim:api:messages:2.0:ListResponse"
  ],
  "totalResults": 1,
  "startIndex": 1,
  "itemsPerPage": 1,
  "Resources": [
    {
      "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:User"
      ],
      "id": "5e1-db5-4e8-c26",
      "externalId": "a7f-9c2-11d-004",
      "userName": "jdoe@loadbalancer.org",
      "name": {
        "givenName": "John",
        "familyName": "Doe"
      },
      "emails": [
        {
          "value": "jdoe@loadbalancer.org",
          "primary": true
        }
      ],
      "active": true,
      "meta": {
        "resourceType": "User",
        "location": "/scim/v2/Users/5e1-db5-4e8-c26"
      }
    }
  ]
}

POST /scim/v2/Users

SCIM 2.0 create User

This endpoint does not require authentication.

This change is staged. Send PUT /services/apply to apply it.

curl
curl -X POST "https://appliance.example.com/api/v1/scim/v2/Users"
PHP
<?php

$url = 'https://appliance.example.com/api/v1/scim/v2/Users';
$headers = [
];

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_RETURNTRANSFER => true,
]);

$response = json_decode(curl_exec($ch), true);
curl_close($ch);
Python
import requests


response = requests.post("https://appliance.example.com/api/v1/scim/v2/Users")
response.raise_for_status()
print(response.json())
JavaScript
const response = await fetch('https://appliance.example.com/api/v1/scim/v2/Users', {
  method: 'POST',
});

const data = await response.json();
Response
{
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:User"
  ],
  "id": "5e1-db5-4e8-c26",
  "externalId": "a7f-9c2-11d-004",
  "userName": "jdoe@loadbalancer.org",
  "name": {
    "givenName": "John",
    "familyName": "Doe"
  },
  "emails": [
    {
      "value": "jdoe@loadbalancer.org",
      "primary": true
    }
  ],
  "active": true,
  "meta": {
    "resourceType": "User",
    "location": "/scim/v2/Users/5e1-db5-4e8-c26"
  }
}

Users by ID

GET /scim/v2/Users/{id}

SCIM 2.0 get User by id

This endpoint does not require authentication.

Path parameters
id string Required

The id of the User.

curl
curl -X GET "https://appliance.example.com/api/v1/scim/v2/Users/{id}"
PHP
<?php

$url = 'https://appliance.example.com/api/v1/scim/v2/Users/{id}';
$headers = [
];

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_RETURNTRANSFER => true,
]);

$response = json_decode(curl_exec($ch), true);
curl_close($ch);
Python
import requests


response = requests.get("https://appliance.example.com/api/v1/scim/v2/Users/{id}")
response.raise_for_status()
print(response.json())
JavaScript
const response = await fetch('https://appliance.example.com/api/v1/scim/v2/Users/{id}', {
  method: 'GET',
});

const data = await response.json();
Response
{
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:User"
  ],
  "id": "5e1-db5-4e8-c26",
  "externalId": "a7f-9c2-11d-004",
  "userName": "jdoe@loadbalancer.org",
  "name": {
    "givenName": "John",
    "familyName": "Doe"
  },
  "emails": [
    {
      "value": "jdoe@loadbalancer.org",
      "primary": true
    }
  ],
  "active": true,
  "meta": {
    "resourceType": "User",
    "location": "/scim/v2/Users/5e1-db5-4e8-c26"
  }
}

PUT /scim/v2/Users/{id}

SCIM 2.0 replace User

This endpoint does not require authentication.

This change is staged. Send PUT /services/apply to apply it.

Path parameters
id string Required

The id of the User.

curl
curl -X PUT "https://appliance.example.com/api/v1/scim/v2/Users/{id}"
PHP
<?php

$url = 'https://appliance.example.com/api/v1/scim/v2/Users/{id}';
$headers = [
];

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'PUT',
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_RETURNTRANSFER => true,
]);

$response = json_decode(curl_exec($ch), true);
curl_close($ch);
Python
import requests


response = requests.put("https://appliance.example.com/api/v1/scim/v2/Users/{id}")
response.raise_for_status()
print(response.json())
JavaScript
const response = await fetch('https://appliance.example.com/api/v1/scim/v2/Users/{id}', {
  method: 'PUT',
});

const data = await response.json();
Response
{
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:User"
  ],
  "id": "5e1-db5-4e8-c26",
  "externalId": "a7f-9c2-11d-004",
  "userName": "jdoe@loadbalancer.org",
  "name": {
    "givenName": "John",
    "familyName": "Doe"
  },
  "emails": [
    {
      "value": "jdoe@loadbalancer.org",
      "primary": true
    }
  ],
  "active": true,
  "meta": {
    "resourceType": "User",
    "location": "/scim/v2/Users/5e1-db5-4e8-c26"
  }
}

PATCH /scim/v2/Users/{id}

SCIM 2.0 patch User (update / deactivate)

This endpoint does not require authentication.

This change is staged. Send PUT /services/apply to apply it.

Path parameters
id string Required

The id of the User.

curl
curl -X PATCH "https://appliance.example.com/api/v1/scim/v2/Users/{id}"
PHP
<?php

$url = 'https://appliance.example.com/api/v1/scim/v2/Users/{id}';
$headers = [
];

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'PATCH',
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_RETURNTRANSFER => true,
]);

$response = json_decode(curl_exec($ch), true);
curl_close($ch);
Python
import requests


response = requests.patch("https://appliance.example.com/api/v1/scim/v2/Users/{id}")
response.raise_for_status()
print(response.json())
JavaScript
const response = await fetch('https://appliance.example.com/api/v1/scim/v2/Users/{id}', {
  method: 'PATCH',
});

const data = await response.json();
Response
{
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:User"
  ],
  "id": "5e1-db5-4e8-c26",
  "externalId": "a7f-9c2-11d-004",
  "userName": "jdoe@loadbalancer.org",
  "name": {
    "givenName": "John",
    "familyName": "Doe"
  },
  "emails": [
    {
      "value": "jdoe@loadbalancer.org",
      "primary": true
    }
  ],
  "active": true,
  "meta": {
    "resourceType": "User",
    "location": "/scim/v2/Users/5e1-db5-4e8-c26"
  }
}