SCIM

Search Alt+S

Privacy Bee supports System for Cross-domain Identity Management (SCIM) which allows for automated user provisioning, updates, and de-provisioning. This API adheres to the SCIM 2.0 standard, ensuring compatibility with various identity providers(IdP).

SCIM 2.0 is a standardized protocol for managing user identities across different domains and systems. It defines a RESTful API and a data model for user and group management.

Authentication

All requests to the SCIM API must be authenticated using an API key. Include the API key in the Authorization header as a Bearer token.

Authorization: Bearer {api_key}

POST /users

Creates a new user in the system.

Example Request:

curl -X POST https://privacybee.com/api/scim/users \
  -H "Authorization: Bearer {API_KEY}" \
  -H "Content-Type: application/json" \ 
  -d '{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], 
    "userName": "jdoe",  
    "name": { 
      "givenName": "John",
      "familyName": "Doe"  
    },
    "emails": [
      { 
        "value": "jdoe@example.com", 
        "primary": true
      }
    ]  
  }'

Example Response

HTTP/1.1 201 Created
Content-Type: application/json

{
  "id": "2819c223-7f76-453a-919d-413861904646", 
  "userName": "jdoe",
  "name": { 
    "givenName": "John",
    "familyName": "Doe"  
  },
  "emails": [
    {
      "value": "jdoe@example.com", 
      "primary": true  
    }
  ],
  "meta": { 
    "resourceType": "User", 
    "created": "2024-09-05T16:49:57Z",
    "lastModified": "2024-09-05T16:49:57Z"
  }
}

GET /users

Retrieve a list of users.

Example Request

curl -X GET https://privacybee/api/scim/users \  
-H "Authorization: Bearer your_token" 

Example Response

HTTP/1.1 200 OK
Content-Type: application/json

{ 
  "totalResults": 2, 
  "itemsPerPage": 2, 
  "startIndex": 1, 
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
  "Resources": [
    {
      "id": "2819c223-7f76-453a-919d-413861904646",
      "userName": "jdoe",
      "name": {
        "givenName": "John",
        "familyName": "Doe" 
      }, 
      "emails": [
        {
          "value": "jdoe@example.com",
          "primary": true
        }
      ]
    },
    { 
      "id": "902c246b-6245-4b5c-8d1d-4f4b6b6c8d7d",
      "userName": "asmith",
      "name": {
        "givenName": "Alice",
        "familyName": "Smith"
      }, 
      "emails": [
        { 
          "value": "asmith@example.com", 
          "primary": true
        }
      ]
    } 
  ]
} 

GET /user/<id>

Retrieve a specific user by ID

Example Request

curl -X GET "https://privacybee/api/scim/v2/users/<id>" \
     -H "Authorization: Bearer {API_KEY}" \
     -H "Content-Type: application/json"

Example Response

{
  "id": "2819c223-7f76-453a-919d-413861904646",
  "userName": "jdoe",
  "name": {
    "givenName": "John", 
    "familyName": "Doe"
  },
  "emails": [
    {
      "value": "jdoe@example.com",
      "primary": true
    }
  ],
  "meta": {
    "resourceType": "User",
    "created": "2024-09-05T16:49:57Z",
    "lastModified": "2024-09-05T16:49:57Z"
  } 
}

PUT /user/<id>

Update a Specific User by ID

Example Request

curl -X PUT https://api.privacybee.com/scim/v2/users/{id} \
  -H "Authorization: Bearer {API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], 
    "userName": "jdoe",
    "name": {
      "givenName": "John",
      "familyName": "Doe"
    }, 
    "emails": [
      {
        "value": "jdoe@example.com",
        "primary": true
      }
    ]
  }'

Example Response

{
  "id": "2819c223-7f76-453a-919d-413861904646",
  "userName": "jdoe",
  "name": {
    "givenName": "John",
    "familyName": "Doe"
  },
  "emails": [  
    {
      "value": "jdoe@example.com", 
      "primary": true
    }
  ],
  "meta": { 
    "resourceType": "User", 
    "created": "2024-09-05T16:49:57Z",
    "lastModified": "2024-09-05T16:49:57Z"
  }
}

DELETE /user/<id>

Delete a Specific User by ID

Example Request

curl -X DELETE https://privacybee/api/scim/users/< id> \
  -H "Authorization: Bearer {API_KEY}" \ 
  -H "Content-Type: application/json"  

Example Response

HTTP/1.1 204 No Content

GET /usergroups

Retrieve a list of Groups

Example Request

curl -X GET https://api.privacybee.com/scim/v2/Groups \
  -H "Authorization: Bearer {API_KEY}" \ 
  -H "Content-Type: application/json"

Example Response

{ 
  "totalResults": 1,
  "itemsPerPage": 1, 
  "startIndex": 1,
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
  "Resources": [
    {
      "id": "e9e30dba-f08f-4109-8486-d5c6a331660a", 
      "displayName": "Admins",
      "members": [
        {
          "value": "2819c223-7f76-453a-919d-413861904646",
          "display": "jdoe"
        }
      ]
    }
  ]
}

POST /usergroups

Create a New Group

Example Request

curl -X POST https://api.privacybee.com/scim/v2/Groups \ 
  -H "Authorization: Bearer {API_KEY}" \
  -H "Content-Type: application/json" \ 
  -d '{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
    "displayName": "Admins",
    "members": [
      { 
        "value": "2819c223-7f76-453a-919d-413861904646"  
      } 
    ] 
  }'

Example Response

{ 
  "id": "e9e30dba-f08f-4109-8486-d5c6a331660a",
  "displayName": "Admins",
  "members": [
    {
      "value": "2819c223-7f76-453a-919d-413861904646", 
      "display": "jdoe"
    }
  ],
  "meta": { 
    "resourceType": "Group",
    "created": "2024-09-05T16:49:57Z", 
    "lastModified": "2024-09-05T16:49:57Z"
  }
}

DELETE /usergroup/<id>

Retrieve a Specific Group by ID

Example Request

curl -X GET https://api.privacybee.com/scim/v2/Groups/{id} \
  -H "Authorization: Bearer {API_KEY}" \ 
  -H "Content-Type: application/json" 

Example Response

{
  "id": "e9e30dba-f08f-4109-8486-d5c6a331660a",
  "displayName": "Admins", 
  "members": [ 
    {
      "value": "2819c223-7f76-453a-919d-413861904646",
      "display": "jdoe"
    }
  ],
  "meta": {
    "resourceType": "Group", 
    "created": "2024-09-05T16:49:57Z", 
    "lastModified": "2024-09-05T16:49:57Z" 
  }
}

PUT /user/<id>

Update a Specific Group by ID

Example Request

curl -X PUT https://api.privacybee.com/scim/v2/Groups/{id} \
  -H "Authorization: Bearer {API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{ 
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
    "displayName": "Admins",
    "members": [
      {
        "value": "2819c223-7f76-453a-919d-413861904646"
      } 
    ] 
  }'

Example Response

{
  "id": "e9e30dba-f08f-4109-8486-d5c6a331660a",
  "displayName": "Admins",
  "members": [
    {
      "value": "2819c223-7f76-453a-919d-413861904646",
      "display": "jdoe"
    }
  ],
  "meta": {
    "resourceType": "Group",
    "created": "2024-09-05T16:49:57Z",
    "lastModified": "2024-09-05T16:49:57Z"
  }
}