Endurance

SCIM provisioning

Groups

SCIM 2.0 list/query Groups

GET /scim/v2/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();
Bruno
meta {
  name: List the SCIM groups
  type: http
  seq: 1
}

get {
  url: https://{{node-0}}:{{port}}/api/v1/scim/v2/Groups
  body: none
  auth: none
}
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"
      }
    }
  ]
}

SCIM 2.0 create Group

POST /scim/v2/Groups

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();
Bruno
meta {
  name: Create a SCIM group
  type: http
  seq: 1
}

post {
  url: https://{{node-0}}:{{port}}/api/v1/scim/v2/Groups
  body: none
  auth: none
}
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

SCIM 2.0 get Group by id

GET /scim/v2/Groups/{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();
Bruno
meta {
  name: Get a SCIM group
  type: http
  seq: 1
}

get {
  url: https://{{node-0}}:{{port}}/api/v1/scim/v2/Groups/{id}
  body: none
  auth: none
}
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"
  }
}

SCIM 2.0 patch Group (membership / rename)

PATCH /scim/v2/Groups/{id}

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();
Bruno
meta {
  name: Update a SCIM group
  type: http
  seq: 1
}

patch {
  url: https://{{node-0}}:{{port}}/api/v1/scim/v2/Groups/{id}
  body: none
  auth: none
}
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"
  }
}

SCIM 2.0 delete Group

DELETE /scim/v2/Groups/{id}

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();
Bruno
meta {
  name: Delete a SCIM group
  type: http
  seq: 1
}

delete {
  url: https://{{node-0}}:{{port}}/api/v1/scim/v2/Groups/{id}
  body: none
  auth: none
}
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

SCIM 2.0 ResourceTypes (bearer-authenticated)

GET /scim/v2/ResourceTypes

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();
Bruno
meta {
  name: List the SCIM resource types
  type: http
  seq: 1
}

get {
  url: https://{{node-0}}:{{port}}/api/v1/scim/v2/ResourceTypes
  body: none
  auth: none
}
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

SCIM 2.0 Schemas (bearer-authenticated)

GET /scim/v2/Schemas

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();
Bruno
meta {
  name: List the SCIM schemas
  type: http
  seq: 1
}

get {
  url: https://{{node-0}}:{{port}}/api/v1/scim/v2/Schemas
  body: none
  auth: none
}
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

SCIM 2.0 ServiceProviderConfig (bearer-authenticated)

GET /scim/v2/ServiceProviderConfig

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();
Bruno
meta {
  name: Get the SCIM service provider configuration
  type: http
  seq: 1
}

get {
  url: https://{{node-0}}:{{port}}/api/v1/scim/v2/ServiceProviderConfig
  body: none
  auth: none
}
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

SCIM 2.0 list/query Users

GET /scim/v2/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();
Bruno
meta {
  name: List the SCIM users
  type: http
  seq: 1
}

get {
  url: https://{{node-0}}:{{port}}/api/v1/scim/v2/Users
  body: none
  auth: none
}
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"
      }
    }
  ]
}

SCIM 2.0 create User

POST /scim/v2/Users

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();
Bruno
meta {
  name: Create a SCIM user
  type: http
  seq: 1
}

post {
  url: https://{{node-0}}:{{port}}/api/v1/scim/v2/Users
  body: none
  auth: none
}
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

SCIM 2.0 get User by id

GET /scim/v2/Users/{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();
Bruno
meta {
  name: Get a SCIM user
  type: http
  seq: 1
}

get {
  url: https://{{node-0}}:{{port}}/api/v1/scim/v2/Users/{id}
  body: none
  auth: none
}
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"
  }
}

SCIM 2.0 replace User

PUT /scim/v2/Users/{id}

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();
Bruno
meta {
  name: Replace a SCIM user
  type: http
  seq: 1
}

put {
  url: https://{{node-0}}:{{port}}/api/v1/scim/v2/Users/{id}
  body: none
  auth: none
}
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"
  }
}

SCIM 2.0 patch User (update / deactivate)

PATCH /scim/v2/Users/{id}

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();
Bruno
meta {
  name: Update a SCIM user
  type: http
  seq: 1
}

patch {
  url: https://{{node-0}}:{{port}}/api/v1/scim/v2/Users/{id}
  body: none
  auth: none
}
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"
  }
}