# SCIM

# Introduction to SCIM

## What is SCIM?

<p class="callout success">SCIM is a standard created to simplify user management in the cloud by defining a schema for representing users and groups with a REST API for all the necessary CRUD operations.</p>

This standard could be extended to other resources like accounts, roles, etc.

Soffid is compatible with SCIM 2 protocol but uses its owns schema for users, groups, roles and so one. That is why Soffid implements SCIM protocols (RFC7644 and EFC 7644), but not SCIM core schema (RFC7643).

## Information about SCIM

<p class="callout info">All the information about SCIM is published in the following link: [http://www.simplecloud.info/](http://www.simplecloud.info/)</p>

Currently, the last available version of the standard is SCIM 2.0.

<p class="callout info">The most relevant link about the specification of this protocol is: [https://tools.ietf.org/html/rfc7644](https://tools.ietf.org/html/rfc7644)</p>

## Use cases of SCIM

SCIM could be used to create a new identity from third part application assign or revoke permissions, create or disable accounts, or even take part of new or existing workflows.

You can leverage SCIM protocol to extend current Soffid functionality adapting the Identity Platform to your needs.

## Example of SCIM

SCIM uses JSON specification for the data model containing the requests and responses. For instance, the data information of a user would be:

```JSON
{
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:User"
  ],
  "userName": "bjensen",
  "externalId": "bjensen",
  "name": {
    "formatted": "Ms. Barbara J Jensen III",
    "familyName": "Jensen",
    "givenName": "Barbara"
  }
}
```

SCIM also uses REST specification for HTTP communication between clients and servers. For instance, a request to create a user would be:

```
POST /Users  HTTP/1.1
Host: example.com
Accept: application/scim+json
Content-Type: application/scim+json
Authorization: Bearer h480djs93hd8
Content-Length: ...
```

The HTTP codes are very important in the responses. For instance:

```
HTTP/1.1 200 Response is ok
HTTP/1.1 201 Resource created
HTTP/1.1 404 Resource not found
etc
```

# SCIM Operations

## HTTP Method

<table class="confluenceTable tablesorter tablesorter-default stickyTableHeaders" id="bkmrk-get-retrieves-one-or" role="grid"><tbody><tr style="height: 29px;"><td style="width: 16.6667%; height: 29px;">GET

</td><td style="width: 83.3333%; height: 29px;">Retrieves one or more complete or partial resources.

</td></tr><tr style="height: 29px;"><td style="width: 16.6667%; height: 29px;">POST

</td><td style="width: 83.3333%; height: 29px;">Depending on the endpoint, creates new resources, creates a search request, or MAY be used to bulk-modify resources.

</td></tr><tr style="height: 29px;"><td style="width: 16.6667%; height: 29px;">PUT

</td><td style="width: 83.3333%; height: 29px;">Modifies a resource by replacing existing attributes with a specified set of replacement attributes (replace). PUT MUST NOT be used to create new resources.

</td></tr><tr style="height: 29px;"><td style="width: 16.6667%; height: 29px;">PATCH

</td><td style="width: 83.3333%; height: 29px;">Modifies a resource with a set of client-specified changes

(partial update).

</td></tr><tr style="height: 29px;"><td style="width: 16.6667%; height: 29px;">DELETE

</td><td style="width: 83.3333%; height: 29px;">Deletes a resource.

</td></tr></tbody></table>

### Get

A HTTP Get request is used to fetch a resource or a set of resources.

#### Read

```
http://<your-domain>/soffid/webservice/scim2/v1/{Resource}/{id}
```

- id: is the identifier of a specific resource

#### Search

```
http://<your-domain>/soffid/webservice/scim2/v1/{Resource}/?ﬁlter={attribute}{op}{value}&sortBy={attributeName}&sortOrder={ascending|descending}&attributes={attributes}
```

- **filter**: allows you to add filter to query. 
    - attribute
    - op: SCIM has support for the filter operations equals, contains, starts with, and more.
    - value
- **sortBy**: the attribute used to sort the response.
- **sortOrder**: order to sort, ascending or descending. Ascending is the default order.

In addition, you can request specific attributes of the resource, or exclude attributes (separated by commas if there is more than one).

- **attributes**={attributes}
- **excludedAttributes**={attributes}

Example:

```
http://<your-domain>/soffid/webservice/scim2/v1/User?filter=lastName co ada and active eq true &sortOrder=descending&sortBy=userName&attributes=userName,lastName&filter=userName co admin
```

#### Sorting

<table class="confluenceTable tablesorter tablesorter-default stickyTableHeaders" id="bkmrk-parameter-descriptio" role="grid"><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row" style="height: 35px;"><th aria-disabled="false" aria-label="Data type: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="width: 110px; height: 35px;" tabindex="0">**Parameter**

</th><th aria-disabled="false" aria-label="Value: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="width: 698.182px; height: 35px;" tabindex="0">**Description**

</th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row" style="height: 29px;"><td class="confluenceTd" colspan="1" style="width: 110px; height: 29px;">sortBy</td><td class="confluenceTd" colspan="1" style="width: 698.182px; height: 29px;">Specifies the attribute whose value will be used to order ther returned responses.</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" colspan="1" style="width: 110px; height: 29px;">sortOrder</td><td class="confluenceTd" colspan="1" style="width: 698.182px; height: 29px;">Allowed values are "ascending" and "descending".

If sortBy is provided, and sortOrder is nos provided, sortOrder will be "ascending" by default.

</td></tr></tbody></table>

Sorting example:

```
http://<your-server>/soffid/webservice/scim2/v1/User?sortBy=lastName&sortOrder=descending
```

#### Pagination

<table class="confluenceTable tablesorter tablesorter-default stickyTableHeaders" id="bkmrk-parameter-descriptio-0" role="grid"><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row" style="height: 35px;"><th aria-disabled="false" aria-label="Data type: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="width: 110px; height: 35px;" tabindex="0">**Parameter**

</th><th aria-disabled="false" aria-label="Value: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="width: 704.545px; height: 35px;" tabindex="0">**Description**

</th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row" style="height: 29px;"><td class="confluenceTd" colspan="1" style="width: 110px; height: 29px;">startIndex</td><td class="confluenceTd" colspan="1" style="width: 704.545px; height: 29px;">Index of the first query result. Default 1</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" colspan="1" style="width: 110px; height: 29px;">count</td><td class="confluenceTd" colspan="1" style="width: 704.545px; height: 29px;">Maximun numer of query results per page</td></tr></tbody></table>

Pagination example:

```XML
http://<your-server>/soffid/webservice/scim2/v1/User?startIndex=1&count=10
```

```JSON
{
     "totalResults":100,
     "itemsPerPage":10,
     "startIndex":1,
     "schemas":["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
     "Resources":[{
       ...
     }]
}
```

### Post

A HTTP Post request is used to create a new resource

```
http://<your-domain>/soffid/webservice/scim2/v1/{Resource}
```

```
Content-Type: application/json
```

You must send the JSON with the attributes of the resource you want to create.

```JSON
{
  "schemas":[{schema}],
  "attribute1":"value1",
  "attribute2":"value2",
  "attribute3":{
    "subattribute1":"valueX",
    "subattribute1":"valueX",
  },
  .......
}
```

- schema: is the schema url of the resource you are creating.
- attributes: name of the resource attributes.
- values: values for each attribute.

### Put

A HTTP Put request is used to update resources. This operation replace all values of the resource

```
http://<your-domain>/soffid/webservice/scim2/v1/{Resource}/{id}
```

```
Content-Type: application/json
```

You must send the JSON with the attributes of the resource you want to update, which includes the ID.

```JSON
{
  "schemas":[{schema}],
  "id": "idValue",
  "attribute1":"value1",
  "attribute2":"value2",
  "attribute3":{
    "subattribute1":"valueX",
    "subattribute1":"valueX",
  },
  .......
}
```

- schema: is the schema url of the resource you are creating.
- id: identifier of the resource
- attributes: name of the resource attributes.
- values: values for each attribute.

### Patch

A HTTP Patch request is used to update partial resources

```
http://<your-domain>/soffid/webservice/scim2/v1/{Resource}/{id}
```

```JSON
{
    "Operations": [
        {
            "op": "operation",
            "path": "attribute",
            "value": "value"
        },
        ............
    ]
}
```

- op: available operations to realize: 
    - add: allows you to add a new value to an attribute.
    - remove: allows you to delete the value of an attribute.
    - replace: allows you to replace (update) the value of an attribute.

<p class="callout info">More information about the operations on [https://www.rfc-editor.org/rfc/rfc6902](https://www.rfc-editor.org/rfc/rfc6902)</p>

- path: to indicate the attribute on which the operation is to be performed.
- value: the new value for the attribute.

### Delete

A HTTP Delete request is used to delete a resource.

```
http://<your-domain>/soffid/webservice/scim2/v1/{Resource}/{id}
```

- id: is the identifier of a specific resource

## Request

In the PUT and PATCH methods, a JSON stream with the data model is required (please see this format in the following link: [ Resource data model](https://bookstack.soffid.com/books/scim/chapter/resource-data-model "Resource data model")).

## Response

The response format will be represented as a SCIM JSON response, but all the keys in the response will depend on the method requested and the result of the operation.

### HTTP Status

The most commons responses

#### Successful Responses

<table class="confluenceTable tablesorter tablesorter-default stickyTableHeaders" id="bkmrk-200-ok-201-created" role="grid"><tbody><tr style="height: 29px;"><td style="width: 79px; height: 29px;">200

</td><td style="width: 728px; height: 29px;">OK

</td></tr><tr style="height: 29px;"><td style="width: 79px; height: 29px;"><div>201</div></td><td style="width: 728px; height: 29px;">Created

</td></tr><tr><td style="width: 79px;"><div>204 </div></td><td style="width: 728px;">No Content

</td></tr></tbody></table>

#### Error Response

<table class="confluenceTable tablesorter tablesorter-default stickyTableHeaders" id="bkmrk-400-bad-request-401-" role="grid"><tbody><tr style="height: 29px;"><td style="width: 79px; height: 29px;">400

</td><td style="width: 728px; height: 29px;">Bad Request

</td></tr><tr style="height: 29px;"><td style="width: 79px; height: 29px;"><div>401</div></td><td style="width: 728px; height: 29px;">Unauthorized

</td></tr><tr style="height: 29px;"><td style="width: 79px; height: 29px;">403

</td><td style="width: 728px; height: 29px;">Forbidden

</td></tr><tr style="height: 29px;"><td style="width: 79px; height: 29px;">404

</td><td style="width: 728px; height: 29px;">Not Found

</td></tr><tr style="height: 29px;"><td style="width: 79px; height: 29px;">500

</td><td style="width: 728px; height: 29px;"><div>Internal Server Error</div></td></tr></tbody></table>

For instance, when you search by id but no resource is found, only a 404 HTTP code is included in the response (the body is empty, no JSON is provided).

User cases:

- Search by id but no resource is found (404 code).
- Update all, the id is not found (404 code).
- Update partial, the id is not found (404 code).
- Delete, the id is not found (404 code).
- A "/&lt;resource&gt;" (in the URL) not exist (404 code).
- Other errors (404 or 500 code).

<p class="callout info">More detail about [SCIM JSON error](#bkmrk-scim-json-error)</p>

## SCIM JSON Response


### SCIM JSON list

For instance, when a list of resources is requested, this is the JSON output format:

*Note, to simplify the JSON output every resource has been replaced by {...}*

```JSON
{
  "totalResults": 3,
  "schemas": [
    "urn:ietf:params:scim:api:messages:2.0:ListResponse"
  ],
  "resources": [
    {...},
    {...},
    {...}
  ]
}
```

This is the description of this type of response:

<div id="bkmrk-attribute-descriptio"><table class="confluenceTable tablesorter tablesorter-default stickyTableHeaders" role="grid"><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row"><th aria-disabled="false" aria-label="Attribute: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="width: 120px;" tabindex="0"><div>Attribute</div></th><th aria-disabled="false" aria-label="Description: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="width: 693px;" tabindex="0"><div>Description</div></th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row"><td class="confluenceTd" colspan="1" style="width: 120px;">totalResults</td><td class="confluenceTd" colspan="1" style="width: 693px;">Number of the resources returned in the response</td></tr><tr role="row"><td class="confluenceTd" style="width: 120px;">schemas</td><td class="confluenceTd" style="width: 693px;">Defined by SCIM protocl. Always: "[urn:ietf:params:scim:api:messages:2.0:ListResponse](http://urnietfparamsscimapimessages:2.0:ListResponse)"</td></tr><tr role="row"><td class="confluenceTd" colspan="1" style="width: 120px;">resources<span class="hiddenGrammarError"> </span></td><td class="confluenceTd" colspan="1" style="width: 693px;">List of resources returned</td></tr></tbody></table>

</div>User cases:

- A list all operation (200 code).
- A search by filter operation (200 code).
- The delete operation (204 code).

### SCIM JSON resource

For instance, when a resource by id is requested, this is the JSON format:

*Note, to simplify the JSON output every resource has been replaced by {...}*

```JSON
{
  "id": 11345
  "organizational": true,
  ...
}
```

In this case, the JSON stream of the resource is included directly in the response.

User cases:

- Search by id operations (200 code).
- Successful create operations (201 code).
- Successful complete update operations (200 code).
- Successful partial update operations (200 code).

### SCIM JSON error

For instance, if an attempt to delete a resource is made, but this resource is not found the following JSON response will be obtained:

```JSON
{
  "schemas": [
    "urn:ietf:params:scim:api:messages:2.0:Error"
  ],
  "detail": "User 1234 not found",
  "status": "404"
}
```

This is the description of this type of response:

<table class="confluenceTable tablesorter tablesorter-default stickyTableHeaders" id="bkmrk-attribute-descriptio-0" role="grid"><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row"><th aria-disabled="false" aria-label="Attribute: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="width: 123px;" tabindex="0"><div>**Attribute**</div></th><th aria-disabled="false" aria-label="Description: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="width: 678px;" tabindex="0"><div>**Description**</div></th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row"><td class="confluenceTd" style="width: 123px;">schemas</td><td class="confluenceTd" style="width: 678px;">Defined by SCIM protocl. Always: "[urn:ietf:params:scim:api:messages:2.0:Error](http://urnietfparamsscimapimessages:2.0:Error)"</td></tr><tr role="row"><td class="confluenceTd" colspan="1" style="width: 123px;">detail</td><td class="confluenceTd" colspan="1" style="width: 678px;">Returns the description on the validation, problem, error, etc</td></tr><tr role="row"><td class="confluenceTd" colspan="1" style="width: 123px;">status</td><td class="confluenceTd" colspan="1" style="width: 678px;">Is the HTTP status, that is the same that the HTTP code of the HTTP response</td></tr></tbody></table>

User cases:

- When you try to delete a resource but it's not found (404 code).
- When you try to delete a group, the solution is to disable it by PATCH (500 code).
- Generic errors (500 code).

# SCIM Query syntax

SCIM protocol provides a language to search and filter resources.

<p class="callout info">Please browse the standard specifications in this link: [https://tools.ietf.org/html/rfc7644#section-3.4.2.2](https://tools.ietf.org/html/rfc7644#section-3.4.2.2)</p>

## Example

To search all users having "John" as name:

```XML
http://<domain>/webservice/scim2/v1/User/?filter=userName eq "John"
```

## Use

This feature can be used with the Search by filter operation.

After the URL resource. the filter parameter with the language expression to apply must be added: **&lt;URL&gt;?filter=&lt;expression&gt;**

Remember that in this case the HTTP method is GET.

<p class="callout info">The result always is a SCIM response list.</p>

## Syntax

### Attribute operators

<table class="confluenceTable tablesorter tablesorter-default stickyTableHeaders" id="bkmrk-operator-description" role="grid"><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row"><th aria-disabled="false" aria-label="Operator: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="width: 127px;" tabindex="0">**Operator**

</th><th aria-disabled="false" aria-label="Description: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="width: 664px;" tabindex="0">**Description**

</th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row"><td class="confluenceTd" style="width: 127px;">eq

</td><td class="confluenceTd" style="width: 664px;">equal

</td></tr><tr><td style="width: 127px;">eq\_ci

</td><td style="width: 664px;">case insensitive version of equal operator

</td></tr><tr role="row"><td class="confluenceTd" style="width: 127px;">ne

</td><td class="confluenceTd" style="width: 664px;">not equal

</td></tr><tr role="row"><td class="confluenceTd" style="width: 127px;">co

</td><td class="confluenceTd" style="width: 664px;">contains

</td></tr><tr role="row"><td class="confluenceTd" style="width: 127px;">sw

</td><td class="confluenceTd" style="width: 664px;">starts with

</td></tr><tr role="row"><td class="confluenceTd" style="width: 127px;">ew

</td><td class="confluenceTd" style="width: 664px;">ends with

</td></tr><tr role="row"><td class="confluenceTd" style="width: 127px;">pr

</td><td class="confluenceTd" style="width: 664px;">present (has value)

</td></tr><tr role="row"><td class="confluenceTd" style="width: 127px;">gt

</td><td class="confluenceTd" style="width: 664px;">greater than

</td></tr><tr role="row"><td class="confluenceTd" style="width: 127px;">ge

</td><td class="confluenceTd" style="width: 664px;">greater than or equal to

</td></tr><tr role="row"><td class="confluenceTd" style="width: 127px;">lt

</td><td class="confluenceTd" style="width: 664px;">less than

</td></tr><tr role="row"><td class="confluenceTd" style="width: 127px;">le

</td><td class="confluenceTd" style="width: 664px;">less than or equal to

</td></tr></tbody></table>

### Logical operators

<table class="confluenceTable tablesorter tablesorter-default stickyTableHeaders" id="bkmrk-operator-description-0" role="grid"><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row"><th aria-disabled="false" aria-label="Operator: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="width: 122px;" tabindex="0">**Operator**

</th><th aria-disabled="false" aria-label="Description: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="width: 675px;" tabindex="0">**Description**

</th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row"><td class="confluenceTd" colspan="1" style="width: 122px;">and

</td><td class="confluenceTd" colspan="1" style="width: 675px;">Logical "and"

</td></tr><tr role="row"><td class="confluenceTd" colspan="1" style="width: 122px;">or

</td><td class="confluenceTd" colspan="1" style="width: 675px;">Logical "or"

</td></tr><tr role="row"><td class="confluenceTd" colspan="1" style="width: 122px;">not

</td><td class="confluenceTd" colspan="1" style="width: 675px;">"Not" function

</td></tr></tbody></table>

### Grouping operators

<table class="confluenceTable tablesorter tablesorter-default stickyTableHeaders" id="bkmrk-operator-description-1" role="grid"><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row"><th aria-disabled="false" aria-label="Operator: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="width: 121px;" tabindex="0">**Operator**

</th><th aria-disabled="false" aria-label="Description: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="width: 681px;" tabindex="0">**Description**

</th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row"><td class="confluenceTd" colspan="1" style="width: 121px;">( )

</td><td class="confluenceTd" colspan="1" style="width: 681px;">Precedence grouping

</td></tr><tr role="row"><td class="confluenceTd" colspan="1" style="width: 121px;">\[ \]

</td><td class="confluenceTd" colspan="1" style="width: 681px;">Complex attribute filter group

</td></tr></tbody></table>

### Data values

<table class="confluenceTable tablesorter tablesorter-default stickyTableHeaders" id="bkmrk-data-type-value-numb" role="grid"><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row"><th aria-disabled="false" aria-label="Data type: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="width: 110px;" tabindex="0">**Data type**

</th><th aria-disabled="false" aria-label="Value: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="width: 692px;" tabindex="0">**Value**

</th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row"><td class="confluenceTd" colspan="1" style="width: 110px;">Numbers</td><td class="confluenceTd" colspan="1" style="width: 692px;">Use the value without ", for example 1234</td></tr><tr role="row"><td class="confluenceTd" colspan="1" style="width: 110px;">Text</td><td class="confluenceTd" colspan="1" style="width: 692px;">Use the value within ", for example "John"</td></tr><tr role="row"><td class="confluenceTd" colspan="1" style="width: 110px;">Date</td><td class="confluenceTd" colspan="1" style="width: 692px;">Use the value within " with an ISO format, for example "2011-05-13T04:42:34Z"

</td></tr><tr role="row"><td class="confluenceTd" colspan="1" style="width: 110px;">Boolean</td><td class="confluenceTd" colspan="1" style="width: 692px;">Use \[ true | false \] (without ")</td></tr><tr role="row"><td class="confluenceTd" colspan="1" style="width: 110px;">Null</td><td class="confluenceTd" colspan="1" style="width: 692px;">Use \[ null \] (without ")</td></tr></tbody></table>

### Filter examples

```shell
filter=userName eq "admin"
filter=userName ne "admin"
filter=userName co "ad"
filter=userName sw "a"
filter=userName ew "n"
filter=userName pr
filter=id gt 1
filter=id ge 60
filter=id lt 1000
filter=id le 1188
filter=consoleProperties.id eq 229
filter=createdDate gt "2011-05-13T04:42:34Z"
filter=id eq 60 and id eq 1188
filter=id eq 60 or id eq 1188
filter=firstName eq "Admin" and id eq 60
filter=firstName eq "Admin" or id eq 61
filter=primaryGroup eq "world" and (firstName co "John” or lastName co "Smith")
filter=userName co "i" and (userName co "a" or userName co "s")
filter=id eq 60 and (userName co "a" and consoleProperties.id eq 229)
```

### Sorting

Short is optional .

<table class="confluenceTable tablesorter tablesorter-default stickyTableHeaders" id="bkmrk-parameter-descriptio" role="grid"><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row" style="height: 35px;"><th aria-disabled="false" aria-label="Data type: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="width: 110px; height: 35px;" tabindex="0">**Parameter**

</th><th aria-disabled="false" aria-label="Value: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="width: 692px; height: 35px;" tabindex="0">**Description**

</th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row" style="height: 29px;"><td class="confluenceTd" colspan="1" style="width: 110px; height: 29px;">sortBy</td><td class="confluenceTd" colspan="1" style="width: 692px; height: 29px;">Specifies the attribute whose value will be used to order ther returned responses.</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" colspan="1" style="width: 110px; height: 29px;">sortOrder</td><td class="confluenceTd" colspan="1" style="width: 692px; height: 29px;">Allowed values are "ascending" and "descending".

If sortBy is provided, and sortOrder is nos provided, sortOrder will be "ascending" by default.

</td></tr></tbody></table>

Example:

```XML
http://<your-server>/webservice/scim2/v1/User?sortBy=lastName&sortOrder=descending
```

### Pagination

<table class="confluenceTable tablesorter tablesorter-default stickyTableHeaders" id="bkmrk-parameter-descriptio-0" role="grid" style="height: 93px;"><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row" style="height: 35px;"><th aria-disabled="false" aria-label="Data type: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="width: 110px; height: 35px;" tabindex="0">**Parameter**

</th><th aria-disabled="false" aria-label="Value: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="width: 692px; height: 35px;" tabindex="0">**Description**

</th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row" style="height: 29px;"><td class="confluenceTd" colspan="1" style="width: 110px; height: 29px;">startIndex</td><td class="confluenceTd" colspan="1" style="width: 692px; height: 29px;">Index of the first query result. Default 1</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" colspan="1" style="width: 110px; height: 29px;">count</td><td class="confluenceTd" colspan="1" style="width: 692px; height: 29px;">Maximun numer of query results per page</td></tr></tbody></table>

Example:

```XML
http://<your-server>/webservice/scim2/v1/User?startIndex=1&count=10
```

```JSON
{
     "totalResults":100,
     "itemsPerPage":10,
     "startIndex":1,
     "schemas":["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
     "Resources":[{
       ...
     }]
}
```

# How to install SCIM in Soffid

## Installation

### Download

Please download the Soffid SCIM add-on.

You can download it at the following link [http://www.soffid.com/download/enterprise/](http://www.soffid.com/download/enterprise/) if you have Soffid user with authorization, or in the following [http://download.soffid.com/download/](http://download.soffid.com/download/) by registering.

### Upload

Once the SCIM add-on is downloaded, please log in to IAM Console.

<p class="callout info">You need to be an administrator user of the Soffid console or a user with permissions to upload addons.</p>

<p class="callout info">It is recommended to upload the addons to master, this is the way to maintain updated all, master and tenants if there are.</p>

In the Soffid console, please go to: "Main Menu &gt; Administration &gt; Configure Soffid &gt; Global Settings &gt; Plugins" and upload the addon file, for more information visit the [Addons Getting started](https://bookstack.soffid.com/books/addons-getting-started/page/getting-started "Addons installation") page

Finally, when the addon is installed, it will be required to restart the Soffid Console.

## Testing

### Confirm authorization

To access to the SCIM REST web service, a user with correct authorization is required.

First we can check the authorization created by the SCIM add-on:

- Go to: Main Menu &gt; Administration &gt; Configure Soffid &gt; Security settings &gt; Authorizations
- Filter by the field "name" with the value "scim"
- Confirm that exists "scim:invoke"

### Confirm access

Once a user is available to access SCIM functionality, testing is easily done with a browser.

For example, to list groups.

- Please introduce the next URL: <u>http://&lt;domain&gt;/webservice/scim2/v1/Group</u> (*note, you must replace "&lt;domain&gt;" for your Soffid IAM Console domain*).
- Now a browser prompt requests the user and password for the authentication (note, you must use the user with the SCIM authorization).
- Finally, if the response is something like a compact JSON (Chrome) or a download file (Firefox).

Comments

- One can use a REST client extension in the browser, for example, [RESTer](https://bookstack.soffid.com/link/118#bkmrk-rester)
- One can show a JSON formatted with a browser extension, for example, JSONView (*note, it's necessary include the CONTENT-TYPE="application/scim+json" in the extension preferences*).

# How to use SCIM in Soffid

## Introduction

<p class="callout success">Soffid has implemented a version of the SCIM protocol 2.0. Some optional recommendations have also been included to improve the usage of this specification within the Soffid context.</p>

This functionality is available only by installing the SCIM add-on. This add-on is available in the download section of the Soffid website.

## Discovery

Soffid provides some endpoints to discover supported features and specific attribute details:

### Service provider config

This endpoint provides additional information about the Soffid SCIM implementation.

##### Request

```XML
GET https://<your-domain>/soffid/webservice/scim2/v1/ServiceProviderConfig
```

##### Response 200 OK

```JSON
{
    "patch": {
        "supported": true
    },
    "filter": {
        "maxResults": 1000,
        "supported": true
    },
    "documentationUri": "https://bookstack.soffid.com/books/scim",
    "authenticationSchemes": [
        {
            "documentationUri": "https://bookstack.soffid.com/book/scim",
            "name": "HTTP Basic",
            "description": "Authentication scheme using the HTTP Basic Standard",
            "specUri": "http://www.rfc-editor.org/info/rfc2617",
            "type": "httpbasic"
        }
    ],
    "meta": {
        "location": "http://soffid.pat.lab:8080/webservice/scim2/v1/ServiceProvider",
        "resourceType": "ServiceProviderConfig"
    },
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig"
    ],
    "etag": {
        "supported": false
    },
    "sort": {
        "supported": true
    },
    "bulk": {
        "supported": false
    },
    "changePassword": {
        "supported": true
    }
}
```

### Resources Types

An endpoint used to discover the types of resources available.

#### List resources types

The SCIM protocol is focused on resource management, such as users, groups, accounts, etc. To know all the resources that Soffid provides you can use this REST web service:

##### Request

```XML
GET https://<your-domain>/soffid/webservice/scim2/v1/ResourceTypes
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 20,
    "startIndex": 1,
    "Resources": [
        {
            "schema": "urn:soffid:com.soffid.iam.api.Account",
            "endpoint": "http://soffid.pat.lab:8080/webservice/scim2/v1/Account",
            "meta": {
                "location": "http://soffid.pat.lab:8080/webservice/scim2/v1/ResourceTypes/Account",
                "resourceType": "ResourceType"
            },
            "schemas": [
                "urn:ietf:params:scim:schemas:core:2.0:ResourceType"
            ],
            "name": "Account",
            "description": "Account object",
            "id": "Account"
        },
        {
            "schema": "urn:soffid:com.soffid.iam.api.Group",
            "endpoint": "http://soffid.pat.lab:8080/webservice/scim2/v1/Group",
            "meta": {
                "location": "http://soffid.pat.lab:8080/webservice/scim2/v1/ResourceTypes/Group",
                "resourceType": "ResourceType"
            },
            "schemas": [
                "urn:ietf:params:scim:schemas:core:2.0:ResourceType"
            ],
            "name": "Group",
            "description": "Group object",
            "id": "Group"
        },
      ...............
      ]
}
```

#### Query resource type

Specifies metadata about each resource. To query a specific resource type, you can use this REST web service:

##### Request

```XML
GET http://<your-domain>/soffid/webservice/scim2/v1/ResourceTypes/{Resource}
```

Example

```XML
GET http://<your-domain>/soffid/webservice/scim2/v1/ResourceTypes/User
```

##### Response 200 OK

```JSON
{
    "schema": "urn:soffid:com.soffid.iam.api.User",
    "endpoint": "http://soffid.pat.lab:8080/webservice/scim2/v1/User",
    "meta": {
        "location": "http://soffid.pat.lab:8080/webservice/scim2/v1/ResourceTypes/User",
        "resourceType": "ResourceType"
    },
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:ResourceType"
    ],
    "name": "User",
    "description": "User object",
    "id": "User"
}
```

##### Response 404

```
404 Not Found
```

### Schemas

Schema definition for a specific resource.

Request

```
GET http://<your-domain>/soffid/webservice/scim2/v1/Schemas/{Schema_URL}
```

Example

```
GET http://<your-domain>/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.api.Role
```

Response 200 OK

```JSON
{
    "meta": {
        "location": "http://soffid.pat.lab:8080/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.api.Role",
        "resourceType": "Schema"
    },
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:Schema"
    ],
    "name": "Role",
    "description": "Role object",
    "attributes": [
        {
            "uniqueness": "none",
            "name": "name",
            "mutability": "readWrite",
            "type": "string",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": true
        },
        {
            "uniqueness": "none",
            "name": "description",
            "mutability": "readWrite",
            "type": "string",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": true
        },
        {
            "uniqueness": "none",
            "name": "system",
            "mutability": "readWrite",
            "type": "string",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": true
        },
        {
            "uniqueness": "none",
            "name": "category",
            "mutability": "readWrite",
            "type": "string",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "informationSystemName",
            "mutability": "readWrite",
            "type": "string",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": true
        },
        {
            "uniqueness": "none",
            "name": "domain",
            "mutability": "readWrite",
            "type": "string",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "bpmEnabled",
            "mutability": "readWrite",
            "type": "boolean",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "approvalStart",
            "mutability": "readOnly",
            "type": "dateTime",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "approvalEnd",
            "mutability": "readOnly",
            "type": "dateTime",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        }
    ],
    "id": "urn:soffid:com.soffid.iam.api.Role"
}
```

##### Response 404

```
404 Not Found
```

## Soffid Resources

Soffid provides the following resources:

<table class="wrapped confluenceTable tablesorter tablesorter-default" id="bkmrk-resource-description" role="grid" style="height: 897px;"><colgroup><col></col><col></col></colgroup><thead><tr class="tablesorter-headerRow" role="row" style="height: 28px;"><th aria-disabled="false" aria-label="Resource: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="height: 28px; width: 130px;" tabindex="0"><div>Resource</div></th><th aria-disabled="false" aria-label="Description: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="height: 28px; width: 678.182px;" tabindex="0"><div>Description</div></th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row" style="height: 55px;"><td class="confluenceTd" style="height: 55px; width: 130px;">[User](https://bookstack.soffid.com/link/126#bkmrk-page-title)</td><td class="confluenceTd" style="height: 55px; width: 678.182px;">Management of the users included in the Soffid solution.

A user is an identity that represents only one person.

</td></tr><tr role="row" style="height: 77px;"><td class="confluenceTd" style="height: 77px; width: 130px;">[Group](https://bookstack.soffid.com/link/127#bkmrk-page-title)</td><td class="confluenceTd" style="height: 77px; width: 678.182px;">Management of the groups included in the Soffid solution.

A group could be part of a hierarchical group tree.

Users are assigned to a primary group and optionally could be in some secondary groups.

</td></tr><tr role="row" style="height: 99px;"><td class="confluenceTd" style="height: 99px; width: 130px;">[Account](https://bookstack.soffid.com/books/scim/page/account-resource "Account resource")</td><td class="confluenceTd" style="height: 99px; width: 678.182px;">Management of the accounts included in the Soffid solution.

An account is a representation of one application access.

A user may have a lot of accounts and may have some accounts for the same applications with different roles and restrictions.

</td></tr><tr role="row" style="height: 99px;"><td class="confluenceTd" style="height: 99px; width: 130px;">[Application](https://bookstack.soffid.com/books/scim/page/application-resource "Application resource")

</td><td class="confluenceTd" style="height: 99px; width: 678.182px;">Management of the applications (Information Systems from a functional point of view) included in the Soffid solution.

Every agent (of an external system) manages these roles through one or more applications.

</td></tr><tr role="row" style="height: 77px;"><td class="confluenceTd" style="height: 77px; width: 130px;">[Role](https://bookstack.soffid.com/books/scim/page/role-resource "Role resource")

</td><td class="confluenceTd" style="height: 77px; width: 678.182px;">Management of the roles included in the Soffid solution.

Every role is created in one application, so an application has a list of roles.

</td></tr><tr style="height: 33px;"><td style="height: 33px; width: 130px;">[GroupType](https://bookstack.soffid.com/link/131#bkmrk-page-title)

</td><td style="height: 33px; width: 678.182px;">Management of the GroupTypes included in the Soffid solution.

</td></tr><tr style="height: 33px;"><td style="height: 33px; width: 130px;">[UserType](https://bookstack.soffid.com/books/scim/page/user-type-resource "User type resource")

</td><td style="height: 33px; width: 678.182px;">Management of the GroupTypes included in the Soffid solution.

</td></tr><tr style="height: 33px;"><td style="height: 33px; width: 130px;">[GroupUser](https://bookstack.soffid.com/books/scim/page/groupuser-resource "GroupUser resource")

</td><td style="height: 33px; width: 678.182px;">Management of the GroupUsers included in the Soffid solution.

</td></tr><tr style="height: 33px;"><td style="height: 33px; width: 130px;">[RoleAccount](https://bookstack.soffid.com/books/scim/page/roleaccount-resource "RoleAccount resource")

</td><td style="height: 33px; width: 678.182px;">Management of the RoleAccounts included in the Soffid solution.

</td></tr><tr style="height: 33px;"><td style="height: 33px; width: 130px;">[Host](https://bookstack.soffid.com/books/scim/page/host-resource "Host resource")

</td><td style="height: 33px; width: 678.182px;">Management of the Hosts included in the Soffid solution.

</td></tr><tr style="height: 33px;"><td style="height: 33px; width: 130px;">[MailDomain](https://bookstack.soffid.com/books/scim/page/maildomain-resource "MailDomain resource")

</td><td style="height: 33px; width: 678.182px;">Management of the MailDomains included in the Soffid solution.

</td></tr><tr style="height: 33px;"><td style="height: 33px; width: 130px;">[MailList](https://bookstack.soffid.com/books/scim/page/maillist-resource "MailList resource")

</td><td style="height: 33px; width: 678.182px;">Management of the MailLists included in the Soffid solution.

</td></tr><tr style="height: 33px;"><td style="height: 33px; width: 130px;">[DomainValue](https://bookstack.soffid.com/books/scim/page/domainvalue-resource "DomainValue resource")

</td><td style="height: 33px; width: 678.182px;">Management of the DomainValues included in the Soffid solution.

</td></tr><tr style="height: 33px;"><td style="height: 33px; width: 130px;">[VaultFolder](https://bookstack.soffid.com/books/scim/page/vaultfolder-resource "VaultFolder resource")

</td><td style="height: 33px; width: 678.182px;">Management of the VaultFolders included in the Soffid solution.

</td></tr><tr style="height: 33px;"><td style="height: 33px; width: 130px;">[System](https://bookstack.soffid.com/books/scim/page/system-resource "System resource")

</td><td style="height: 33px; width: 678.182px;">Management of the Systems (Agents) included in the Soffid solution.

Information storage system from a technical point of view.

</td></tr><tr style="height: 33px;"><td style="height: 33px; width: 130px;">[CustomObject](https://bookstack.soffid.com/books/scim/page/customobject-resource "CustomObject resource")

</td><td style="height: 33px; width: 678.182px;">Management of the CustomObjects included in the Soffid solution.

</td></tr><tr style="height: 33px;"><td style="width: 130px; height: 33px;">[TaskInstance](https://bookstack.soffid.com/books/scim/page/taskinstance-resource "TaskInstance resource")

</td><td style="width: 678.182px; height: 33px;">Management of the TaskInstances included in the Soffid solution.

</td></tr><tr style="height: 33px;"><td style="width: 130px; height: 33px;">[ProcessInstance](https://bookstack.soffid.com/books/scim/page/processinstance-resource "ProcessInstance resource")

</td><td style="width: 678.182px; height: 33px;">Management of the ProcessInstances included in the Soffid solution.

</td></tr><tr style="height: 33px;"><td style="width: 130px; height: 33px;">[ProcessDefinition](https://bookstack.soffid.com/books/scim/page/processdefinition-resource "ProcessDefinition resource")

</td><td style="width: 678.182px; height: 33px;">Management of the ProcessDefinition included in the Soffid solution.

</td></tr></tbody></table>

<p class="callout info">You can view all resource data models and schemas on [Resource data model &amp; schema](https://bookstack.soffid.com/books/scim/chapter/resource-data-model-schema "Resource data model & schema") chapter</p>

## Soffid Operations

For every resource the following operations are available:

<div id="bkmrk-operation-http-metho"><table class="wrapped confluenceTable tablesorter tablesorter-default" role="grid"><colgroup><col></col><col></col><col></col><col></col></colgroup><thead><tr class="tablesorter-headerRow" role="row" style="height: 57px;"><th aria-disabled="false" aria-label="Operation: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="width: 121px; height: 57px;" tabindex="0">**Operation**

</th><th aria-disabled="false" aria-label="HTTP method: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="width: 69px; height: 57px;" tabindex="0">**HTTP method**

</th><th aria-disabled="false" aria-label="URL example: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="2" role="columnheader" scope="col" style="width: 337px; height: 57px;" tabindex="0">**URL example**

</th><th aria-disabled="false" aria-label="Description: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="3" role="columnheader" scope="col" style="width: 287px; height: 57px;" tabindex="0">**Description**

</th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row" style="height: 35px;"><td class="confluenceTd" style="width: 121px; height: 35px;">List all

</td><td class="confluenceTd" style="width: 69px; height: 35px;">GET

</td><td class="confluenceTd" style="width: 337px; height: 35px;">.../soffid/webservice/scim/&lt;resource&gt;

</td><td class="confluenceTd" style="width: 287px; height: 35px;">List all resources

</td></tr><tr role="row" style="height: 35px;"><td class="confluenceTd" colspan="1" style="width: 121px; height: 35px;">Search by id

</td><td class="confluenceTd" colspan="1" style="width: 69px; height: 35px;">GET

</td><td class="confluenceTd" colspan="1" style="width: 337px; height: 35px;">.../soffid/webservice/scim/&lt;resource&gt;/&lt;id&gt;

</td><td class="confluenceTd" colspan="1" style="width: 287px; height: 35px;">Search the resource with the &lt;id&gt; specified

</td></tr><tr role="row" style="height: 80px;"><td class="confluenceTd" colspan="1" style="width: 121px; height: 80px;">Search by filter

</td><td class="confluenceTd" colspan="1" style="width: 69px; height: 80px;">GET

</td><td class="confluenceTd" colspan="1" style="width: 337px; height: 80px;">.../soffid/webservice/scim/&lt;resource&gt;?filter=&lt;filter-language&gt;

</td><td class="confluenceTd" colspan="1" style="width: 287px; height: 80px;">Search all resources that fulfil the &lt;filter-language&gt; filter (*please see filtering language here* [5. SCIM filter language](https://confluence.soffid.com/display/SOF/5.+SCIM+filter+language))

</td></tr><tr role="row" style="height: 35px;"><td class="confluenceTd" colspan="1" style="width: 121px; height: 35px;">Create

</td><td class="confluenceTd" colspan="1" style="width: 69px; height: 35px;">POST

</td><td class="confluenceTd" colspan="1" style="width: 337px; height: 35px;">.../soffid/webservice/scim/&lt;resource&gt;

</td><td class="confluenceTd" colspan="1" style="width: 287px; height: 35px;">Create a resource

</td></tr><tr role="row" style="height: 79px;"><td class="confluenceTd" colspan="1" style="width: 121px; height: 79px;">Update all

</td><td class="confluenceTd" colspan="1" style="width: 69px; height: 79px;">PUT

</td><td class="confluenceTd" colspan="1" style="width: 337px; height: 79px;">.../soffid/webservice/scim/&lt;resource&gt;/&lt;id&gt; + &lt;JSON in the body&gt;

</td><td class="confluenceTd" colspan="1" style="width: 287px; height: 79px;">Update all attributes specified in the JSON stream (*the attributes not included will be cleared*)

</td></tr><tr role="row" style="height: 79px;"><td class="confluenceTd" colspan="1" style="width: 121px; height: 79px;">Update partial

</td><td class="confluenceTd" colspan="1" style="width: 69px; height: 79px;">PATCH

</td><td class="confluenceTd" colspan="1" style="width: 337px; height: 79px;">.../soffid/webservice/scim/&lt;resource&gt;/&lt;id&gt; + &lt;JSON in the body&gt;

</td><td class="confluenceTd" colspan="1" style="width: 287px; height: 79px;">Update only the attributes specified in the JSON stream *(the other attributes will not be updated)*

</td></tr><tr role="row" style="height: 35px;"><td class="confluenceTd" colspan="1" style="width: 121px; height: 35px;">Delete

</td><td class="confluenceTd" colspan="1" style="width: 69px; height: 35px;">DELETE

</td><td class="confluenceTd" colspan="1" style="width: 337px; height: 35px;">.../soffid/webservice/scim/&lt;resource&gt;/&lt;id&gt;

</td><td class="confluenceTd" colspan="1" style="width: 287px; height: 35px;">Delete a resource

</td></tr></tbody></table>

</div>## HTTP request

In every HTTP request the following HTTP header parameters are required:

<div id="bkmrk-parameter-value-desc"><table class="wrapped confluenceTable tablesorter tablesorter-default" role="grid"><colgroup><col></col><col></col><col></col></colgroup><thead><tr class="tablesorter-headerRow" role="row"><th aria-disabled="false" aria-label="Parameter: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="width: 149px;" tabindex="0"><div>**Parameter**</div></th><th aria-disabled="false" aria-label="Value: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="width: 318px;" tabindex="0"><div>**Value**</div></th><th aria-disabled="false" aria-label="Description: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="2" role="columnheader" scope="col" style="width: 342px;" tabindex="0"><div>**Description**</div></th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row"><td class="confluenceTd" style="width: 149px;">URL</td><td class="confluenceTd" style="width: 318px;">https://&lt;your-domain&gt;/soffid/webservice/scim/&lt;resource&gt;</td><td class="confluenceTd" style="width: 342px;">URL with the &lt;resource&gt; to be managed</td></tr><tr role="row"><td class="confluenceTd" colspan="1" style="width: 149px;">Method</td><td class="confluenceTd" colspan="1" style="width: 318px;">\[ GET | POST | PUT | PATCH | DELETE \]</td><td class="confluenceTd" colspan="1" style="width: 342px;">Method allowed in SCIM REST protocol</td></tr><tr role="row"><td class="confluenceTd" colspan="1" style="width: 149px;">Content-Type</td><td class="confluenceTd" colspan="1" style="width: 318px;">application/scim+json</td><td class="confluenceTd" colspan="1" style="width: 342px;">SCIM specification</td></tr><tr role="row"><td class="confluenceTd" colspan="1" style="width: 149px;">Accept</td><td class="confluenceTd" colspan="1" style="width: 318px;">application/scim+json</td><td class="confluenceTd" colspan="1" style="width: 342px;">SCIM specification</td></tr><tr role="row"><td class="confluenceTd" colspan="1" style="width: 149px;">Authorization</td><td class="confluenceTd" colspan="1" style="width: 318px;">Basic YWRtaW46Y2hhbmdlaXQ=</td><td class="confluenceTd" colspan="1" style="width: 342px;">Only BASIC authentication is implemented in this version. A Soffid user (+password) with SCIM access is required to generate this parameter</td></tr><tr role="row"><td class="confluenceTd" colspan="1" style="width: 149px;">Accept-Language</td><td class="confluenceTd" colspan="1" style="width: 318px;">\[ EN | ES | CA | NL \]</td><td class="confluenceTd" colspan="1" style="width: 342px;">This parameter is OPTIONAL. The default language is EN</td></tr></tbody></table>

</div>## HTTP codes

The following HTTP codes are managed in the HTTP response:

<div id="bkmrk-code-status-user-cas"><div><table class="wrapped confluenceTable tablesorter tablesorter-default" role="grid"><thead><tr class="tablesorter-headerRow" role="row"><th aria-disabled="false" aria-label="Code: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="width: 79px;" tabindex="0">**Code**

</th><th aria-disabled="false" aria-label="Status: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="width: 133px;" tabindex="0">**Status**

</th><th aria-disabled="false" aria-label="User case: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="2" role="columnheader" scope="col" style="width: 597px;" tabindex="0">**User case**

</th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row"><td class="confluenceTd" style="width: 79px;">200

</td><td class="confluenceTd" style="width: 133px;">Ok

</td><td class="confluenceTd" style="width: 597px;">After: list all, search by id, search by filter, update all, update partial

</td></tr><tr role="row"><td class="confluenceTd" colspan="1" style="width: 79px;">201

</td><td class="confluenceTd" colspan="1" style="width: 133px;">Created

</td><td class="confluenceTd" colspan="1" style="width: 597px;">After: create

</td></tr><tr role="row"><td class="confluenceTd" colspan="1" style="width: 79px;">204

</td><td class="confluenceTd" colspan="1" style="width: 133px;">No content

</td><td class="confluenceTd" colspan="1" style="width: 597px;">After: delete

</td></tr><tr role="row"><td class="confluenceTd" colspan="1" style="width: 79px;">404

</td><td class="confluenceTd" colspan="1" style="width: 133px;">Not found

</td><td class="confluenceTd" colspan="1" style="width: 597px;">After: resource not found

</td></tr><tr role="row"><td class="confluenceTd" colspan="1" style="width: 79px;">500

</td><td class="confluenceTd" colspan="1" style="width: 133px;">Error

</td><td class="confluenceTd" colspan="1" style="width: 597px;">After: internal error, PATCH DELETE

</td></tr></tbody></table>

</div></div>

# Testing tool

## REST clients

Any REST client may be used to test and consume our SCIM REST web service.

### Bruno

Bruno is a free and open-source API client used to test, explore, and document APIs. Think of it as a tool that lets you send HTTP requests (GET, POST, PUT, DELETE, etc.) to any API and inspect the responses — without writing code.

You can download it at the following link: [https://www.usebruno.com/downloads](https://www.usebruno.com/downloads)

<p class="callout info">Bruno is compatible with Linux and Windows.</p>

#### Sample collection

<p class="callout success">To enable you to conduct your initial tests quickly, we provide a collection of samples that you can import into your Bruno instance.</p>

[SOFFID SCIM.zip](https://bookstack.soffid.com/attachments/189)

Once you imported the project, in settings, is useful to create global variables and use them in the request URLs.

Such as, the **environment**.

[![Captura desde 2026-03-05 13-03-12.png](https://bookstack.soffid.com/uploads/images/gallery/2026-03/scaled-1680-/yXu8SICIfCDO4MAe-captura-desde-2026-03-05-13-03-12.png)](https://bookstack.soffid.com/uploads/images/gallery/2026-03/yXu8SICIfCDO4MAe-captura-desde-2026-03-05-13-03-12.png)

And the Auth method to 'Basic Auth', providing your Soffid **username** and **password**.

[![Captura desde 2026-03-05 13-07-52.png](https://bookstack.soffid.com/uploads/images/gallery/2026-03/scaled-1680-/nEz5PcYmmr8ajFtg-captura-desde-2026-03-05-13-07-52.png)](https://bookstack.soffid.com/uploads/images/gallery/2026-03/nEz5PcYmmr8ajFtg-captura-desde-2026-03-05-13-07-52.png)

# Resource data model & schema

The data model of the Soffid objects is mapped to JSON objects to enable the data transport between client and server.

# User resource

## /User

### Dictionary table

<p class="callout info">The diagram service model of the object: [https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/base/api/User.html](https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/base/api/User.html)</p>

Soffid allows you to add customized data to the user object. You can do that on metadata, on the proper object.

- <span class="link" id="bkmrk-main-menu">Main Menu</span><span id="bkmrk-%C2%A0%3E%C2%A0"> &gt;</span><span id="bkmrk-%C2%A0%3E%C2%A0-0"> </span><span class="link" id="bkmrk-configure-soffid">Configuration</span><span id="bkmrk-%C2%A0%3E%C2%A0-1"> &gt; </span><span class="link" id="bkmrk-global-settings">Global Settings</span><span id="bkmrk-%C2%A0%3E%C2%A0-2"> &gt; </span><span class="link" id="bkmrk-metadata%22.">Metadata</span>

## Query schema

It is allowed to consult all the User definition using the Schema query:

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.base.api.User
```

##### Response 200 OK

```JSON
{
  "meta": {
    "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.base.api.User",
    "resourceType": "Schema"
  },
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Schema"
  ],
  "name": "User",
  "description": "User object",
  "attributes": [
    {
      "uniqueness": "none",
      "name": "userName",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "firstName",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "lastName",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "middleName",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "fullName",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "userType",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "primaryGroup",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "homeServer",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "profileServer",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "emailAddress",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "mailAlias",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "mailServer",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "active",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "multiSession",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "comments",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "modifiedBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "modifiedOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "subattributes": [
        {
          "uniqueness": "none",
          "name": "avatar",
          "description": "Avatar",
          "mutability": "readWrite",
          "type": "string",
          "caseExact": true,
          "returned": "default",
          "multiValued": false,
          "required": false
        }
      ],
      "uniqueness": "none",
      "name": "attributes",
      "description": "Custom attributes",
      "mutability": "readWrite",
      "type": "complex",
      "returned": "default",
      "multiValued": false
    },
    {
      "subattributes": [
        {
          "uniqueness": "none",
          "name": "domain",
          "description": "Password domain to be changed. By default, the DEFAULT domain is changed",
          "mutability": "writeOnly",
          "type": "string",
          "caseExact": true,
          "multiValued": false,
          "required": false
        },
        {
          "uniqueness": "none",
          "name": "value",
          "description": "The password itself, in  clear text",
          "mutability": "writeOnly",
          "type": "string",
          "caseExact": true,
          "multiValued": false,
          "required": true
        },
        {
          "uniqueness": "none",
          "name": "expired",
          "description": "If not set to false, the user will be prompted to change it on next logon",
          "mutability": "readWrite",
          "type": "boolean",
          "caseExact": true,
          "multiValued": false,
          "required": false
        }
      ],
      "uniqueness": "none",
      "name": "password",
      "description": "Change current user password",
      "mutability": "writeOnly",
      "type": "complex",
      "caseExact": true,
      "multiValued": true,
      "required": false
    }
  ],
  "id": "urn:soffid:com.soffid.iam.base.api.User"
}
```

## Full JSON example

<p class="callout info">Visit [SCIM User examples](https://bookstack.soffid.com/books/scim/page/scim-user-examples "SCIM User examples") page</p>

# Group resource

## /Group

### Dictionary table

<p class="callout info">The diagram service model of the object: [https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/iga/api/Group.html](https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/iga/api/Group.html)</p>

Soffid allows you to add customized data to the group object. You can do that on the metadata option:

- <span class="link" id="bkmrk-main-menu">Main Menu</span><span id="bkmrk-%C2%A0%3E%C2%A0"> &gt;</span><span id="bkmrk-%C2%A0%3E%C2%A0-0"> </span><span class="link" id="bkmrk-configure-soffid">Configuration</span><span id="bkmrk-%C2%A0%3E%C2%A0-1"> &gt; </span><span class="link" id="bkmrk-global-settings">Global Settings</span><span id="bkmrk-%C2%A0%3E%C2%A0-2"> &gt; </span><span class="link" id="bkmrk-metadata%22.">Metadata</span>

## Query Schema

It is allowed to consult all the Group definitions using the Schema query:

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.iga.api.Group
```

##### Response 200 OK

```JSON
{
  "meta": {
    "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.iga.api.Group",
    "resourceType": "Schema"
  },
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Schema"
  ],
  "name": "Group",
  "description": "Group object",
  "attributes": [
    {
      "uniqueness": "none",
      "name": "name",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "description",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "driveLetter",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "parentGroup",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "type",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "driveServerName",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "obsolete",
      "mutability": "readOnly",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "startDate",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "endDate",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    }
  ],
  "id": "urn:soffid:com.soffid.iam.iga.api.Group"
}
```

## Full JSON example

<p class="callout info">Visit [SCIM Group examples](https://bookstack.soffid.com/books/scim/page/scim-group-examples "SCIM Group examples") page</p>

# Account resource

## /Account

### Dictionary table

<p class="callout info">The diagram service model of the object: [https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/base/api/Account.html](https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/base/api/Account.html)</p>

Soffid allows you to add customized data to the Account object. You can do that on metadata option:

- <span class="link" id="bkmrk-main-menu">Main Menu</span><span id="bkmrk-%C2%A0%3E%C2%A0"> &gt; </span><span class="link" id="bkmrk-configure-soffid">Configuration</span><span id="bkmrk-%C2%A0%3E%C2%A0-1"> &gt; </span><span class="link" id="bkmrk-global-settings">Global Settings</span><span id="bkmrk-%C2%A0%3E%C2%A0-2"> &gt; </span><span class="link" id="bkmrk-metadata%22.">Metadata</span>

## Query Schema

It is allowed to consult all the Account definition using the Schema query:

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.base.api.Account
```

##### Response 200 OK

```JSON
{
  "meta": {
    "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.base.api.Account",
    "resourceType": "Schema"
  },
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Schema"
  ],
  "name": "Account",
  "description": "Account object",
  "attributes": [
    {
      "uniqueness": "none",
      "name": "system",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "name",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "loginName",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "description",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "type",
      "canonicalValues": [
        "U",
        "S",
        "P",
        "I"
      ],
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "status",
      "canonicalValues": [
        "a",
        "FA",
        "l",
        "d",
        "FD",
        "r",
        "x"
      ],
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "credentialType",
      "canonicalValues": [
        "PASS",
        "SSH",
        "KUBE"
      ],
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "passwordPolicy",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "ownerGroups",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": true,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "ownerUsers",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": true,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "ownerRoles",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": true,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "managerGroups",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": true,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "managerUsers",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": true,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "managerRoles",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": true,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "grantedGroups",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": true,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "grantedUsers",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": true,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "grantedRoles",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": true,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "serverType",
      "canonicalValues": [
        "Windows",
        "Linux",
        "Database"
      ],
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "serverName",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "sshPublicKey",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "vaultFolderId",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "inheritNewPermissions",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "loginUrl",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "launchType",
      "canonicalValues": [
        "S",
        "W",
        "P"
      ],
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "jumpServerGroup",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "externalId",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "lastLogin",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "lastUpdated",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "lastPasswordSet",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "passwordExpiration",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "lockedBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "passwordStatus",
      "canonicalValues": [
        "PASSWORD_GOOD",
        "PASSWORD_WRONG",
        "PASSWORD_GOOD_EXPIRED"
      ],
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "created",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "lastChange",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "subattributes": [
        {
          "uniqueness": "none",
          "name": "value",
          "description": "The password itself, in  clear text",
          "mutability": "writeOnly",
          "type": "string",
          "caseExact": true,
          "multiValued": false,
          "required": true
        },
        {
          "uniqueness": "none",
          "name": "expired",
          "description": "If not set to false, the user will be prompted to change it on next logon",
          "mutability": "readWrite",
          "type": "boolean",
          "caseExact": true,
          "multiValued": false,
          "required": false
        }
      ],
      "uniqueness": "none",
      "name": "password",
      "description": "Change current account password",
      "mutability": "writeOnly",
      "type": "complex",
      "caseExact": true,
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "attributes",
      "mutability": "readWrite",
      "type": "complex",
      "caseExact": true,
      "multiValued": false,
      "required": false
    }
  ],
  "id": "urn:soffid:com.soffid.iam.base.api.Account"
}
```

## Full JSON example 

<p class="callout info">Visit [SCIM Account examples](https://bookstack.soffid.com/books/scim/page/scim-account-examples "SCIM Account examples") page</p>

# Application resource

## /Application (addon version 1.2.0+)

### Dictionary table

<p class="callout info">The diagram service model of the object : [https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/iga/api/InformationSystem.html](https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/iga/api/InformationSystem.html)</p>

Soffid allows you to add customized data to the Application object (System Information). You can do that on metadata option:

- <span class="link" id="bkmrk-main-menu">Main Menu</span><span id="bkmrk-%C2%A0%3E%C2%A0"> &gt; </span><span class="link" id="bkmrk-administration">Configuration</span><span id="bkmrk-%C2%A0%3E%C2%A0-0"> &gt; </span><span class="link" id="bkmrk-global-settings">Global Settings</span><span id="bkmrk-%C2%A0%3E%C2%A0-2"> &gt; </span><span class="link" id="bkmrk-metadata%22.">Metadata</span>

## Query Schema

It is allowed to consult all the Application definition using the Schema query:

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.iga.api.InformationSystem
```

##### Response 200 OK

```JSON
{
  "meta": {
    "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.iga.api.InformationSystem",
    "resourceType": "Schema"
  },
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Schema"
  ],
  "name": "Application",
  "description": "Application object",
  "attributes": [
    {
      "uniqueness": "none",
      "name": "type",
      "canonicalValues": [
        "container",
        "application",
        "business"
      ],
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "parent",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "relativeName",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "description",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "owner",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "sourceDir",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "targetDir",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "database",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "bpmEnabled",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "notificationEmails",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "approvalProcess",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "roleDefinitionProcess",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "singleRole",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    }
  ],
  "id": "urn:soffid:com.soffid.iam.iga.api.InformationSystem"
}
```

## Full JSON example

<p class="callout info">Visit [SCIM Application examples](https://bookstack.soffid.com/books/scim/page/scim-application-examples-informationsystem "SCIM Application examples") page</p>

# Role resource

## /Role (addon version 1.2.0+)

### Dictionary table

<p class="callout info">The diagram service model of the object: [https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/iga/api/Role.html](https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/iga/api/Role.html)</p>

Soffid allows you to add customized data to the Role object. You can do that on metadata option:

- <span class="link" id="bkmrk-main-menu">Main Menu</span><span id="bkmrk-%C2%A0%3E%C2%A0"> &gt; </span><span class="link" id="bkmrk-configure-soffid">Configuration</span><span id="bkmrk-%C2%A0%3E%C2%A0-1"> &gt; </span><span class="link" id="bkmrk-global-settings">Global Settings</span><span id="bkmrk-%C2%A0%3E%C2%A0-2"> &gt; </span><span class="link" id="bkmrk-metadata%22.">Metadata</span>

## Query schema

It is allowed to consult all the Role definition using the Schema query:

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.iga.api.Role
```

##### Response 200 OK

```JSON
{
  "meta": {
    "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.iga.api.Role",
    "resourceType": "Schema"
  },
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Schema"
  ],
  "name": "Role",
  "description": "Role object",
  "attributes": [
    {
      "uniqueness": "none",
      "name": "name",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "description",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "system",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "category",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "informationSystemName",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "domainType",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "bpmEnabled",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "externalId",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "approvalStart",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "approvalEnd",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    }
  ],
  "id": "urn:soffid:com.soffid.iam.iga.api.Role"
}
```

## Full JSON example

<p class="callout info">Visit[ SCIM Role examples](https://bookstack.soffid.com/books/scim/page/scim-role-examples "SCIM Role examples") page</p>

# Group type resource

## /GroupType

### Dictionary table

<p class="callout info">The diagram service model of the object: [https://download.soffid.com/doc/cohttps://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/iga/api/GroupType.htmlnsole/latest/uml/com/soffid/iam/api/OUType.html](https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/iga/api/GroupType.html)</p>

## Query Schema

It is allowed to consult all the Group Type definition using the Schema query:

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.iga.api.GroupType
```

##### Response 200 OK

```JSON
{
  "meta": {
    "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.iga.api.GroupType",
    "resourceType": "Schema"
  },
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Schema"
  ],
  "name": "OUType",
  "description": "OUType object",
  "attributes": [
    {
      "uniqueness": "none",
      "name": "name",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "description",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "roleHolder",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    }
  ],
  "id": "urn:soffid:com.soffid.iam.iga.api.GroupType"
}
```

## Full JSON example

<p class="callout info">Visit [SCIM Group type examples](https://bookstack.soffid.com/books/scim/page/scim-group-type-examples "SCIM Group type examples") page</p>

# User type resource

## /UserType

### Dictionary table

<p class="callout info">The diagram service model of the object: [https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/iga/api/UserType.html](https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/iga/api/UserType.html)</p>

## Query Schema

It is allowed to consult all the User Type definition using the Schema query:

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.iga.api.UserType
```

##### Response 200 OK

```JSON
{
  "meta": {
    "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.iga.api.UserType",
    "resourceType": "Schema"
  },
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Schema"
  ],
  "name": "UserType",
  "description": "UserType object",
  "attributes": [
    {
      "uniqueness": "none",
      "name": "name",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "description",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "managed",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "createdOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    }
  ],
  "id": "urn:soffid:com.soffid.iam.iga.api.UserType"
}
```

## Full JSON example

<p class="callout info">Visit [SCIM User type examples](https://bookstack.soffid.com/books/scim/page/scim-user-type-examples "SCIM User type examples") page</p>

# GroupUser resource

## /UserGroup

### Dictionary table

<p class="callout info">The diagram service model of the object: [https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/iga/api/UserGroup.html](https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/iga/api/UserGroup.html)</p>

Soffid allows you to add customized data to the GroupUser object. You can do that on metadata option:

- <span class="link" id="bkmrk-main-menu">Main Menu</span><span id="bkmrk-%C2%A0%3E%C2%A0"> &gt;</span><span id="bkmrk-%C2%A0%3E%C2%A0-0"> </span><span class="link" id="bkmrk-configure-soffid">Configuration</span><span id="bkmrk-%C2%A0%3E%C2%A0-1"> &gt; </span><span class="link" id="bkmrk-global-settings">Global Settings</span><span id="bkmrk-%C2%A0%3E%C2%A0-2"> &gt; </span><span class="link" id="bkmrk-metadata%22.">Metadata</span>

## Query Schema

It is allowed to consult all the GroupUser definition using the Schema query:

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.iga.api.UserGroup
```

##### Response 200 OK

```JSON
{
  "meta": {
    "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.iga.api.UserGroup",
    "resourceType": "Schema"
  },
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Schema"
  ],
  "name": "GroupUser",
  "description": "GroupUser object",
  "attributes": [
    {
      "uniqueness": "none",
      "name": "user",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "group",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "createdOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    }
  ],
  "id": "urn:soffid:com.soffid.iam.iga.api.UserGroup"
}
```

## Full JSON example

<p class="callout info">Visit [SCIM GroupUser examples](https://bookstack.soffid.com/books/scim/page/scim-groupuser-examples "SCIM GroupUser examples") page</p>

# RoleAccount resource

## /RoleAccount

### Dictionary table

<p class="callout info">The diagram service model of the object: [https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/iga/api/RoleAccount.html](https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/iga/api/RoleAccount.html)</p>

## Query Schema

It is allowed to consult all the RoleAccount definition using the Schema query:

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.iga.api.RoleAccount
```

##### Response 200 OK

```JSON
{
  "meta": {
    "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.iga.api.RoleAccount",
    "resourceType": "Schema"
  },
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Schema"
  ],
  "name": "RoleAccount",
  "description": "RoleAccount object",
  "attributes": [
    {
      "uniqueness": "none",
      "name": "id",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "accountName",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "accountSystem",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "roleName",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "domainValue",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "system",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "userName",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "startDate",
      "mutability": "readWrite",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "endDate",
      "mutability": "readWrite",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "holderGroup",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "certificationDate",
      "mutability": "readWrite",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "externalId",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    }
  ],
  "id": "urn:soffid:com.soffid.iam.iga.api.RoleAccount"
}
```

## Full JSON example

<p class="callout info">Visit [SCIM RoleAccount examples](https://bookstack.soffid.com/books/scim/page/scim-roleaccount-examples "SCIM RoleAccount examples") page</p>

# Host resource

## /Host

### Dictionary table

<p class="callout info">The diagram service model of the object: [https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/am/api/Host.html](https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/am/api/Host.html)</p>

Soffid allows you to add customized data to the user object. You can do that on metadata, on the proper object.

- <span class="link" id="bkmrk-main-menu">Main Menu</span><span id="bkmrk-%C2%A0%3E%C2%A0"> &gt; </span><span class="link" id="bkmrk-administration">Configuration</span><span id="bkmrk-%C2%A0%3E%C2%A0-1"> &gt; </span><span class="link" id="bkmrk-global-settings">Global Settings</span><span id="bkmrk-%C2%A0%3E%C2%A0-2"> &gt; </span><span class="link" id="bkmrk-metadata%22.">Metadata</span>

## Query Schema

It is allowed to consult all the Host definition using the Schema query:

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.am.api.Host
```

##### Response 200 OK

```JSON
{
  "meta": {
    "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.am.api.Host",
    "resourceType": "Schema"
  },
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Schema"
  ],
  "name": "Host",
  "description": "Host object",
  "attributes": [
    {
      "uniqueness": "none",
      "name": "name",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "description",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "network",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "ip",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "dynamicIp",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "mail",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "folders",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "mac",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "printersServer",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "serialNumber",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "os",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "hostAlias",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": true,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "dhcp",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "lastSeen",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "created",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "locked",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "subattributes": [
        {
          "uniqueness": "none",
          "name": "device",
          "description": "Device type",
          "mutability": "readWrite",
          "type": "string",
          "caseExact": true,
          "returned": "default",
          "multiValued": false,
          "required": false
        },
        {
          "uniqueness": "none",
          "name": "detectedOs",
          "description": "Operating system",
          "mutability": "readWrite",
          "type": "string",
          "caseExact": true,
          "returned": "default",
          "multiValued": false,
          "required": false
        },
        {
          "uniqueness": "none",
          "name": "browser",
          "description": "Internet browser",
          "mutability": "readWrite",
          "type": "string",
          "caseExact": true,
          "returned": "default",
          "multiValued": false,
          "required": false
        },
        {
          "uniqueness": "none",
          "name": "cpu",
          "description": "CPU type",
          "mutability": "readWrite",
          "type": "string",
          "caseExact": true,
          "returned": "default",
          "multiValued": false,
          "required": false
        }
      ],
      "uniqueness": "none",
      "name": "attributes",
      "description": "Custom attributes",
      "mutability": "readWrite",
      "type": "complex",
      "returned": "default",
      "multiValued": false
    }
  ],
  "id": "urn:soffid:com.soffid.iam.am.api.Host"
}
```

## Full JSON example

<p class="callout info">Visit [SCIM Host examples](https://bookstack.soffid.com/books/scim/page/scim-host-examples "SCIM Host examples") page</p>

# MailList resource

## /MailList

### Dictionary table

<p class="callout info">The diagram service model of the object: [https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/iga/api/MailList.html](https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/iga/api/MailList.html)</p>

Soffid allows you to add customized data to the user object. You can do that on metadata, on the proper object.

- <span class="link" id="bkmrk-main-menu">Main Menu</span><span id="bkmrk-%C2%A0%3E%C2%A0"> &gt; </span><span class="link" id="bkmrk-administration">Administration</span><span id="bkmrk-%C2%A0%3E%C2%A0-0"> &gt; </span><span class="link" id="bkmrk-configure-soffid">Configure Soffid</span><span id="bkmrk-%C2%A0%3E%C2%A0-1"> &gt; </span><span class="link" id="bkmrk-global-settings">Global Settings</span><span id="bkmrk-%C2%A0%3E%C2%A0-2"> &gt; </span><span class="link" id="bkmrk-metadata%22.">Metadata</span>

## Query Schema

It is allowed to consult all the MailList definition using the Schema query:

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.iga.api.MailList
```

##### Response 200 OK

```JSON
{
  "meta": {
    "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.iga.api.MailList",
    "resourceType": "Schema"
  },
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Schema"
  ],
  "name": "MailList",
  "description": "MailList object",
  "attributes": [
    {
      "uniqueness": "none",
      "name": "name",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "domainName",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "description",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "lists",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": true,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "externalList",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": true,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "roleMembers",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": true,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "groupMembers",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": true,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "usersList",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": true,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "listsBelong",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "explodedUsersList",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": true,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    }
  ],
  "id": "urn:soffid:com.soffid.iam.iga.api.MailList"
}
```

## Full JSON example

<p class="callout info">Visit [SCIM MailList examples](https://bookstack.soffid.com/books/scim/page/scim-maillist-examples "SCIM MailList examples") page.</p>

# MailDomain resource

## /MailDomain

### Dictionary table

<p class="callout info">The diagram service model of the object: [https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/iga/api/MailDomain.html](https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/iga/api/MailDomain.html)</p>

## Query Schema

It is allowed to consult all the MailDomain definition using the Schema query:

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.iga.api.MailDomain
```

##### Response 200 OK

```JSON
{
  "meta": {
    "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.iga.api.MailDomain",
    "resourceType": "Schema"
  },
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Schema"
  ],
  "name": "MailDomain",
  "description": "MailDomain object",
  "attributes": [
    {
      "uniqueness": "none",
      "name": "name",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "description",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "id",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "obsolete",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    }
  ],
  "id": "urn:soffid:com.soffid.iam.iga.api.MailDomain"
}
```

### Full JSON example

<p class="callout info">Visit [SCIM MailDomain examples](https://bookstack.soffid.com/books/scim/page/scim-maildomain-examples "SCIM MailDomain examples") page.</p>

# Network resource

## /Network

## Dictionary table

<p class="callout info">The diagram service model of the object: [https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/am/api/Network.html](https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/am/api/Network.html)</p>

## Query Schema

It is allowed to consult all the Network definition using the Schema query:

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.am.api.Network
```

##### Response 200

```JSON
{
  "meta": {
    "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.am.api.Network",
    "resourceType": "Schema"
  },
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Schema"
  ],
  "name": "Network",
  "description": "Network object",
  "attributes": [
    {
      "uniqueness": "none",
      "name": "id",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "name",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "ip",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "description",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "mask",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "type",
      "canonicalValues": [
        "l",
        "w",
        "e"
      ],
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "lanAccess",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "dhcp",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "dhcpSupport",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "loginRestriction",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "discovery",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "discoveryServer",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "discoveryRanges",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "countryCode",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    }
  ],
  "id": "urn:soffid:com.soffid.iam.am.api.Network"
}
```

### Full JSON example

<p class="callout info">Visit [SCIM Network examples](https://bookstack.soffid.com/books/scim/page/scim-network-examples "SCIM Network examples") page.</p>

# DomainValue resource

## /DomainValue

### Dictionary table

<p class="callout info">The diagram service model of the object: [https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/iga/api/DomainValue.html](https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/iga/api/DomainValue.html)</p>

## Query Schema

It is allowed to consult all the DomainValue definition using the Schema query:

##### Request

```XML
GET https://<your-domain>/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.iga.api.DomainValue
```

##### Response 200 OK

```JSON
{
  "meta": {
    "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.iga.api.DomainValue",
    "resourceType": "Schema"
  },
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Schema"
  ],
  "name": "DomainValue",
  "description": "DomainValue object",
  "attributes": [
    {
      "uniqueness": "none",
      "name": "id",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "value",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "description",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "domainName",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "informationSystemName",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    }
  ],
  "id": "urn:soffid:com.soffid.iam.iga.api.DomainValue"
}
```

## Full JSON example

<p class="callout info">Visit[ SCIM DomainValue examples](https://bookstack.soffid.com/books/scim/page/scim-domainvalue-examples "SCIM DomainValue examples") page.</p>

# VaultFolder resource

## /VaultFolder

### Dictionary table

<p class="callout info">The diagram service model of the object: [https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/am/api/VaultFolder.html](https://download.soffid.com/doc/console/latest/uml/com/soffid/iam/api/VaultFolder.htmlhttps://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/am/api/VaultFolder.html)</p>

## Query Schema

It is allowed to consult all the VaultFolder definitions using the Schema query:

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.am.api.VaultFolder
```

##### Response 200 OK

```JSON
{
  "meta": {
    "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.am.api.VaultFolder",
    "resourceType": "Schema"
  },
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Schema"
  ],
  "name": "VaultFolder",
  "description": "VaultFolder object",
  "attributes": [
    {
      "uniqueness": "none",
      "name": "name",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "description",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "parentFolder",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "grantedGroups",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "grantedUsers",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "grantedRoles",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "managerGroups",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "managerUsers",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "managerRoles",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "ownerGroups",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "ownerUsers",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "ownerRoles",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "navigateGroups",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "navigateUsers",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "navigateRoles",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "accessLevel",
      "canonicalValues": [
        "N",
        "U",
        "M",
        "O",
        "-"
      ],
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "pamPolicy",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    }
  ],
  "id": "urn:soffid:com.soffid.iam.am.api.VaultFolder"
}
```

## Full JSON example

<p class="callout info">Visit [SCIM VaultFolder examples](https://bookstack.soffid.com/books/scim/page/scim-vaultfolder-examples "SCIM VaultFolder examples") page.</p>

# System resource

## /System

### Dictionary table

<p class="callout info">The diagram service model of the object: [https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/iga/api/System.html](https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/iga/api/System.html)</p>

## Query Schema

It is allowed to consult all the System definition using the Schema query:

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.iga.api.System
```

##### Response 200 OK

```JSON
{
  "meta": {
    "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.iga.api.System",
    "resourceType": "Schema"
  },
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Schema"
  ],
  "name": "System",
  "description": "System object",
  "attributes": [
    {
      "uniqueness": "none",
      "name": "name",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "description",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "className",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "url",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "url2",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "rolebased",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "trusted",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "userTypes",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "manualAccountCreation",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "fullReconciliation",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "generateTasksOnLoad",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "groupsList",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "accessControl",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "passwordsDomainId",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "passwordsDomain",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "usersDomain",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "readOnly",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "pause",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "authoritative",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "timeStamp",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "created",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "authoritativeProcess",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "sharedDispatcher",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "threads",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "timeout",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "longTimeout",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "usage",
      "canonicalValues": [
        "IAM",
        "PAM",
        "SSE"
      ],
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "deltaChanges",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "removeRolesFromDisabledAccounts",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createDisabledAccounts",
      "mutability": "readWrite",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    }
  ],
  "id": "urn:soffid:com.soffid.iam.iga.api.System"
}
```

## Full JSON example

<p class="callout info">Visit [SCIM System examples](https://bookstack.soffid.com/books/scim/page/scim-system-examples "SCIM System examples") page.</p>

# CustomObject resource

## /CustomObject

## Dictionary table

<p class="callout info">The diagram service model of the object: [https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/iga/api/CustomObject.html](https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/iga/api/CustomObject.html)</p>

## Query Schema

It is allowed to consult all the CustomObject definition using the Schema query:

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.iga.api.CustomObject
```

##### Response 200 OK

```JSON
{
  "meta": {
    "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.iga.api.CustomObject",
    "resourceType": "Schema"
  },
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Schema"
  ],
  "name": "CustomObject",
  "description": "CustomObject object",
  "attributes": [
    {
      "uniqueness": "none",
      "name": "id",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "name",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "description",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "type",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "attributes",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    }
  ],
  "id": "urn:soffid:com.soffid.iam.iga.api.CustomObject"
}
```

## Full JSON example

<p class="callout info">Visit [SCIM CustomObject examples](https://bookstack.soffid.com/books/scim/page/scim-customobject-examples "SCIM CustomObject examples") page.</p>

# ProcessDefinition resource

## /ProcessDefinition

### Dictionary table

<p class="callout info">The diagram service model of the object: [https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/bpm/api/ProcessDefinition.html](https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/bpm/api/ProcessDefinition.html)</p>

## Query Schema

It is allowed to consult all the ProcessDefinition definition using the Schema query:

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.bpm.api.ProcessDefinition
```

##### Response 200 OK

```JSON
{
  "meta": {
    "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.bpm.api.ProcessDefinition",
    "resourceType": "Schema"
  },
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Schema"
  ],
  "name": "ProcessDefinition",
  "description": "ProcessDefinition object",
  "attributes": [
    {
      "uniqueness": "none",
      "name": "version",
      "mutability": "readOnly",
      "type": "integer",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "tag",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "name",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "server",
      "name": "id",
      "mutability": "readOnly",
      "type": "integer",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "enabled",
      "mutability": "readOnly",
      "type": "boolean",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "appliesTo",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "type",
      "mutability": "readOnly",
      "type": "complex",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "deployed",
      "mutability": "readOnly",
      "type": "complex",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "author",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    }
  ],
  "id": "urn:soffid:com.soffid.iam.bpm.api.ProcessDefinition"
}
```

## Full JSON example

<p class="callout info">Visit [SCIM ProcessDefinition examples](https://bookstack.soffid.com/books/scim/page/scim-processdefinition-examples "SCIM ProcessDefinition examples") page.</p>

# ProcessInstance resource

## /ProcessInstance

### Dictionary table

<p class="callout info">The diagram service model of the object: [https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/bpm/api/ProcessInstance.html](https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/bpm/api/ProcessInstance.html)</p>

## QUery Schema

It is allowed to consult all the ProcessInstance definitions using the Schema query:

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.bpm.api.ProcessInstance
```

##### Response 200 OK

```JSON
{
    "meta": {
        "location": "http://soffid.pat.lab:8080/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.bpm.api.ProcessInstance",
        "resourceType": "Schema"
    },
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:Schema"
    ],
    "name": "ProcessInstance",
    "description": "ProcessInstance object",
    "attributes": [
        {
            "uniqueness": "server",
            "name": "id",
            "mutability": "readOnly",
            "type": "integer",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "description",
            "mutability": "readOnly",
            "type": "string",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "start",
            "mutability": "readOnly",
            "type": "complex",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "end",
            "mutability": "readOnly",
            "type": "complex",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "variables",
            "mutability": "readWrite",
            "type": "complex",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "currentTask",
            "mutability": "readOnly",
            "type": "string",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "comments",
            "mutability": "readWrite",
            "type": "complex",
            "caseExact": true,
            "returned": "default",
            "multiValued": true,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "processDefinition",
            "mutability": "immutable",
            "type": "integer",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "dummyProcess",
            "mutability": "readOnly",
            "type": "boolean",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "transition",
            "mutability": "writeOnly",
            "type": "string",
            "caseExact": true,
            "returned": "default",
            "multiValued": true,
            "required": false
        }
    ],
    "id": "urn:soffid:com.soffid.iam.bpm.api.ProcessInstance"
}
```

### Full JSON example

<p class="callout info">Visit [SCIM ProcessInstance examples](https://bookstack.soffid.com/books/scim/page/scim-processinstance-examples "SCIM ProcessInstance examples") page.</p>

# TaskInstance resource

## /TaskInstance

### Dictionary table

<p class="callout info">The diagram service model of the object: [https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/bpm/api/TaskInstance.html](https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/bpm/api/TaskInstance.html)</p>

## Query Schema

It is allowed to consult all the TaskInstance definition using the Schema query:

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.bpm.api.TaskInstance
```

##### Response 200 OK

```JSON
{
    "meta": {
        "location": "http://soffid.pat.lab:8080/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.bpm.api.TaskInstance",
        "resourceType": "Schema"
    },
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:Schema"
    ],
    "name": "TaskInstance",
    "description": "TaskInstance object",
    "attributes": [
        {
            "uniqueness": "server",
            "name": "id",
            "mutability": "readOnly",
            "type": "integer",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "processName",
            "mutability": "readOnly",
            "type": "string",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "server",
            "name": "processId",
            "mutability": "readOnly",
            "type": "integer",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "processDefinition",
            "mutability": "readOnly",
            "type": "integer",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "dummyTask",
            "mutability": "readOnly",
            "type": "boolean",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "name",
            "mutability": "readOnly",
            "type": "string",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "description",
            "mutability": "readOnly",
            "type": "string",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "actorId",
            "mutability": "readWrite",
            "type": "string",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "create",
            "mutability": "readOnly",
            "type": "complex",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "start",
            "mutability": "readOnly",
            "type": "complex",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "end",
            "mutability": "readOnly",
            "type": "complex",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "dueDate",
            "mutability": "readOnly",
            "type": "complex",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "priority",
            "mutability": "readOnly",
            "type": "integer",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "cancelled",
            "mutability": "readOnly",
            "type": "boolean",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "open",
            "mutability": "readOnly",
            "type": "boolean",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "signalling",
            "mutability": "readOnly",
            "type": "boolean",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "blocking",
            "mutability": "readOnly",
            "type": "boolean",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "swimlane",
            "mutability": "readOnly",
            "type": "string",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "pooledActors",
            "mutability": "readOnly",
            "type": "string",
            "caseExact": true,
            "returned": "default",
            "multiValued": true,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "variables",
            "mutability": "readWrite",
            "type": "complex",
            "caseExact": true,
            "returned": "default",
            "multiValued": false,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "transitions",
            "mutability": "readOnly",
            "type": "string",
            "caseExact": true,
            "returned": "default",
            "multiValued": true,
            "required": false
        },
        {
            "uniqueness": "none",
            "name": "transition",
            "mutability": "writeOnly",
            "type": "string",
            "caseExact": true,
            "returned": "default",
            "multiValued": true,
            "required": false
        }
    ],
    "id": "urn:soffid:com.soffid.iam.bpm.api.TaskInstance"
}
```

## Full JSON example

<p class="callout info">Visit [SCIM TaskInstance examples](https://bookstack.soffid.com/books/scim/page/scim-taskinstance-examples "SCIM TaskInstance examples") page.</p>

# Issue resource

## /Issue

### Dictionary table

<p class="callout info">The diagram service model of the object: [https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/rc/api/Issue.html](https://download.soffid.com/doc/console/4.0.0/uml/com/soffid/iam/rc/api/Issue.html)</p>


## Query Schema

It is allowed to consult all the Issue definition using the Schema query:

##### Request

```shell
GET https://<your-domain>/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.rc.api.Issue

```


##### Response 200 OK

```JSON
{
  "meta": {
    "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/Schemas/urn:soffid:com.soffid.iam.rc.api.Issue",
    "resourceType": "Schema"
  },
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Schema"
  ],
  "name": "Issue",
  "description": "Issue object",
  "attributes": [
    {
      "uniqueness": "none",
      "name": "number",
      "mutability": "readOnly",
      "type": "integer",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "requester",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "type",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "description",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "times",
      "mutability": "readOnly",
      "type": "integer",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "status",
      "canonicalValues": [
        "N",
        "A",
        "S",
        "D"
      ],
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": true
    },
    {
      "uniqueness": "none",
      "name": "failedLoginPct",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "humanConfidence",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "system",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "otpDevice",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "exception",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "risk",
      "canonicalValues": [
        "L",
        "H",
        "F",
        "N"
      ],
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "roleAccount",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "rule",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "jobName",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "ip",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "country",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "account",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "loginName",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "hosts",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": true,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "browsers",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": true,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "users",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": true,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "breachedEmail",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "dataBreach",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "htmlDescription",
      "mutability": "readWrite",
      "type": "binary",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "created",
      "mutability": "readWrite",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "acknowledged",
      "mutability": "readWrite",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "solved",
      "mutability": "readWrite",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "actor",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "performedActions",
      "mutability": "readWrite",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "updatedBy",
      "mutability": "readOnly",
      "type": "string",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    },
    {
      "uniqueness": "none",
      "name": "createdOn",
      "mutability": "readOnly",
      "type": "dateTime",
      "caseExact": true,
      "returned": "default",
      "multiValued": false,
      "required": false
    }
  ],
  "id": "urn:soffid:com.soffid.iam.rc.api.Issue"
}
```

## Full JSON example

<p class="callout info">Visit [SCIM Issue examples](https://bookstack.soffid.com/books/scim/page/scim-issue-examples) page</p>

# SCIM full examples



# Previous steps

Please note that the SCIM REST Web Service Add-on installed must be installed, please check this part in [How to use SCIM in Soffid # Installation](https://bookstack.soffid.com/link/120#bkmrk-installation)

Please note that a user with the authentication is required, please check this part in [How to use SCIM in Soffid # Confirm authorization](https://bookstack.soffid.com/link/120#bkmrk-confirm-authorizatio)

Please note that is recommended to use a REST client, please see our example in [Testing tool # RESTer](https://bookstack.soffid.com/link/118#bkmrk-rester)

Please note that the correct header parameters must be used, please browse them in [SCIM in Soffid # HTTP request](https://bookstack.soffid.com/link/114#bkmrk-http-request)

# SCIM User examples

## Operations

This page shows the operations that can be performed for the user object.

### List all

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/User
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 64,
    "startIndex": 1,
    "Resources": [
        {
            "lastName": "Pig",
            "profileServer": "null",
            "createdByUser": "hrms",
            "fullName": "Dad Pig",
            "active": true,
            "userName": "1",
            "mailAlias": "",
            "mailServer": "null",
            "firstName": "Dad",
            "createdDate": "2021-02-16 13:38:26",
            "multiSession": false,
            "meta": {
                "location": "http://soffid.pat.lab:8080/webservice/scim2/v1/User/1477909",
                "links": {
                    "roleAccounts": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleAccount?filter=userCode+eq+'1'+and+enabled+eq+true",
                    "groupUsers": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/GroupUser?filter=user+eq+'1'+and+disabled+eq+false",
                    "accounts": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Account?filter=type+eq+U+and+users.user.userName+eq+'1'"
                },
                "resourceType": "User"
            },
            "modifiedByUser": "admin",
            "schemas": [
                "urn:soffid:com.soffid.iam.api.User"
            ],
            "modifiedDate": "2021-05-04 09:24:54",
            "attributes": {},
            "id": 1477909,
            "userType": "I",
            "homeServer": "null",
            "primaryGroupDescription": "World Original",
            "primaryGroup": "world"
        },
        {
            "lastName": "SUZY",
            "profileServer": "null",
            "createdByUser": "hrms",
            "fullName": "Suzy SUZY",
            "active": true,
            "userName": "10",
            "mailAlias": "",
            "mailServer": "null",
            "firstName": "Suzy",
            "createdDate": "2021-02-16 13:38:27",
            "multiSession": false,
            "meta": {
                "location": "http://soffid.pat.lab:8080/webservice/scim2/v1/User/1477931",
                "links": {
                    "roleAccounts": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleAccount?filter=userCode+eq+'10'+and+enabled+eq+true",
                    "groupUsers": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/GroupUser?filter=user+eq+'10'+and+disabled+eq+false",
                    "accounts": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Account?filter=type+eq+U+and+users.user.userName+eq+'10'"
                },
                "resourceType": "User"
            },
            "modifiedByUser": "admin",
            "schemas": [
                "urn:soffid:com.soffid.iam.api.User"
            ],
            "modifiedDate": "2021-05-05 14:11:37",
            "attributes": {},
            "id": 1477931,
            "userType": "I",
            "homeServer": "null",
            "primaryGroupDescription": "World Original",
            "primaryGroup": "world"
        },
        {
            "lastName": "Rabbit",
            "profileServer": "null",
            "createdByUser": "hrms",
            "fullName": "Ricchard Rabbit",
            "active": true,
            "userName": "11",
            "mailAlias": "",
            "mailServer": "null",
            "firstName": "Ricchard",
            "createdDate": "2021-02-16 13:38:27",
            "multiSession": false,
            "meta": {
                "location": "http://soffid.pat.lab:8080/webservice/scim2/v1/User/1477953",
                "links": {
                    "roleAccounts": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleAccount?filter=userCode+eq+'11'+and+enabled+eq+true",
                    "groupUsers": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/GroupUser?filter=user+eq+'11'+and+disabled+eq+false",
                    "accounts": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Account?filter=type+eq+U+and+users.user.userName+eq+'11'"
                },
                "resourceType": "User"
            },
            "modifiedByUser": "admin",
            "schemas": [
                "urn:soffid:com.soffid.iam.api.User"
            ],
            "modifiedDate": "2021-02-17 19:06:20",
            "attributes": {},
            "id": 1477953,
            "userType": "I",
            "homeServer": "null",
            "primaryGroupDescription": "World Original",
            "primaryGroup": "world"
        },
      .......
    ]
}
```

### List by filter

List all users with a filter expression.

<p class="callout info">It is allowed to use pagination and sort the information, for more information visit the [Sorting](https://bookstack.soffid.com/link/116#bkmrk-sorting) and [Pagination](https://bookstack.soffid.com/link/116#bkmrk-pagination) information.</p>

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/User?filter=lastName co ada&sortOrder=descending&sortBy=userName
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 13,
    "startIndex": 1,
    "Resources": [
        {
            "lastName": "ADAMS",
            "comments": "Changed",
            "profileServer": "null",
            "createdByUser": "soffid.bubu.lab",
            "fullName": "Wally ADAMS",
            "active": true,
            "userName": "wally",
            "mailAlias": "",
            "mailServer": "null",
            "firstName": "Wally",
            "createdDate": "2020-12-11 11:23:58",
            "multiSession": false,
            "meta": {
                "location": "http://soffid.pat.lab:8080/webservice/scim2/v1/User/1002599",
                "links": {
                    "roleAccounts": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleAccount?filter=userCode+eq+'wally'+and+enabled+eq+true",
                    "groupUsers": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/GroupUser?filter=user+eq+'wally'+and+disabled+eq+false",
                    "accounts": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Account?filter=type+eq+U+and+users.user.userName+eq+'wally'"
                },
                "resourceType": "User"
            },
            "modifiedByUser": "admin",
            "schemas": [
                "urn:soffid:com.soffid.iam.api.User"
            ],
            "modifiedDate": "2021-04-22 19:31:01",
            "attributes": {
                "RegisterServiceProvider": "anonymous",
                "manager": "admin",
                "PHONE": "2",
                "EMAIL": "wally5@test.com",
            },
            "id": 1002599,
            "userType": "I",
            "homeServer": "null",
            "primaryGroupDescription": "Enterprise",
            "primaryGroup": "enterprise"
        },
        {
            "lastName": "ADAMS",
            "comments": "Changed",
            "profileServer": "null",
            "createdByUser": "soffid.bubu.lab",
            "fullName": "Tina ADAMS",
            "active": true,
            "userName": "tina",
            "mailAlias": "",
            "mailServer": "null",
            "firstName": "Tina",
            "createdDate": "2020-12-11 12:22:07",
            "multiSession": false,
            "meta": {
                "location": "http://soffid.pat.lab:8080/webservice/scim2/v1/User/1004678",
                "links": {
                    "roleAccounts": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleAccount?filter=userCode+eq+'tina'+and+enabled+eq+true",
                    "groupUsers": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/GroupUser?filter=user+eq+'tina'+and+disabled+eq+false",
                    "accounts": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Account?filter=type+eq+U+and+users.user.userName+eq+'tina'"
                },
                "resourceType": "User"
            },
            "modifiedByUser": "admin",
            "schemas": [
                "urn:soffid:com.soffid.iam.api.User"
            ],
            "modifiedDate": "2021-04-22 19:11:17",
            "attributes": {
                "RegisterServiceProvider": "anonymous",
                "manager": "admin",
                "PHONE": "1",
                "EMAIL": "tina11@test.com",
            },
            "id": 1004678,
            "userType": "I",
            "homeServer": "null",
            "primaryGroupDescription": "Enterprise",
            "primaryGroup": "enterprise"
        },
        {
            "lastName": "ADAMS",
            "comments": "Changed",
            "profileServer": "null",
            "createdByUser": "soffid.bubu.lab",
            "fullName": "Teodoro ADAMS",
            "active": true,
            "userName": "ted",
            "mailAlias": "",
            "mailServer": "null",
            "firstName": "Teodoro",
            "createdDate": "2020-12-11 09:18:42",
            "multiSession": false,
            "meta": {
                "location": "http://soffid.pat.lab:8080/webservice/scim2/v1/User/1000190",
                "links": {
                    "roleAccounts": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleAccount?filter=userCode+eq+'ted'+and+enabled+eq+true",
                    "groupUsers": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/GroupUser?filter=user+eq+'ted'+and+disabled+eq+false",
                    "accounts": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Account?filter=type+eq+U+and+users.user.userName+eq+'ted'"
                },
                "resourceType": "User"
            },
            "modifiedByUser": "admin",
            "schemas": [
                "urn:soffid:com.soffid.iam.api.User"
            ],
            "modifiedDate": "2021-02-04 15:44:42",
            "attributes": {
                "RegisterServiceProvider": "anonymous",
                "manager": "admin",
                "EMAIL": "test3@gmail.com",
            },
            "id": 1000190,
            "userType": "I",
            "homeServer": "null",
            "primaryGroupDescription": "Enterprise",
            "primaryGroup": "enterprise"
        },
      .........
    ]
}
```

### Query by id

Query a user by its id (primary key).

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/User/1057751
```

##### Response 200 OK

```JSON
{
    "lastName": "Smith",
    "comments": "Changed",
    "createdByUser": "soffid.bubu.lab",
    "fullName": "John Smith",
    "active": true,
    "userName": "jsmith",
    "mailAlias": "",
    "firstName": "John",
    "createdDate": "2020-12-14 17:52:14",
    "multiSession": false,
    "meta": {
        "location": "http://soffid.pat.lab:8080/webservice/scim2/v1/User/1057751",
        "links": {
            "roleAccounts": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleAccount?filter=userCode+eq+'jsmith'+and+enabled+eq+true",
            "groupUsers": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/GroupUser?filter=user+eq+'jsmith'+and+disabled+eq+false",
            "accounts": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Account?filter=type+eq+U+and+users.user.userName+eq+'jsmith'"
        },
        "resourceType": "User"
    },
    "modifiedByUser": "admin",
    "schemas": [
        "urn:soffid:com.soffid.iam.api.User"
    ],
    "modifiedDate": "2021-05-07 12:32:41",
    "attributes": {
        "RegisterServiceProvider": "anonymous",
        "manager": "admin",
        "EMAIL": "jsmith@test.com",
        "birthDate": "1970-05-26 00:00:00",
        "ActivationKey": "HPhl61lBlJ9fgcDtWyug0O15"
    },
    "id": 1057751,
    "userType": "I",
    "primaryGroupDescription": "Help desk support team",
    "primaryGroup": "it"
}
```

### Create

#### Request

```XML
POST https://<your-domain>/soffid/webservice/scim2/v1/User
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.base.api.User"
    ],
    "userName": "ckelp",
    "firstName": "Cas",
    "lastName": "Kelp",
    "userType": "I",
    "primaryGroup": "world",
    "active": true
}
```

##### Response 201 Created

```JSON
{
    "lastName": "Kelp",
    "profileServer": "null",
    "createdByUser": "admin",
    "fullName": "Cas Kelp",
    "active": true,
    "userName": "ckelp",
    "mailAlias": "",
    "mailServer": "null",
    "firstName": "Cas",
    "createdDate": "2021-05-11 09:06:49",
    "multiSession": false,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/User/1976665",
        "resourceType": "User"
    },
    "modifiedByUser": "admin",
    "schemas": [
        "urn:soffid:com.soffid.iam.api.User"
    ],
    "modifiedDate": "2021-05-11 09:06:49",
    "attributes": {},
    "id": 1976665,
    "userType": "I",
    "homeServer": "null",
    "primaryGroupDescription": "World Original",
    "primaryGroup": "world"
}
```

### Update partial

Only attributes with changes will be updated, the other will maintain the same value.

<p class="callout info">If you want to add users to a group, please visit [SCIM GroupUser examples](https://bookstack.soffid.com/books/scim/page/scim-usergroup-examples "SCIM GroupUser examples") page</p>

##### Request

```XML
PATCH https://<your-domain>/soffid/webservice/scim2/v1/User/1976665
```

**JSON**

```JSON
{
    "Operations": [
        {
            "op": "replace",
            "path": "lastName",
            "value": "Casey"
        },
        {
            "op": "replace",
            "path": "middleName",
            "value": "XX"
        }
    ]
}
```

##### Response 200 OK

```JSON
{
    "lastName": "Casey",
    "profileServer": "null",
    "createdByUser": "admin",
    "fullName": "Casey Casey XX",
    "active": true,
    "userName": "ckelp",
    "mailAlias": "",
    "mailServer": "null",
    "firstName": "Casey",
    "createdDate": "2021-05-11 09:06:49",
    "multiSession": false,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/User/1976665",
        "links": {
            "roleAccounts": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleAccount?filter=userCode+eq+'ckelp'+and+enabled+eq+true",
            "groupUsers": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/GroupUser?filter=user+eq+'ckelp'+and+disabled+eq+false",
            "accounts": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Account?filter=type+eq+U+and+users.user.userName+eq+'ckelp'"
        },
        "resourceType": "User"
    },
    "modifiedByUser": "admin",
    "schemas": [
        "urn:soffid:com.soffid.iam.api.User"
    ],
    "modifiedDate": "2021-05-11 09:33:35",
    "middleName": "XX",
    "attributes": {},
    "id": 1976665,
    "userType": "I",
    "homeServer": "null",
    "primaryGroupDescription": "World Original",
    "primaryGroup": "world"
}
```


#### Password change

Password change request. Multiple domains can be specified adding new objects inside the first "value" key. In this example we update the password on a user so that the user doesn't have to change the password on the first logon ("passwordExpired" is false).

##### Request

```Rest
PATCH https://<your-domain>/soffid/webservice/scim2/v1/User/568327
```

##### Body (JSON)

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.base.api.User"
    ],
    "Operations": [
        {
            "op": "replace",
            "path": "password",
            "value": [
                {"domain": "DEFAULT",
                "value": "NewPass1234",
                "passwordExpired": false}
    			]
        }
    ]
}
```

##### Response 200 OK

```JSON
{
    "lastName": "Peaky",
    "createdByUser": "admin",
    "fullName": "Familiar Peaky Primer",
    "active": true,
    "userName": "familiar1",
    "mailAlias": "",
    "firstName": "Familiar",
    "emailAddress": "familiar1@soffid.com",
    "mailDomain": "soffid.com",
    "createdDate": "2023-07-05 00:00:00",
    "multiSession": false,
    "meta": {
        "location": "http://pr-as-am19-dev-soffid-console-ms-ns-as-am19-dev-back.apps.aroas.westeurope.aroapp.io/soffid/webservice/scim2/v1/User/568327",
        "links": {
            "roleAccounts": "http://pr-as-am19-dev-soffid-console-ms-ns-as-am19-dev-back.apps.aroas.westeurope.aroapp.io/soffid/webservice/scim2/v1/RoleAccount?filter=userCode+eq+'familiar1'+and+enabled+eq+true",
            "groupUsers": "http://pr-as-am19-dev-soffid-console-ms-ns-as-am19-dev-back.apps.aroas.westeurope.aroapp.io/soffid/webservice/scim2/v1/GroupUser?filter=user+eq+'familiar1'+and+disabled+eq+false",
            "accounts": "http://pr-as-am19-dev-soffid-console-ms-ns-as-am19-dev-back.apps.aroas.westeurope.aroapp.io/soffid/webservice/scim2/v1/Account?filter=type+eq+U+and+users.user.userName+eq+'familiar1'",
            "issues": "http://pr-as-am19-dev-soffid-console-ms-ns-as-am19-dev-back.apps.aroas.westeurope.aroapp.io/soffid/webservice/scim2/v1/Issue?filter=user.userName+eq+'familiar1'",
            "effectiveGrants": "http://pr-as-am19-dev-soffid-console-ms-ns-as-am19-dev-back.apps.aroas.westeurope.aroapp.io/soffid/webservice/scim2/v1/User/568327/effectiveGrants"
        },
        "resourceType": "User"
    },
    "modifiedByUser": "queries",
    "schemas": [
        "urn:soffid:com.soffid.iam.api.User"
    ],
    "modifiedDate": "2024-05-15 09:46:28.714",
    "middleName": "Primer",
    "attributes": {
        "gepipId": "645cb2ed99e63065c76b51de",
        "RecoverKey": "unEVPLWQ2KLdocjmpGs2vO4uO6jL8m2VMChIypJCTUmMV867l1ZgEr5sAJBw5koJ0uOYOM3iCRC4568327",
        "email": "familiar1@soffid.com"
    },
    "id": 568327,
    "userType": "E",
    "shortName": "familiar1",
    "primaryGroupDescription": "World",
    "primaryGroup": "world"
}
```

### Update all

This operation replaces all values in the user.

- Note that the attribute id is required to confirm that the resource "...User/&lt;id&gt;" is the same that the JSON user.
- Note that all the attributes not included in the request will be cleared in the user and their data will be lost.
- Note that not all the attributes are updatable, for example, tag meta, avoid these tags. For more information see [Resource data model page](https://bookstack.soffid.com/books/scim/chapter/resource-data-model-schema)

##### Request

```XML
PUT https://<your-domain>/soffid/webservice/scim2/v1/User/1976590
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.base.api.User"
    ],
    "id": 1976665,
    "userName": "ckelp",
    "firstName": "Casey",
    "lastName": "Kelp",
    "userType": "I",
    "primaryGroup": "world",
    "homeServer": "null",
    "mailServer": "null",
    "profileServer": "null",
    "active": true
}
```

##### Response 200 OK

```JSON
{
    "lastName": "Kelp",
    "profileServer": "null",
    "createdByUser": "admin",
    "fullName": "Casey Kelp",
    "active": true,
    "userName": "ckelp",
    "mailAlias": "",
    "mailServer": "null",
    "firstName": "Casey",
    "createdDate": "2021-05-11 09:06:49",
    "multiSession": false,
    "meta": {
        "location": "http://soffid.pat.lab:8080/webservice/scim2/v1/User/1976665",
        "links": {
            "roleAccounts": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleAccount?filter=userCode+eq+'ckelp'+and+enabled+eq+true",
            "groupUsers": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/GroupUser?filter=user+eq+'ckelp'+and+disabled+eq+false",
            "accounts": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Account?filter=type+eq+U+and+users.user.userName+eq+'ckelp'"
        },
        "resourceType": "User"
    },
    "modifiedByUser": "admin",
    "schemas": [
        "urn:soffid:com.soffid.iam.api.User"
    ],
    "modifiedDate": "2021-05-11 09:35:24",
    "attributes": {},
    "id": 1976665,
    "userType": "I",
    "homeServer": "null",
    "primaryGroupDescription": "World Original",
    "primaryGroup": "world"
}
```

### Delete

<p class="callout warning">Please note after this delete, the user has to be created again to use it in the following examples.</p>

##### Request

```MarkDown
DELETE http://<your-omain>/soffid/webservice/scim2/v1/User/1976665
```

##### Response 204 No Content

```
204 No Content
```

### Error response

<p class="callout info">For more information about error response visit [https://bookstack.soffid.com/link/116#bkmrk-error-response](https://bookstack.soffid.com/link/116#bkmrk-error-response)</p>

# SCIM Group examples

## Operations

This page shows the operations that can be performed for the group object.

### List all

##### Request

```XML
GET https://<your-domain>/soffid/webservice/scim2/v1/Group
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 7,
    "startIndex": 1,
    "Resources": [
        {
            "organizational": false,
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Group/83",
                "links": {
                    "members": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/User?filter=primaryGroup+eq+'world'+or secondaryGroup.group.name+eq+'world'",
                    "administrators": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleAccount?filter=group.name+eq+'world'"
                },
                "resourceType": "Group"
            },
            "quota": "0",
            "schemas": [
                "urn:soffid:com.soffid.iam.api.Group"
            ],
            "name": "world",
            "obsolete": false,
            "description": "World Original",
            "attributes": {},
            "id": 83
        },
        {
            "organizational": false,
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Group/87",
                "links": {
                    "members": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/User?filter=primaryGroup+eq+'enterprise'+or secondaryGroup.group.name+eq+'enterprise'",
                    "administrators": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleAccount?filter=group.name+eq+'enterprise'"
                },
                "resourceType": "Group"
            },
            "quota": "0",
            "schemas": [
                "urn:soffid:com.soffid.iam.api.Group"
            ],
            "name": "enterprise",
            "obsolete": false,
            "description": "Enterprise",
            "parentGroup": "world",
            "attributes": {},
            "id": 87
        },
      ......
    ]
}
```

### List by filter

List all groups with a filter expression.

<p class="callout info">It is allowed to use pagination and sort the information, for more information visit the [Sorting](https://bookstack.soffid.com/link/116#bkmrk-sorting) and [Pagination](https://bookstack.soffid.com/link/116#bkmrk-pagination) information.</p>

##### Request

```XML
GET https://<your-domain>/soffid/webservice/scim2/v1/Group?filter=name co world
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 2,
    "startIndex": 1,
    "Resources": [
        {
            "organizational": false,
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Group/83",
                "links": {
                    "members": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/User?filter=primaryGroup+eq+'world'+or secondaryGroup.group.name+eq+'world'",
                    "administrators": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleAccount?filter=group.name+eq+'world'"
                },
                "resourceType": "Group"
            },
            "quota": "0",
            "schemas": [
                "urn:soffid:com.soffid.iam.api.Group"
            ],
            "name": "world",
            "obsolete": false,
            "description": "World Original",
            "attributes": {},
            "id": 83
        },
        {
            "organizational": false,
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Group/485118",
                "links": {
                    "members": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/User?filter=primaryGroup+eq+'world2'+or secondaryGroup.group.name+eq+'world2'",
                    "administrators": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleAccount?filter=group.name+eq+'world2'"
                },
                "resourceType": "Group"
            },
            "quota": "0",
            "schemas": [
                "urn:soffid:com.soffid.iam.api.Group"
            ],
            "name": "world2",
            "obsolete": false,
            "description": "World Modified",
            "attributes": {},
            "id": 485118
        }
    ]
}
```

### Query by id

Retrieve a group by its id (primary key).

##### Request

```XML
GET https://<your-domain>/soffid/webservice/scim2/v1/Group/83
```

##### Response 200 OK

```JSON
{
    "organizational": false,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Group/83",
        "links": {
            "members": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/User?filter=primaryGroup+eq+'world'+or secondaryGroup.group.name+eq+'world'",
            "administrators": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleAccount?filter=group.name+eq+'world'"
        },
        "resourceType": "Group"
    },
    "quota": "0",
    "schemas": [
        "urn:soffid:com.soffid.iam.api.Group"
    ],
    "name": "world",
    "obsolete": false,
    "description": "World Original",
    "attributes": {},
    "id": 83
}
```

### Create

##### Request

```XML
POST https://<your-domain>/soffid/webservice/scim2/v1/Group/
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.Group"
    ],
    "name": "EngineeringTeam",
    "description": "Enterprise engineering team",
    "parentGroup": "world"
}
```

##### Response 201 Created

```JSON
{
    "organizational": false,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Group/1976559",
        "resourceType": "Group"
    },
    "quota": "0",
    "schemas": [
        "urn:soffid:com.soffid.iam.api.Group"
    ],
    "name": "EngineeringTeam",
    "obsolete": false,
    "description": "Enterprise engineering team",
    "parentGroup": "world",
    "attributes": {},
    "id": 1976559
}
```

### Update partial

Only attributes with changes will be updated, the other will maintain the same value.

<p class="callout info">If you want to add users to a group, please visit [SCIM GroupUser examples](https://bookstack.soffid.com/books/scim/page/scim-usergroup-examples "SCIM GroupUser examples") page</p>

##### Request

```XML
PATCH https://<your-domain>/soffid/webservice/scim2/v1/Group/1976559
```

**JSON**

```JSON
{
    "Operations": [
        {
            "op": "replace",
            "path": "description",
            "value": "Enterprise Engineering Group"
        },
        {
            "op": "replace",
            "path": "type",
            "value": "CC"
        }
    ]
}
```

##### Response 200 OK

```JSON
{
    "organizational": false,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Group/1976559",
        "links": {
            "members": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/User?filter=primaryGroup+eq+'EngineeringTeam'+or secondaryGroup.group.name+eq+'EngineeringTeam'",
            "administrators": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleAccount?filter=group.name+eq+'EngineeringTeam'"
        },
        "resourceType": "Group"
    },
    "quota": "0",
    "schemas": [
        "urn:soffid:com.soffid.iam.api.Group"
    ],
    "name": "EngineeringTeam",
    "obsolete": false,
    "description": "Enterprise Engineering Group",
    "parentGroup": "world",
    "attributes": {},
    "id": 1976559,
    "type": "CC"
}
```

### Update all

This operation replaces all values in the group.

- Note that the attribute id is required to confirm that the resource "...Group/&lt;id&gt;" is the same that the JSON group.
- Note that all the attributes not included in the request will be cleared in the group and their data will be lost.
- Note that not all the attributes are updatable, for example, tag meta, avoid these tags. For more information see [Resource data model page](https://bookstack.soffid.com/books/scim/chapter/resource-data-model-schema).

##### Request

```XML
PUT http://<your-domain>/soffid/webservice/scim2/v1/Group/1976559
```

**JSON**

```JSON
{
    "schemas": [
      "urn:soffid:com.soffid.iam.iga.api.Group"
    ],
    "id": 1976559,
    "name": "EngineeringTeam",
    "description": "Enterprise engineering team",
    "parentGroup": "world"
}
```

##### Response 200 OK

```JSON
{
    "organizational": false,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Group/1976559",
        "links": {
            "members": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/User?filter=primaryGroup+eq+'EngineeringTeam'+or secondaryGroup.group.name+eq+'EngineeringTeam'",
            "administrators": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleAccount?filter=group.name+eq+'EngineeringTeam'"
        },
        "resourceType": "Group"
    },
    "quota": "0",
    "schemas": [
        "urn:soffid:com.soffid.iam.api.Group"
    ],
    "name": "EngineeringTeam",
    "obsolete": false,
    "description": "Enterprise engineering team",
    "parentGroup": "world",
    "attributes": {},
    "id": 1976559
}
```

### Delete

<p class="callout warning">Please note that after this delete action, you will need to create again the group to use it in the next examples.</p>

##### Request

```XML
DELETE https://<your-domain>/soffid/webservice/scim2/v1/Group/1976559
```

##### Response 204 No Content

```
204 No Content
```

### Error response

<p class="callout info">For more information about error response visit [https://bookstack.soffid.com/link/116#bkmrk-error-response](https://bookstack.soffid.com/link/116#bkmrk-error-response)</p>

# SCIM Account examples

## Operations

This page shows the operations that can be performed for the account object

### List all

List all accounts, disabled or not.

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Account
```

##### Response 200 OK

For example, after the Soffid installation, these are the available account.

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 1,
    "startIndex": 1,
    "Resources": [
        {
            "lastLogin": "2021-05-10 13:00:40",
            "grantedRoles": [],
            "description": "Soffid Administrator",
            "type": "U",
            "ownerGroups": [],
            "oldName": "admin",
            "loginName": "admin",
            "inheritNewPermissions": false,
            "disabled": false,
            "id": 103,
            "managerGroups": [],
            "grantedGroups": [],
            "lastPasswordSet": "2021-05-05 11:32:14",
            "passwordExpiration": "2022-05-05 00:00:00",
            "passwordPolicy": "I",
            "accessLevel": "O",
            "managerRoles": [],
            "created": "2020-02-13 23:01:44",
            "system": "soffid",
            "ownerRoles": [],
            "meta": {
                "location": "http://<your-domain>/webservice/scim2/v1/Account/103",
                "links": {
                    "roleAccounts": "http://<your-domain>/webservice/scim2/v1/RoleAccount?filter=account.id+eq+103+and+enabled+eq+true",
                    "users": "http://<your-domain>/webservice/scim2/v1/User?filter=accountAccess.account.id+eq+103+or+accounts.account.id+eq+103"
                },
                "resourceType": "Account"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.api.Account"
            ],
            "name": "admin",
            "managerUsers": [],
            "attributes": {},
            "status": "a",
            "ownerUsers": [
                "admin"
            ],
            "grantedUsers": []
        }
    ]
}
```

### List by filter

List all accounts with a filter expression.

<p class="callout info">It is allowed to use pagination and sort the information, for more information visit the [Sorting](https://bookstack.soffid.com/link/116#bkmrk-sorting) and [Pagination](https://bookstack.soffid.com/link/116#bkmrk-pagination) information.</p>

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Account?filter=name co "adm" and passwordPolicy  pr
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 3,
    "startIndex": 1,
    "Resources": [
        {
            "lastLogin": "2021-05-10 13:05:15",
            "grantedRoles": [],
            "description": "Soffid Administrator",
            "type": "U",
            "ownerGroups": [],
            "oldName": "admin2",
            "loginName": "admin",
            "inheritNewPermissions": false,
            "disabled": false,
            "id": 103,
            "managerGroups": [],
            "grantedGroups": [],
            "lastPasswordSet": "2021-05-05 11:32:14",
            "passwordExpiration": "2022-05-05 00:00:00",
            "passwordPolicy": "I",
            "accessLevel": "O",
            "managerRoles": [],
            "created": "2020-02-13 23:01:44",
            "system": "soffid",
            "ownerRoles": [],
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Account/103",
                "links": {
                    "roleAccounts": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleAccount?filter=account.id+eq+103+and+enabled+eq+true",
                    "users": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/User?filter=accountAccess.account.id+eq+103+or+accounts.account.id+eq+103"
                },
                "resourceType": "Account"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.api.Account"
            ],
            "name": "admin",
            "managerUsers": [],
            "attributes": {},
            "status": "a",
            "ownerUsers": [
                "admin"
            ],
            "grantedUsers": []
        },
        {
            "passwordPolicy": "I",
            "grantedRoles": [],
            "accessLevel": "O",
            "managerRoles": [],
            "created": "2021-03-04 22:37:21",
            "description": "Soffid test account",
            "type": "I",
            "system": "soffid",
            "ownerGroups": [],
            "ownerRoles": [],
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Account/1587766",
                "links": {
                    "roleAccounts": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleAccount?filter=account.id+eq+1587766+and+enabled+eq+true",
                    "users": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/User?filter=accountAccess.account.id+eq+1587766+or+accounts.account.id+eq+1587766"
                },
                "resourceType": "Account"
            },
            "loginName": "admintest",
            "schemas": [
                "urn:soffid:com.soffid.iam.api.Account"
            ],
            "name": "admintest",
            "inheritNewPermissions": false,
            "managerUsers": [
                "dilbert",
                "dogbert"
            ],
            "disabled": false,
            "attributes": {},
            "id": 1587766,
            "managerGroups": [],
            "grantedGroups": [],
            "status": "a",
            "ownerUsers": [
                "admin"
            ],
            "grantedUsers": []
        },
        {
            "passwordPolicy": "I",
            "grantedRoles": [],
            "accessLevel": "O",
            "managerRoles": [],
            "created": "2021-03-04 22:44:06",
            "description": "Soffid test account 2",
            "type": "I",
            "system": "soffid",
            "ownerGroups": [],
            "ownerRoles": [],
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Account/1587776",
                "links": {
                    "roleAccounts": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleAccount?filter=account.id+eq+1587776+and+enabled+eq+true",
                    "users": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/User?filter=accountAccess.account.id+eq+1587776+or+accounts.account.id+eq+1587776"
                },
                "resourceType": "Account"
            },
            "loginName": "admintest2",
            "schemas": [
                "urn:soffid:com.soffid.iam.api.Account"
            ],
            "name": "admintest2",
            "inheritNewPermissions": false,
            "managerUsers": [
                "dilbert",
                "dogbert"
            ],
            "disabled": false,
            "attributes": {},
            "id": 1587776,
            "managerGroups": [],
            "grantedGroups": [],
            "status": "a",
            "ownerUsers": [
                "admin"
            ],
            "grantedUsers": []
        }
    ]
}
```

### Query by id

Query an account by its id (primary key).

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Account/1057754
```

##### Response 200 OK

```JSON
{
    "passwordPolicy": "I",
    "grantedRoles": [],
    "accessLevel": "-",
    "managerRoles": [],
    "created": "2020-12-14 17:52:14",
    "description": "John Smith",
    "type": "U",
    "system": "idp",
    "ownerGroups": [],
    "ownerRoles": [],
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Account/1057754",
        "links": {
            "roleAccounts": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleAccount?filter=account.id+eq+1057754+and+enabled+eq+true",
            "users": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/User?filter=accountAccess.account.id+eq+1057754+or+accounts.account.id+eq+1057754"
        },
        "resourceType": "Account"
    },
    "loginName": "jsmith",
    "schemas": [
        "urn:soffid:com.soffid.iam.api.Account"
    ],
    "name": "jsmith",
    "inheritNewPermissions": false,
    "managerUsers": [],
    "disabled": false,
    "attributes": {},
    "id": 1057754,
    "managerGroups": [],
    "grantedGroups": [],
    "status": "a",
    "ownerUsers": [
        "jsmith"
    ],
    "grantedUsers": []
}
```

### Create

#### Request

```XML
POST https://<your-domain>/soffid/webservice/scim2/v1/Account
```

**JSON**

```JSON
{ 
    "schemas": ["urn:soffid:com.soffid.iam.base.api.Account"],
    "name": "Guest",
    "type": "I",
    "system": "soffid",
    "passwordPolicy": "I",
    "description": "Guest user",
    "inheritNewPermissions": false,
    "disabled": false
}
```

##### Response 201 Created

```JSON
{
    "passwordPolicy": "I",
    "grantedRoles": [],
    "managerRoles": [],
    "description": "Guest user",
    "type": "I",
    "system": "soffid",
    "ownerGroups": [],
    "ownerRoles": [],
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Account/1976454",
        "resourceType": "Account"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.api.Account"
    ],
    "name": "Guest",
    "inheritNewPermissions": false,
    "managerUsers": [],
    "disabled": false,
    "attributes": {},
    "id": 1976454,
    "managerGroups": [],
    "grantedGroups": [],
    "ownerUsers": [],
    "grantedUsers": []
}
```

### Update partial

Only attributes with changes will be updated, the others will maintain the same value.

##### Request

```XML
PATCH http://<your-domain>/soffid/webservice/scim2/v1/Account/15455
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.base.api.Account"
    ],
    "Operations": [
        {
            "op": "replace",
            "path": "description",
            "value": "Guest User"
        },
        {
            "op": "replace",
            "path": "ownerUsers",
            "value": [
                "admin"
            ]
        }
    ]
}
```

##### Response 200 OK

```JSON
{
    "passwordPolicy": "I",
    "grantedRoles": [],
    "accessLevel": "-",
    "managerRoles": [],
    "created": "2021-05-10 13:08:05",
    "description": "Guest User",
    "type": "I",
    "system": "soffid",
    "ownerGroups": [],
    "ownerRoles": [],
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Account/1976454",
        "links": {
            "roleAccounts": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleAccount?filter=account.id+eq+1976454+and+enabled+eq+true",
            "users": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/User?filter=accountAccess.account.id+eq+1976454+or+accounts.account.id+eq+1976454"
        },
        "resourceType": "Account"
    },
    "loginName": "Guest",
    "schemas": [
        "urn:soffid:com.soffid.iam.api.Account"
    ],
    "name": "Guest",
    "inheritNewPermissions": false,
    "managerUsers": [],
    "disabled": false,
    "attributes": {},
    "id": 1976454,
    "managerGroups": [],
    "grantedGroups": [],
    "status": "a",
    "ownerUsers": [
        "admin"
    ],
    "grantedUsers": []
}
```

### Update partial (password update)

##### Request

```XML
PATCH https://<your-domain>/soffid/webservice/scim2/v1/Account/15455
```

**JSON**

**Option 1**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.base.api.Account"
    ],
     "Operations": [
        {
            "op": "replace",
            "path": "password.value",
            "value": "123123"
        },
        {
            "op": "replace",
            "path": "password.expired",
            "value": false
        }
    ]
}
```

**Option 2**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.base.api.Account"
    ],
     "Operations": [
        {
            "op": "replace",
            "path": "password",
            "value": {
                "value" : "123123",
                "expired" : false
                }
        }
    ]
}
```

##### Response 200 OK

```JSON
{
    "lastLogin": "2023-06-29 14:30:29",
    "grantedRoles": [],
    "description": "Frankaaa Sinatra",
    "type": "U",
    "ownerGroups": [],
    "loginName": "frank",
    "inheritNewPermissions": false,
    "disabled": false,
    "id": 5366314,
    "managerGroups": [],
    "grantedGroups": [],
    "lastPasswordSet": "2023-06-29 14:30:37",
    "passwordExpiration": "2023-07-24 00:00:00",
    "passwordPolicy": "I",
    "accessLevel": "-",
    "managerRoles": [],
    "created": "2022-04-21 10:11:12",
    "hasSnapshot": false,
    "system": "soffid",
    "ownerRoles": [],
    "meta": {
        "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/Account/5366314",
        "links": {
            "briefAudit": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/Audit?filter=searchIndex+eq+'ACC%235366314'",
            "roleAccounts": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleAccount?filter=account.id+eq+5366314+and+enabled+eq+true",
            "users": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/User?filter=accountAccess.account.id+eq+5366314+or+accounts.account.id+eq+5366314"
        },
        "resourceType": "Account"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.api.Account"
    ],
    "name": "frank",
    "managerUsers": [],
    "lastChange": "2023-06-05 15:05:16",
    "attributes": {},
    "status": "a",
    "ownerUsers": [
        "frank"
    ],
    "grantedUsers": []
}
```


### Update all

This operation replaces all values in the account. For example, we will update the description.

- Note that the attribute id is required to confirm that the resource "...Account/&lt;id&gt;" is the same that the JSON account.
- Note that all the attributes not included in the request will be cleared in the account and their data will be lost.
- Note that not all the attributes are updatable, for example, tag meta, avoid these tags. For more information see [Resource data model page](https://bookstack.soffid.com/books/scim/chapter/resource-data-model-schema)

##### Request

```XML
PUT http://<your-domain>/soffid/webservice/scim2/v1/Account/1976454
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.base.api.Account"
    ],
    "id": 1976454,
    "name": "Guest",
    "type": "I",
    "system": "soffid",
    "passwordPolicy": "I",
    "description": "Guest Guest",
    "inheritNewPermissions": false,
    "disabled": false
}
```

##### Response 200 OK

```JSON
{
    "passwordPolicy": "I",
    "grantedRoles": [],
    "managerRoles": [],
    "description": "Guest Guest",
    "type": "I",
    "system": "soffid",
    "ownerGroups": [],
    "ownerRoles": [],
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Account/1976454",
        "links": {
            "roleAccounts": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleAccount?filter=account.id+eq+1976454+and+enabled+eq+true",
            "users": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/User?filter=accountAccess.account.id+eq+1976454+or+accounts.account.id+eq+1976454"
        },
        "resourceType": "Account"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.api.Account"
    ],
    "name": "Guest",
    "inheritNewPermissions": false,
    "managerUsers": [],
    "disabled": false,
    "attributes": {},
    "id": 1976454,
    "managerGroups": [],
    "grantedGroups": [],
    "status": "a",
    "ownerUsers": [],
    "grantedUsers": []
}
```

### Delete

<p class="callout warning">Please note after this delete, the account has to be created again to use it in the next examples.</p>

##### Request

```MarkDown
DELETE https://<your-domain>/soffid/webservice/scim2/v1/Account/1976454
```

##### Response 204 No Content

```
204 No Content
```

### Note: use of roles with domain values

In case of granting roles with domain values, the optional attribute domain value contains the value for that domain. Here is a sample account with permissions for the role SOFFID\_OU\_DOMAIN and domains D2 and enterprise:

```JSON
{
            "grantedRoles": [],
            "roles": [
                {
                    "informationSystemName": "SOFFID",
                    "roleName": "SOFFID_OU_MANAGER",
                    "id": 2236442,
                    "roleDescription": "Business unit manager",
                    "domainValue": "D2"
                },
                {
                    "informationSystemName": "SOFFID",
                    "roleName": "SOFFID_OU_MANAGER",
                    "id": 2236447,
                    "roleDescription": "Business unit manager",
                    "domainValue": "enterprise"
                }
            ],
            "description": "faith - faith MUYOYO",
            "type": {
                "value": "U"
            },
            "lastUpdated": "2019-07-16T10:35:01+02:00",
            "ownerGroups": [],
            "inheritNewPermissions": false,
            "disabled": false,
            "id": 1727122,
            "grantedGroups": [],
            "managerGroups": [],
            "passwordPolicy": "I",
            "managerRoles": [],
            "created": "2019-07-16T10:26:16+02:00",
            "system": "soffid",
            "ownerRoles": [],
            "meta": {
                "location": "http://bubu-thinkpad:8080/soffid/webservice/scim/Account/1727122",
                "resourceType": "Account"
            },
            "name": "faith",
            "managerUsers": [],
            "attributes": {},
            "grantedUsers": [],
            "ownerUsers": [
                {
                    "lastName": "Smith",
                    "createdByUser": "csv",
                    "mailServer": "null",
                    "nationalID": "",
                    "multiSession": false,
                    "modifiedByUser": "admin",
                    "id": 1727113,
                    "homeServer": "null",
                    "primaryGroupDescription": "Entrprise",
                    "primaryGroup": "enterprise",
                    "comments": "Loaded from CSV file on Mon Aug 05 22:00:00 CEST 2019",
                    "profileServer": "null",
                    "active": true,
                    "fullName": "faith MUYOYO",
                    "userName": "faith",
                    "mailAlias": "",
                    "firstName": "faith",
                    "createdDate": "2019-07-16T10:26:16+02:00",
                    "phoneNumber": "",
                    "modifiedDate": "2019-12-12T17:06:42+01:00",
                    "userType": "I"
                }
            ]
        }
```

### Error response

<p class="callout info">For more infomation about error response visit [https://bookstack.soffid.com/link/116#bkmrk-error-response](https://bookstack.soffid.com/link/116#bkmrk-error-response)</p>

# SCIM Application examples (InformationSystem)

## Operations

This page shows the operations that can be performed for the application object (Information Systems from a functional point of view)

### List all

##### Request

```XML
GET https://<your-domain>/webservice/scim2/v1/Application
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 2,
    "startIndex": 1,
    "Resources": [
        {
            "parent": "Operation/Business 2",
            "relativeName": "SOFFID",
            "database": "",
            "bpmEnabled": true,
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Application/41",
                "links": {
                    "children": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Application?filter=parent.name+eq+'Operation/Business 2/SOFFID'",
                    "roles": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Role?filter=informationSystemName+eq+'Operation/Business 2/SOFFID'"
                },
                "resourceType": "Application"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.api.Application"
            ],
            "name": "Operation/Business 2/SOFFID",
            "description": "SOFFID Identity Manager",
            "singleRole": false,
            "attributes": {},
            "id": 41,
            "type": "application"
        },
        {
            "parent": "Operation/Business process",
            "relativeName": "ad",
            "database": "ad",
            "bpmEnabled": true,
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Application/391459",
                "links": {
                    "children": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Application?filter=parent.name+eq+'Operation/Business process/ad'",
                    "roles": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Role?filter=informationSystemName+eq+'Operation/Business process/ad'"
                },
                "resourceType": "Application"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.api.Application"
            ],
            "name": "Operation/Business process/ad",
            "description": "Active Directory",
            "singleRole": false,
            "attributes": {},
            "id": 391459,
            "type": "application"
        }
    ]
}
```

### List by filter

List all application with a filter expression.

<p class="callout info">It is allowed to use pagination and sort the information, for more information visit the [Sorting](https://bookstack.soffid.com/link/116#bkmrk-sorting) and [Pagination](https://bookstack.soffid.com/link/116#bkmrk-pagination) information.</p>

##### Request

```XML
GET https://<your-domain>/soffid/webservice/scim2/v1/Application?filter=description co SOFFID
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 2,
    "startIndex": 1,
    "Resources": [
        {
            "parent": "Operation/Business 2",
            "relativeName": "SOFFID",
            "database": "",
            "bpmEnabled": true,
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Application/41",
                "links": {
                    "children": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Application?filter=parent.name+eq+'Operation/Business 2/SOFFID'",
                    "roles": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Role?filter=informationSystemName+eq+'Operation/Business 2/SOFFID'"
                },
                "resourceType": "Application"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.api.Application"
            ],
            "name": "Operation/Business 2/SOFFID",
            "description": "SOFFID Identity Manager",
            "singleRole": false,
            "attributes": {},
            "id": 41,
            "type": "application"
        },
        {
            "parent": "Operation/Business 2",
            "relativeName": "iam.soffid.com",
            "database": "iam.soffid.com",
            "bpmEnabled": false,
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Application/1836136",
                "links": {
                    "children": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Application?filter=parent.name+eq+'Operation/Business 2/iam.soffid.com'",
                    "roles": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Role?filter=informationSystemName+eq+'Operation/Business 2/iam.soffid.com'"
                },
                "resourceType": "Application"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.api.Application"
            ],
            "name": "Operation/Business 2/iam.soffid.com",
            "description": "Discovered host iam.soffid.com",
            "singleRole": false,
            "attributes": {},
            "id": 1836136,
            "type": "application"
        }
    ]
}
```

### Query by id

Retrieve an application by its id (primary key).

##### Request

```XML
GET https://<your-domain>/soffid/webservice/scim2/v1/Application/391459
```

##### Response 200 OK

```JSON
{
    "parent": "Operation/Business process",
    "relativeName": "ad",
    "database": "ad",
    "bpmEnabled": true,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Application/391459",
        "links": {
            "children": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Application?filter=parent.name+eq+'Operation/Business process/ad'",
            "roles": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Role?filter=informationSystemName+eq+'Operation/Business process/ad'"
        },
        "resourceType": "Application"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.api.Application"
    ],
    "name": "Operation/Business process/ad",
    "description": "Active Directory",
    "singleRole": false,
    "attributes": {},
    "id": 391459,
    "type": "application"
}
```

### Create

To create an application (Information System).

##### Request

```XML
POST https://<your-domain>/soffid/webservice/scim2/v1/Application/
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.api.Application"
    ],
    "parent": "Operation/Business 2",
    "relativeName": "appBilling",
    "database": "",
    "bpmEnabled": false,
    "name": "Operation/Business 2/App Billing",
    "description": "Billing application",
    "singleRole": false,
    "attributes": {},
    "type": "application"
}
```

##### Response 201 Created

```JSON
{
    "parent": "Operation/Business 2",
    "relativeName": "App Billing",
    "database": "",
    "bpmEnabled": false,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Application/1976515",
        "resourceType": "Application"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.api.Application"
    ],
    "name": "Operation/Business 2/App Billing",
    "description": "Billing application",
    "singleRole": false,
    "attributes": {},
    "id": 1976515,
    "type": "application"
}
```

### Update partial

Only attributes with changes will be updated, the other will maintain the same value.

##### Request

```
PATCH https://<your-domain>/soffid/webservice/scim2/v1/Application/1976515
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.api.Application"
    ],
    "Operations": [
        {
            "op": "replace",
            "path": "parent",
            "value": "Operation/Business process"
        },
        {
            "op": "replace",
            "path": "name",
            "value": "Operation/Business process/App Billing"
        },
        {
            "op": "replace",
            "path": "database",
            "value": "DDBBBilling"
        }
    ]
}
```

##### Response 200 OK

```JSON
{
    "parent": "Operation/Business process",
    "relativeName": "App Billing",
    "database": "DDBBBilling",
    "bpmEnabled": false,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Application/1976515",
        "links": {
            "children": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Application?filter=parent.name+eq+'Operation/Business process/App Billing'",
            "roles": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Role?filter=informationSystemName+eq+'Operation/Business process/App Billing'"
        },
        "resourceType": "Application"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.api.Application"
    ],
    "name": "Operation/Business process/App Billing",
    "description": "Billing application",
    "singleRole": false,
    "attributes": {},
    "id": 1976515,
    "type": "application"
}
```

### Update all

This operation replaces all values in the application.

- Note that the attribute id is required to confirm that the resource "...Application/&lt;id&gt;" is the same that the JSON user.
- Note that all the attributes not included in the request will be cleared in the application and their data will be lost.
- Note that not all the attributes are updatable, for example, tag meta, avoid these tags. For more information visit [Resource data model page](https://bookstack.soffid.com/books/scim/chapter/resource-data-model-schema).

##### Request

```XML
PUT https://<your-domain>/soffid/webservice/scim2/v1/Application/1976515
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.api.Application"
    ],
    "id": 1976515,
    "parent": "Operation/Business 2",
    "relativeName": "appBilling",
    "database": "",
    "bpmEnabled": false,
    "name": "Operation/Business 2/App Billing",
    "description": "Billing application",
    "singleRole": false,
    "attributes": {},
    "type": "application"
}
```

##### Response 200 OK

```JSON
{
    "parent": "Operation/Business 2",
    "relativeName": "App Billing",
    "database": "",
    "bpmEnabled": false,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Application/1976515",
        "links": {
            "children": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Application?filter=parent.name+eq+'Operation/Business 2/App Billing'",
            "roles": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Role?filter=informationSystemName+eq+'Operation/Business 2/App Billing'"
        },
        "resourceType": "Application"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.api.Application"
    ],
    "name": "Operation/Business 2/App Billing",
    "description": "Billing application",
    "singleRole": false,
    "attributes": {},
    "id": 1976515,
    "type": "application"
}
```

### Delete

<p class="callout warning">Please note that after this delete action, you will need to create again the application to use it in the next examples.</p>

##### Request

```XML
DELETE https://<your-domain>/webservice/scim2/v1/Application/2236428
```

##### Response 204 No Content

```
204 No Content
```

### Error response

<p class="callout info">For more information about error response visit [https://bookstack.soffid.com/link/116#bkmrk-error-response](https://bookstack.soffid.com/link/116#bkmrk-error-response)</p>

# SCIM Role examples

## Operations

This page shows the operations that can be performed for the role object

### List all

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Role
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 4,
    "startIndex": 1,
    "Resources": [
        {
            "approvalEnd": "2021-02-26 13:19:36",
            "ownedRoles": [
                {
                    "informationSystem": "Operation/Business process/ad",
                    "ownerRole": 63,
                    "ownerRoleDescription": "SOFFID Administrator",
                    "roleId": 393195,
                    "mandatory": true,
                    "enabled": true,
                    "ownerSystem": "soffid",
                    "system": "ad",
                    "meta": {
                        "location": "http://soffid.pat.lab:8080/webservice/scim2/v1/RoleGrant/1563461",
                        "resourceType": "RoleGrant"
                    },
                    "schemas": [
                        "urn:soffid:com.soffid.iam.api.RoleGrant"
                    ],
                    "roleName": "AD role",
                    "hasDomain": false,
                    "id": 1563461,
                    "ownerRoleName": "SOFFID_ADMIN",
                    "roleDescription": "AD role",
                    "status": "A"
                },
                {
                    "informationSystem": "Operation/Business 2/SOFFID",
                    "ownerRole": 63,
                    "ownerRoleDescription": "SOFFID Administrator",
                    "roleId": 393447,
                    "mandatory": true,
                    "enabled": true,
                    "ownerSystem": "soffid",
                    "system": "ad",
                    "meta": {
                        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleGrant/501188",
                        "resourceType": "RoleGrant"
                    },
                    "schemas": [
                        "urn:soffid:com.soffid.iam.api.RoleGrant"
                    ],
                    "roleName": "accounting_mgr",
                    "hasDomain": false,
                    "id": 501188,
                    "ownerRoleName": "SOFFID_ADMIN",
                    "roleDescription": "Accounting Manager",
                    "status": "A"
                },
                {
                    "informationSystem": "Operation/Business process/ad",
                    "ownerRole": 63,
                    "ownerRoleDescription": "SOFFID Administrator",
                    "roleId": 391535,
                    "mandatory": true,
                    "enabled": true,
                    "ownerSystem": "soffid",
                    "system": "ad",
                    "meta": {
                        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleGrant/503759",
                        "resourceType": "RoleGrant"
                    },
                    "schemas": [
                        "urn:soffid:com.soffid.iam.api.RoleGrant"
                    ],
                    "roleName": "g100",
                    "hasDomain": false,
                    "id": 503759,
                    "ownerRoleName": "SOFFID_ADMIN",
                    "roleDescription": "Desarrollo Circuito",
                    "status": "A"
                },
                {
                    "informationSystem": "Operation/Business process/ad",
                    "ownerRole": 63,
                    "ownerRoleDescription": "SOFFID Administrator",
                    "roleId": 391480,
                    "mandatory": false,
                    "enabled": true,
                    "ownerSystem": "soffid",
                    "system": "ad",
                    "meta": {
                        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleGrant/501481",
                        "resourceType": "RoleGrant"
                    },
                    "schemas": [
                        "urn:soffid:com.soffid.iam.api.RoleGrant"
                    ],
                    "roleName": "Group Policy Creator Owners",
                    "hasDomain": false,
                    "id": 501481,
                    "ownerRoleName": "SOFFID_ADMIN",
                    "roleDescription": "Members in this group can modify group policy for the domain",
                    "status": "A"
                }
            ],
            "description": "SOFFID Administrator",
            "granteeGroups": [
                {
                    "system": "soffid",
                    "informationSystem": "Operation/Business 2/SOFFID",
                    "roleId": 63,
                    "meta": {
                        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleGrant/503848",
                        "resourceType": "RoleGrant"
                    },
                    "schemas": [
                        "urn:soffid:com.soffid.iam.api.RoleGrant"
                    ],
                    "roleName": "SOFFID_ADMIN",
                    "ownerGroup": "admingroup",
                    "hasDomain": false,
                    "id": 503848,
                    "roleDescription": "SOFFID Administrator",
                    "mandatory": true,
                    "enabled": true
                }
            ],
            "informationSystemName": "Operation/Business 2/SOFFID",
            "password": false,
            "system": "soffid",
            "ownerGroups": [
                {
                    "organizational": false,
                    "meta": {
                        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Group/91",
                        "resourceType": "Group"
                    },
                    "quota": "0",
                    "schemas": [
                        "urn:soffid:com.soffid.iam.api.Group"
                    ],
                    "name": "admingroup",
                    "obsolete": false,
                    "description": "Enterprise Administrators Group",
                    "parentGroup": "enterprise",
                    "attributes": {},
                    "id": 91
                }
            ],
            "ownerRoles": [
                {
                    "informationSystem": "Operation/Business 2/SOFFID",
                    "ownerRole": 392727,
                    "ownerRoleDescription": "Business Services",
                    "roleId": 63,
                    "mandatory": true,
                    "enabled": true,
                    "ownerSystem": "ad",
                    "system": "soffid",
                    "meta": {
                        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleGrant/501606",
                        "resourceType": "RoleGrant"
                    },
                    "schemas": [
                        "urn:soffid:com.soffid.iam.api.RoleGrant"
                    ],
                    "roleName": "SOFFID_ADMIN",
                    "hasDomain": false,
                    "id": 501606,
                    "ownerRoleName": "share-15000",
                    "roleDescription": "SOFFID Administrator",
                    "status": "A"
                }
            ],
            "bpmEnabled": true,
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Role/63",
                "resourceType": "Role"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.api.Role"
            ],
            "name": "SOFFID_ADMIN",
            "approvalStart": "2021-02-26 13:19:36",
            "attributes": {},
            "id": 63,
            "enableByDefault": true
        },
        {
            "ownedRoles": [],
            "description": "Soffid vault owner",
            "granteeGroups": [],
            "informationSystemName": "Operation/Business 2/SOFFID",
            "password": false,
            "system": "soffid",
            "ownerGroups": [],
            "ownerRoles": [],
            "bpmEnabled": true,
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Role/790961",
                "resourceType": "Role"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.api.Role"
            ],
            "name": "SOFFID_OWNER",
            "attributes": {},
            "id": 790961,
            "enableByDefault": false
        },
      .............
    ]
}
```

### List by filter

List all roles with a filter expression.

<p class="callout info">It is allowed to use pagination and sort the information, for more information visit the [Sorting](https://bookstack.soffid.com/link/116#bkmrk-sorting) and [Pagination](https://bookstack.soffid.com/link/116#bkmrk-pagination) information.</p>

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Role?filter=ownerRoles.name eq SOFFID_ADMIN
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 4,
    "startIndex": 1,
    "Resources": [
        {
            "ownedRoles": [],
            "description": "Accounting Manager",
            "granteeGroups": [],
            "informationSystemName": "Operation/Business 2/SOFFID",
            "password": false,
            "system": "ad",
            "ownerGroups": [],
            "ownerRoles": [
                {
                    "informationSystem": "Operation/Business 2/SOFFID",
                    "ownerRole": 63,
                    "ownerRoleDescription": "SOFFID Administrator",
                    "roleId": 393447,
                    "mandatory": true,
                    "enabled": true,
                    "ownerSystem": "soffid",
                    "system": "ad",
                    "meta": {
                        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleGrant/501188",
                        "resourceType": "RoleGrant"
                    },
                    "schemas": [
                        "urn:soffid:com.soffid.iam.api.RoleGrant"
                    ],
                    "roleName": "accounting_mgr",
                    "hasDomain": false,
                    "id": 501188,
                    "ownerRoleName": "SOFFID_ADMIN",
                    "roleDescription": "Accounting Manager",
                    "status": "A"
                }
            ],
            "bpmEnabled": true,
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Role/393447",
                "resourceType": "Role"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.api.Role"
            ],
            "name": "accounting_mgr",
            "attributes": {},
            "id": 393447,
            "enableByDefault": false
        },
        {
            "ownedRoles": [],
            "description": "Members in this group can modify group policy for the domain",
            "granteeGroups": [],
            "informationSystemName": "Operation/Business process/ad",
            "password": false,
            "system": "ad",
            "ownerGroups": [],
            "ownerRoles": [
                {
                    "informationSystem": "Operation/Business process/ad",
                    "ownerRole": 63,
                    "ownerRoleDescription": "SOFFID Administrator",
                    "roleId": 391480,
                    "mandatory": false,
                    "enabled": true,
                    "ownerSystem": "soffid",
                    "system": "ad",
                    "meta": {
                        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleGrant/501481",
                        "resourceType": "RoleGrant"
                    },
                    "schemas": [
                        "urn:soffid:com.soffid.iam.api.RoleGrant"
                    ],
                    "roleName": "Group Policy Creator Owners",
                    "hasDomain": false,
                    "id": 501481,
                    "ownerRoleName": "SOFFID_ADMIN",
                    "roleDescription": "Members in this group can modify group policy for the domain",
                    "status": "A"
                }
            ],
            "bpmEnabled": false,
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Role/391480",
                "resourceType": "Role"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.api.Role"
            ],
            "name": "Group Policy Creator Owners",
            "attributes": {},
            "id": 391480,
            "enableByDefault": false
        },
      .............
    ]
}
```

### Query by id

Query a role by its id (primary key).

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Role/393195
```

##### Response 200 OK

```JSON
{
    "approvalEnd": "2021-02-04 15:39:05",
    "ownedRoles": [],
    "description": "AD role",
    "granteeGroups": [],
    "informationSystemName": "Operation/Business process/ad",
    "password": false,
    "system": "ad",
    "ownerGroups": [],
    "ownerRoles": [
        {
            "informationSystem": "Operation/Business process/ad",
            "ownerRole": 63,
            "ownerRoleDescription": "SOFFID Administrator",
            "roleId": 393195,
            "mandatory": true,
            "enabled": true,
            "ownerSystem": "soffid",
            "system": "ad",
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleGrant/1563461",
                "resourceType": "RoleGrant"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.api.RoleGrant"
            ],
            "roleName": "AD role",
            "hasDomain": false,
            "id": 1563461,
            "ownerRoleName": "SOFFID_ADMIN",
            "roleDescription": "AD role",
            "status": "A"
        }
    ],
    "bpmEnabled": true,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Role/393195",
        "resourceType": "Role"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.api.Role"
    ],
    "name": "AD role",
    "approvalStart": "2021-02-04 15:39:05",
    "attributes": {},
    "id": 393195,
    "enableByDefault": false
}
```

### Create

#### Request

```XML
POST https://<your-domain>/soffid/webservice/scim2/v1/Role
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.api.Role"
    ],
    "name": "App Billing Role",
    "description": "Role Admin for Billing application",
    "informationSystemName": "Operation/Business 2/App Billing",
    "system": "test",
    "password": false,
    "bpmEnabled": false,
    "enableByDefault": false,
    "granteeGroups": [],
    "ownedRoles": [],
    "ownerGroups": [],
    "ownerRoles": []
}
```

##### Response 201 Created

```JSON
{
    "ownedRoles": [],
    "description": "Role Admin for Billing application",
    "granteeGroups": [],
    "informationSystemName": "Operation/Business 2/App Billing",
    "password": false,
    "system": "test",
    "ownerGroups": [],
    "ownerRoles": [],
    "bpmEnabled": false,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Role/1976590",
        "resourceType": "Role"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.api.Role"
    ],
    "name": "App Billing Role",
    "attributes": {},
    "id": 1976590,
    "enableByDefault": false
}
```

### Update partial

Only attributes with changes will be updated, the other will maintain the same value.

##### Request

```
PATCH https://<your-domain>/soffid/webservice/scim2/v1/Role/1976590
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.api.Role"
    ],
    "Operations": [
        {
            "op": "replace",
            "path": "system",
            "value": "soffid"
        }
    ]
}
```

##### Response 200 OK

```JSON
{
    "ownedRoles": [],
    "description": "Role Admin for Billing application",
    "granteeGroups": [],
    "informationSystemName": "Operation/Business 2/App Billing",
    "password": false,
    "system": "soffid",
    "ownerGroups": [],
    "ownerRoles": [],
    "bpmEnabled": false,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Role/1976590",
        "resourceType": "Role"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.api.Role"
    ],
    "name": "App Billing Role",
    "attributes": {},
    "id": 1976590,
    "enableByDefault": false
}
```

### Update all

This operation replaces all values in the role.

- Note that the attribute id is required to confirm that the resource "...Role/&lt;id&gt;" is the same that the JSON role.
- Note that all the attributes not included in the request will be cleared in the role and their data will be lost.
- Note that not all the attributes are updatable, for example, tag meta, avoid these tags. For more information visit [Resource data model page](https://bookstack.soffid.com/books/scim/chapter/resource-data-model-schema)

##### Request

```XML
PUT https://<your-domain>/soffid/webservice/scim2/v1/Role/1976590
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.api.Role"
    ],
    "id": 1976590,
    "name": "App Billing",
    "description": "Role Admin for Billing application",
    "informationSystemName": "Operation/Business 2/App Billing",
    "system": "test",
    "password": false,
    "bpmEnabled": false,
    "enableByDefault": false,
    "granteeGroups": [],
    "ownedRoles": [],
    "ownerGroups": [],
    "ownerRoles": []
}
```

##### Response 200 OK

```JSON
{
    "ownedRoles": [],
    "description": "Role Admin for Billing application",
    "granteeGroups": [],
    "informationSystemName": "Operation/Business 2/App Billing",
    "password": false,
    "system": "test",
    "ownerGroups": [],
    "ownerRoles": [],
    "bpmEnabled": false,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Role/1976590",
        "resourceType": "Role"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.api.Role"
    ],
    "name": "App Billing",
    "attributes": {},
    "id": 1976590,
    "enableByDefault": false
}
```

### Delete

<p class="callout warning">Please note after this delete, the role has to be created again to use it in the next examples.</p>

##### Request

```MarkDown
DELETE https://<your-omain>/soffid/webservice/scim2/v1/Role/1976590
```

##### Response 204 No Content

```
204 No Content
```

### Error response

<p class="callout info">For more information about error response visit [https://bookstack.soffid.com/link/116#bkmrk-error-response](https://bookstack.soffid.com/link/116#bkmrk-error-response)</p>

## Notes

### Note: use of roles with domain values

In case of granting roles with domain values, the optional attribute domain value contains the value for that domain. Here is a sample account with permissions for the role SOFFID\_OU\_DOMAIN and domains D2 and enterprise:

```JSON
{
            "grantedRoles": [],
            "roles": [
                {
                    "informationSystemName": "SOFFID",
                    "roleName": "SOFFID_OU_MANAGER",
                    "id": 2236442,
                    "roleDescription": "Business unit manager",
                    "domainValue": "D2"
                },
                {
                    "informationSystemName": "SOFFID",
                    "roleName": "SOFFID_OU_MANAGER",
                    "id": 2236447,
                    "roleDescription": "Business unit manager",
                    "domainValue": "enterprise"
                }
            ],
            "description": "faith - faith MUYOYO",
            "type": {
                "value": "U"
            },
            "lastUpdated": "2019-07-16T10:35:01+02:00",
            "ownerGroups": [],
            "inheritNewPermissions": false,
            "disabled": false,
            "id": 1727122,
            "grantedGroups": [],
            "managerGroups": [],
            "passwordPolicy": "I",
            "managerRoles": [],
            "created": "2019-07-16T10:26:16+02:00",
            "system": "soffid",
            "ownerRoles": [],
            "meta": {
                "location": "http://bubu-thinkpad:8080/soffid/webservice/scim/Account/1727122",
                "resourceType": "Account"
            },
            "name": "faith",
            "managerUsers": [],
            "attributes": {},
            "grantedUsers": [],
            "ownerUsers": [
                {
                    "lastName": "Smith",
                    "createdByUser": "csv",
                    "mailServer": "null",
                    "nationalID": "",
                    "multiSession": false,
                    "modifiedByUser": "admin",
                    "id": 1727113,
                    "homeServer": "null",
                    "primaryGroupDescription": "Entrprise",
                    "primaryGroup": "enterprise",
                    "comments": "Loaded from CSV file on Mon Aug 05 22:00:00 CEST 2019",
                    "profileServer": "null",
                    "active": true,
                    "fullName": "faith MUYOYO",
                    "userName": "faith",
                    "mailAlias": "",
                    "firstName": "faith",
                    "createdDate": "2019-07-16T10:26:16+02:00",
                    "phoneNumber": "",
                    "modifiedDate": "2019-12-12T17:06:42+01:00",
                    "userType": "I"
                }
            ]
        }
```

### Notes about role domains

By default, roles have no security domain (sometimes referred to as scope). When a security domain is assigned to a role, each account-role object is tagged with the proper security domain value. It is allowed to assign one role multiple times to the same user, as long as each assignment is tagged with a different security domain value. For instance, one can create the SOFFID\_OU\_MANAGER role bound to the GROUPS security domain. Then, you can assign the role SOFFID\_OU\_MANAGER/Group1 to any user.

Four kind of security domains are available:

- SENSE\_DOMAIN: No security domain applies
- GROUP: A business unit is bound to each grant of this role
- APLICATION: A information sysstem is bound to each grant of this role
- Custom domain: Each application can have its own security domains with arbitrary meanings.

To set or modify the role domain for a role, one can use the "domain" attribute. This attribute is a complex object composed of a name and a description. Only the name is mandatory.

### Notes about role inheritance

Role inheritance is driven by the ownedRoles, ownerRoles and ownedGroups. Each of these attributes is an array of grants. Each grant has the following attributes:

- ownerRole: id of owner role.
- ownerSystem: name of owner role's system.
- ownerRoleName: name of owner role's name.
- ownerRolDomainValue: security domain of the owner role. If a user is granted with the owner role, and the ownerRolDomainValue does not match the grant domain, the inheritance rule does not apply.
- roleId: id of owned role.
- system: name of owned role's system
- roleName: name of owned role's name
- domainValue: security domain of the owned role.

The role inheritance can vary slightly depending on whether the owned role and the owner role are in the same domain or not:

<div id="bkmrk-resulting-domain-val"><table class="wrapped confluenceTable tablesorter tablesorter-default" role="grid"><colgroup><col></col><col></col><col></col><col></col></colgroup><thead><tr class="tablesorter-headerRow" role="row"><th aria-disabled="false" aria-label="Resulting domain value: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" tabindex="0"><div>**Resulting domain value**</div></th><th aria-disabled="false" aria-label="Owner role has no domain: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" tabindex="0"><div>**Owner role has no domain**</div></th><th aria-disabled="false" aria-label="Owner role has a different domain: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="2" role="columnheader" scope="col" tabindex="0"><div>**Owner role has a different domain**</div></th><th aria-disabled="false" aria-label="Same domain: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="3" role="columnheader" scope="col" tabindex="0"><div>**Same domain**</div></th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row"><td class="confluenceTd">Domain value not specified</td><td class="confluenceTd">Blank</td><td class="confluenceTd">Blank</td><td class="confluenceTd">Owner role domain value</td></tr><tr role="row"><td class="confluenceTd">Domain value specified</td><td class="confluenceTd">Specified value</td><td class="confluenceTd">Specified value</td><td class="confluenceTd">Specified value</td></tr></tbody></table>

</div>###   

# SCIM Group type examples

## Operations

This page shows the operations that can be performed for the Group Type object

### List all

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/GroupType
```

##### Response 200 OK

```JSON
{
  "schemas": [
    "urn:ietf:params:scim:api:messages:2.0:ListResponse"
  ],
  "totalResults": 2,
  "startIndex": 1,
  "Resources": [
    {
      "roleHolder": true,
      "updatedBy": "admin",
      "createdBy": "admin",
      "meta": {
        "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/GroupType/24552",
        "resourceType": "GroupType"
      },
      "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.GroupType"
      ],
      "name": "App Billing Role",
      "description": "Role Admin for Billing application",
      "id": 24552,
      "updatedOn": "2026-03-06 08:37:45",
      "createdOn": "2026-03-06 08:37:45"
    },
    {
      "roleHolder": true,
      "updatedBy": "admin",
      "createdBy": "admin",
      "meta": {
        "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/GroupType/24553",
        "resourceType": "GroupType"
      },
      "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.GroupType"
      ],
      "name": "Example group type",
      "description": "Example group type",
      "id": 24553,
      "updatedOn": "2026-03-06 08:38:43",
      "createdOn": "2026-03-06 08:38:43"
    }
  ]
}
```

### List by filter

List all group types with a filter expression.

<p class="callout info">It is allowed to use pagination and sort the information, for more information visit the [Sorting](https://bookstack.soffid.com/link/116#bkmrk-sorting) and [Pagination](https://bookstack.soffid.com/link/116#bkmrk-pagination) information.</p>

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/GroupType?filter=description co exa
```

##### Response 200 OK

```JSON
{
  "schemas": [
    "urn:ietf:params:scim:api:messages:2.0:ListResponse"
  ],
  "totalResults": 1,
  "startIndex": 1,
  "Resources": [
    {
      "roleHolder": true,
      "updatedBy": "admin",
      "createdBy": "admin",
      "meta": {
        "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/GroupType/24553",
        "resourceType": "GroupType"
      },
      "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.GroupType"
      ],
      "name": "Example group type",
      "description": "Example group type",
      "id": 24553,
      "updatedOn": "2026-03-06 08:38:43",
      "createdOn": "2026-03-06 08:38:43"
    }
  ]
}
```

### Query by id

Query a group type by its id (primary key).

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/GroupType/24553
```

##### Response 200 OK

```JSON
{
  "roleHolder": true,
  "updatedBy": "admin",
  "createdBy": "admin",
  "meta": {
    "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/GroupType/24553",
    "resourceType": "GroupType"
  },
  "schemas": [
    "urn:soffid:com.soffid.iam.iga.api.GroupType"
  ],
  "name": "Example group type",
  "description": "Example group type",
  "id": 24553,
  "updatedOn": "2026-03-06 08:38:43",
  "createdOn": "2026-03-06 08:38:43"
}
```

### Create

#### Request

```XML
POST https://<your-domain>/soffid/webservice/scim2/v1/GroupType
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.GroupType"
    ],
    "name": "Example group type",
    "description": "Example group type",
    "roleHolder": true
}
```

##### Response 201 Created

```JSON
{
  "roleHolder": true,
  "updatedBy": "admin",
  "createdBy": "admin",
  "meta": {
    "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/GroupType/24553",
    "resourceType": "GroupType"
  },
  "schemas": [
    "urn:soffid:com.soffid.iam.iga.api.GroupType"
  ],
  "name": "Example group type",
  "description": "Example group type",
  "id": 24553,
  "updatedOn": "2026-03-06 08:38:43.002",
  "createdOn": "2026-03-06 08:38:43.002"
}
```

### Update partial

Only attributes with changes will be updated, the other will maintain the same value.

##### Request

```
PATCH https://<your-domain>/soffid/webservice/scim2/v1/GroupType/1976710
```

**JSON**

```JSON
{
    "Operations": [
        {
            "op": "replace",
            "path": "name",
            "value": "OU"
        }
    ]
}
```

##### Response 200 OK

```JSON
{
    "roleHolder": false,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/GroupType/1976710",
        "resourceType": "OUType"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.GroupType"
    ],
    "name": "OU",
    "description": "New OU",
    "id": 1976710
}
```

### Update all

This operation replaces all values in the group type.

- Note that the attribute id is required to confirm that the resource "...OUType/&lt;id&gt;" is the same that the JSON group type.
- Note that all the attributes not included in the request will be cleared in the group type and their data will be lost.
- Note that not all the attributes are updatable, for example, tag meta, avoid these tags. For more information visit [Resource data model page](https://bookstack.soffid.com/books/scim/chapter/resource-data-model-schema)

##### Request

```XML
PUT https://<your-domain>/soffid/webservice/scim2/v1/GroupType/1976590
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.GroupType"
    ],
    "id": 1976710,
    "name": "ChangeOU"
}
```

##### Response 200 OK

```JSON
{
    "roleHolder": false,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/GroupType/1976710",
        "resourceType": "OUType"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.base.api.GroupType"
    ],
    "name": "ChangeOU",
    "id": 1976710
}
```

### Delete

<p class="callout warning">Please note after this delete, the group type has to be created again to use it in the next examples.</p>

##### Request

```MarkDown
DELETE https://<your-omain>/soffid/webservice/scim2/v1/GroupType/1976710
```

##### Response 204 No Content

```
204 No Content
```

### Error response

<p class="callout info">For more information about error response visit [https://bookstack.soffid.com/link/116#bkmrk-error-response](https://bookstack.soffid.com/link/116#bkmrk-error-response)</p>

# SCIM User type examples

## Operations

This page shows the operations that can be performed for the user type object

### List all

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/UserType
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 3,
    "startIndex": 1,
    "Resources": [
        {
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/UserType/29",
                "resourceType": "UserType"
            },
            "unmanaged": false,
            "schemas": [
                "urn:soffid:com.soffid.iam.api.UserType"
            ],
            "name": "S",
            "description": "SSO account (USE IT)",
            "id": 29
        },
        {
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/UserType/31",
                "resourceType": "UserType"
            },
            "unmanaged": false,
            "schemas": [
                "urn:soffid:com.soffid.iam.api.UserType"
            ],
            "name": "E",
            "description": "External user",
            "id": 31
        },
        {
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/UserType/33",
                "resourceType": "UserType"
            },
            "unmanaged": false,
            "schemas": [
                "urn:soffid:com.soffid.iam.api.UserType"
            ],
            "name": "I",
            "description": "Internal user",
            "id": 33
        }
    ]
}
```

### List by filter

List all user types with a filter expression.

<p class="callout info">It is allowed to use pagination and sort the information, for more information visit the [Sorting](https://bookstack.soffid.com/link/116#bkmrk-sorting) and [Pagination](https://bookstack.soffid.com/link/116#bkmrk-pagination) information.</p>

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/UserType?filter=description co sso
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 1,
    "startIndex": 1,
    "Resources": [
        {
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/UserType/29",
                "resourceType": "UserType"
            },
            "unmanaged": false,
            "schemas": [
                "urn:soffid:com.soffid.iam.api.UserType"
            ],
            "name": "S",
            "description": "SSO account (USE IT)",
            "id": 29
        }
    ]
}
```

### Query by id

Query a user type by its id (primary key).

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/UserType/33
```

##### Response 200 OK

```JSON
{
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/UserType/33",
        "resourceType": "UserType"
    },
    "unmanaged": false,
    "schemas": [
        "urn:soffid:com.soffid.iam.api.UserType"
    ],
    "name": "I",
    "description": "Internal user",
    "id": 33
}
```

### Create

#### Request

```XML
POST https://<your-domain>/soffid/webservice/scim2/v1/UserType
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.UserType"
    ],
    "name": "O",
    "description": "Other user",
    "managed": false
}
```

##### Response 201 Created

```JSON
{
  "updatedBy": "admin",
  "createdBy": "admin",
  "managed": false,
  "meta": {
    "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/UserType/24555",
    "resourceType": "UserType"
  },
  "schemas": [
    "urn:soffid:com.soffid.iam.iga.api.UserType"
  ],
  "name": "O",
  "description": "Other user",
  "id": 24555,
  "updatedOn": "2026-03-06 08:53:08.447",
  "createdOn": "2026-03-06 08:53:08.447"
}
```

### Update partial

Only attributes with changes will be updated, the other will maintain the same value.

##### Request

```
PATCH https://<your-domain>/soffid/webservice/scim2/v1/UserType/24555
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.UserType"
    ],
    "Operations": [
        {
            "op": "replace",
            "path": "name",
            "value": "OT"
        }
    ]
}
```

##### Response 200 OK

```JSON
{
  "updatedBy": "admin",
  "createdBy": "admin",
  "managed": false,
  "meta": {
    "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/UserType/24555",
    "resourceType": "UserType"
  },
  "schemas": [
    "urn:soffid:com.soffid.iam.iga.api.UserType"
  ],
  "name": "OT",
  "description": "Other user",
  "id": 24555,
  "updatedOn": "2026-03-06 08:56:26.711",
  "createdOn": "2026-03-06 08:53:08"
}
```

### Update all

This operation replaces all values in the roole.

- Note that the attribute id is required to confirm that the resource "...UserType/&lt;id&gt;" is the same that the JSON user type.
- Note that all the attributes not included in the request will be cleared in the user type and their data will be lost.
- Note that not all the attributes are updatable, for example, tag meta, avoid these tags. For more information see [Resource data model page](https://bookstack.soffid.com/books/scim/chapter/resource-data-model-schema)

##### Request

```XML
PUT https://<your-domain>/soffid/webservice/scim2/v1/UserType/1976718
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.base.api.UserType"
    ],
    "id": 24555,
    "name": "OY"
}
```

##### Response 200 OK

```JSON
{
  "updatedBy": "admin",
  "managed": true,
  "meta": {
    "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/UserType/24555",
    "resourceType": "UserType"
  },
  "schemas": [
    "urn:soffid:com.soffid.iam.iga.api.UserType"
  ],
  "name": "OY",
  "id": 24555,
  "updatedOn": "2026-03-06 08:57:31.781"
}
```

### Delete

<p class="callout warning">Please note after this delete, the user type has to be created again to use it in the next examples.</p>

##### Request

```MarkDown
DELETE https://<your-omain>/soffid/webservice/scim2/v1/UserType/24555
```

##### Response 204 No Content

```
204 No Content
```

### Error response

<p class="callout info">For more information about error response visit [https://bookstack.soffid.com/link/116#bkmrk-error-response](https://bookstack.soffid.com/link/116#bkmrk-error-response)</p>

# SCIM UserGroup examples

## Operations

This page shows the operations that can be performed for the object that establishes the relationship between groups and users. You can add, delete and or modify users in a group.

### List all

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/UserGroup
```

##### Response 200 OK

```JSON
{
  "schemas": [
    "urn:ietf:params:scim:api:messages:2.0:ListResponse"
  ],
  "totalResults": 1,
  "startIndex": 1,
  "Resources": [
    {
      "updatedBy": "admin",
      "groupId": 647,
      "start": "2026-03-06 09:08:42",
      "fullName": "Cas Kelp",
      "updatedOn": "2026-03-06 09:08:42",
      "userId": 18327,
      "createdOn": "2026-03-06 09:08:42",
      "groupDescription": "World",
      "createdBy": "admin",
      "meta": {
        "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/UserGroup/24560",
        "resourceType": "UserGroup"
      },
      "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.UserGroup"
      ],
      "disabled": false,
      "attributes": {},
      "id": 24560,
      "user": "ckelp",
      "primaryGroup": true,
      "group": "world"
    }
  ]
}
```

### List by filter

List all GroupUsers with a filter expression.

<p class="callout info">It is allowed to use pagination and sort the information, for more information visit the [Sorting](https://bookstack.soffid.com/link/116#bkmrk-sorting) and [Pagination](https://bookstack.soffid.com/link/116#bkmrk-pagination) information.</p>

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/UserGroup?filter=groupDescription co  "wo"
```

##### Response 200 OK

```JSON
{
  "schemas": [
    "urn:ietf:params:scim:api:messages:2.0:ListResponse"
  ],
  "totalResults": 1,
  "startIndex": 1,
  "Resources": [
    {
      "updatedBy": "admin",
      "groupId": 647,
      "start": "2026-03-06 09:08:42",
      "fullName": "Cas Kelp",
      "updatedOn": "2026-03-06 09:08:42",
      "userId": 18327,
      "createdOn": "2026-03-06 09:08:42",
      "groupDescription": "World",
      "createdBy": "admin",
      "meta": {
        "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/UserGroup/24560",
        "resourceType": "UserGroup"
      },
      "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.UserGroup"
      ],
      "disabled": false,
      "attributes": {},
      "id": 24560,
      "user": "ckelp",
      "primaryGroup": true,
      "group": "world"
    }
  ]
}
```

### Query by id

Query a GroupUser by its id (primary key).

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/UserGroup/1974296
```

##### Response 200 OK

```JSON
{
    "groupDescription": "Help desk support team",
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/UserGroup/1974296",
        "resourceType": "UserGroup"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.api.UserGroup"
    ],
    "start": "2021-05-05 12:49:51",
    "fullName": "John Smith",
    "disabled": false,
    "attributes": {
        "startDate": "2021-05-04 00:00:00"
    },
    "id": 1974296,
    "user": "jsmith",
    "primaryGroup": false,
    "group": "it"
}
```

### Create

This option allows you to add a user to a specific group.

#### Request

```XML
POST https://<your-domain>/soffid/webservice/scim2/v1/UserGroup
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.UserGroup"
    ],
    "group": "world",
    "groupDescription": "Help desk support team",
    "user": "ckelp",
    "fullName": "Casey Kelp",
    "primaryGroup": true,
    "attributes": {}
}
```

##### Response 201 Created

```JSON
{
  "updatedBy": "admin",
  "groupId": 647,
  "start": "2026-03-06 09:08:42.103",
  "fullName": "Cas Kelp",
  "updatedOn": "2026-03-06 09:08:42.136",
  "userId": 18327,
  "createdOn": "2026-03-06 09:08:42.128",
  "groupDescription": "World",
  "createdBy": "admin",
  "meta": {
    "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/UserGroup/24560",
    "resourceType": "UserGroup"
  },
  "schemas": [
    "urn:soffid:com.soffid.iam.iga.api.UserGroup"
  ],
  "disabled": false,
  "attributes": {},
  "id": 24560,
  "user": "ckelp",
  "primaryGroup": true,
  "group": "world"
}
```

### Update partial

Only attributes with changes will be updated, the other will maintain the same value.

##### Request

```
PATCH https://<your-domain>/soffid/webservice/scim2/v1/UserGroup/1976741
```

**JSON**

```JSON
{
    "Operations": [
        {
            "op": "replace",
            "path": "groupDescription",
            "value": "Enterprise engineering team"
        },
        {
            "op": "replace",
            "path": "group",
            "value": "EngineeringTeam"
        }
    ]
}
```

##### Response 200 OK

```JSON
{
    "groupDescription": "Enterprise engineering team",
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/GroupUser/1976741",
        "resourceType": "GroupUser"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.api.GroupUser"
    ],
    "start": "2021-05-11 10:39:23",
    "fullName": "Casey Kelp",
    "disabled": false,
    "attributes": {},
    "id": 1976741,
    "user": "ckelp",
    "primaryGroup": true,
    "group": "EngineeringTeam"
}
```

### Update all

This operation replaces all values in the GroupUser.

- Note that the attribute id is required to confirm that the resource "...GroupUser/&lt;id&gt;" is the same that the JSON GroupUser.
- Note that all the attributes not included in the request will be cleared in the GroupUser type and their data will be lost.
- Note that not all the attributes are updatable, for example, tag meta, avoid these tags. For more information see [Resource data model page](https://bookstack.soffid.com/books/scim/chapter/resource-data-model-schema)

##### Request

```XML
PUT https://<your-domain>/soffid/webservice/scim2/v1/UserGroup/1976741
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.GroupUser"
    ],
    "id": 1976741,
    "group": "it",
    "groupDescription": "Help desk support team",
     "user": "ckelp",
    "fullName": "Casey Kelp",
    "primaryGroup": true,
    "attributes": {}
}
```

##### Response 200 OK

```JSON
{
    "groupDescription": "Help desk support team",
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/GroupUser/1976741",
        "resourceType": "GroupUser"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.api.GroupUser"
    ],
    "fullName": "Casey Kelp",
    "disabled": false,
    "attributes": {},
    "id": 1976741,
    "user": "ckelp",
    "primaryGroup": true,
    "group": "it"
}
```

### Delete

This option allows you to remove a user from a specific group.

<p class="callout warning">Please note after this delete, the group user has to be created again to use it in the next examples.</p>

##### Request

```MarkDown
DELETE https://<your-omain>/soffid/webservice/scim2/v1/UserGroup/1976741
```

##### Response 204 No Content

```
204 No Content
```

### Error response

<p class="callout info">For more information about error response visit [https://bookstack.soffid.com/link/116#bkmrk-error-response](https://bookstack.soffid.com/link/116#bkmrk-error-response)</p>

# SCIM RoleAccount examples

## Operations

This page shows the operations that can be performed for the object that establishes the relationship between roles and accounts. You can assign, revoke and or modify roles to an account.

### List all

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/RoleAccount
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 3530,
    "startIndex": 1,
    "itemsPerPage": 100,
    "Resources": [
        {
            "certificationDate": "2020-02-13 23:01:44",
            "accountSystem": "soffid",
            "accountName": "admin",
            "userGroupCode": "admingroup",
            "approvalPending": false,
            "userFullName": "Soffid Administrator",
            "bpmEnforced": "S",
            "userCode": "admin",
            "enabled": true,
            "accountId": 103,
            "informationSystemName": "Operation/Business 2/SOFFID",
            "system": "soffid",
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleAccount/110",
                "resourceType": "RoleAccount"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.api.RoleAccount"
            ],
            "roleName": "SOFFID_ADMIN",
            "removalPending": false,
            "id": 110,
            "roleDescription": "SOFFID Administrator",
            "startDate": "2020-02-13 12:00:00"
        },
        {
            "certificationDate": "2020-12-15 10:48:44",
            "accountSystem": "soffid",
            "accountName": "admin",
            "userGroupCode": "admingroup",
            "approvalPending": false,
            "userFullName": "Soffid Administrator",
            "bpmEnforced": "N",
            "userCode": "admin",
            "ruleDescription": "Grants soffid user role to everyone",
            "enabled": true,
            "accountId": 103,
            "informationSystemName": "Operation/Business 2/SOFFID",
            "system": "soffid",
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleAccount/1059370",
                "resourceType": "RoleAccount"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.api.RoleAccount"
            ],
            "roleName": "SOFFID_USER",
            "removalPending": false,
            "id": 1059370,
            "ruleId": 1059365,
            "roleDescription": "Soffid user",
            "startDate": "2020-12-15 00:00:00"
        },
      ................
    ]
}
```

### List by filter

List all RoleAccounts with a filter expression.

<p class="callout info">It is allowed to use pagination and sort the information, for more information visit the [Sorting](https://bookstack.soffid.com/link/116#bkmrk-sorting) and [Pagination](https://bookstack.soffid.com/link/116#bkmrk-pagination) information.</p>

##### Request

```MarkDown
GET https://<your-domain>/soffid/soffid/webservice/scim2/v1/RoleAccount?filter=enabled eq true  and system eq soffid
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 67,
    "startIndex": 1,
    "Resources": [
        {
            "certificationDate": "2020-02-13 23:01:44",
            "accountSystem": "soffid",
            "accountName": "admin",
            "userGroupCode": "admingroup",
            "approvalPending": false,
            "userFullName": "Soffid Administrator",
            "bpmEnforced": "S",
            "userCode": "admin",
            "enabled": true,
            "accountId": 103,
            "informationSystemName": "Operation/Business 2/SOFFID",
            "system": "soffid",
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleAccount/110",
                "resourceType": "RoleAccount"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.api.RoleAccount"
            ],
            "roleName": "SOFFID_ADMIN",
            "removalPending": false,
            "id": 110,
            "roleDescription": "SOFFID Administrator",
            "startDate": "2020-02-13 12:00:00"
        },
        {
            "certificationDate": "2020-12-13 19:30:51",
            "accountSystem": "soffid",
            "accountName": "gbuades",
            "userGroupCode": "enterprise",
            "approvalPending": false,
            "userFullName": "Gabriel Buades ..",
            "bpmEnforced": "S",
            "userCode": "gbuades",
            "enabled": true,
            "accountId": 1039860,
            "informationSystemName": "Operation/Business 2/SOFFID",
            "system": "soffid",
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleAccount/1039866",
                "resourceType": "RoleAccount"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.api.RoleAccount"
            ],
            "roleName": "SOFFID_ADMIN",
            "removalPending": false,
            "id": 1039866,
            "roleDescription": "SOFFID Administrator",
            "startDate": "2020-12-13 12:00:00"
        },
      ...................
    ]
}
```

### Query by id

Query a RoleAccount by its id (primary key).

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/RoleAccount/110
```

##### Response 200 OK

```JSON
{
    "certificationDate": "2020-02-13 23:01:44",
    "accountSystem": "soffid",
    "accountName": "admin",
    "userGroupCode": "admingroup",
    "approvalPending": false,
    "userFullName": "Soffid Administrator",
    "bpmEnforced": "S",
    "userCode": "admin",
    "enabled": true,
    "accountId": 103,
    "informationSystemName": "Operation/Business 2/SOFFID",
    "system": "soffid",
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/RoleAccount/110",
        "resourceType": "RoleAccount"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.api.RoleAccount"
    ],
    "roleName": "SOFFID_ADMIN",
    "removalPending": false,
    "id": 110,
    "roleDescription": "SOFFID Administrator",
    "startDate": "2020-02-13 12:00:00"
}
```

### Create

This option allows you to assign a role to a specific account.

#### Request

```XML
POST https://<your-domain>/soffid/webservice/scim2/v1/RoleAccount
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.RoleAccount"
    ],

    "accountName": "ckelp",
    "accountSystem": "soffid",
    "userName": "ckelp",
    "userFullName": "Casey Kelp",

    "roleName": "SOFFID_ADMIN",
    "roleDescription": "SOFFID Administrator",
    "informationSystemName": "Operation/Business 2/SOFFID",
    "system": "soffid",

    "startDate": "2021-05-10 12:00:00",
    "certificationDate": "2021-05-10 12:00:00",

    "enabled": true,
    "approvalPending": false,
    "removalPending": false,
    "bpmEnabled": "N",

}
```

##### Response 201 Created

```JSON
{
  "accountSystem": "soffid",
  "accountName": "ckelp",
  "approvalPending": false,
  "createdOn": "2026-03-06 09:28:43.421",
  "enabled": true,
  "informationSystemName": "SOFFID",
  "bpmEnabled": "N",
  "removalPending": false,
  "id": 24567,
  "certificationDate": "2026-03-06 09:28:43.421",
  "updatedBy": "admin",
  "userGroupCode": "world",
  "roleId": 632,
  "userFullName": "Cas Kelp",
  "updatedOn": "2026-03-06 09:28:43.421",
  "userName": "ckelp",
  "accountId": 24563,
  "system": "soffid",
  "createdBy": "admin",
  "meta": {
    "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/RoleAccount/24567",
    "resourceType": "RoleAccount"
  },
  "schemas": [
    "urn:soffid:com.soffid.iam.iga.api.RoleAccount"
  ],
  "roleName": "SOFFID_ADMIN",
  "attributes": {},
  "roleDescription": "SOFFID Administrator",
  "startDate": "2021-05-10 12:00:00"
}
```


### Delete

This option allows you to revoke a role to a specific account.

> If you have installed the **User snapshot backup addon** when you delete a RoleAccount, it will be disabled, but never deleted from the database. If you don not have installed the **User snapshot backup addon**, when you delete the RoleAccount, it will be deleted from the database.

<p class="callout warning">Please note after this delete, the RoleAccount has to be created again to use it in the next examples.</p>

##### Request

```MarkDown
DELETE http://<your-omain>/soffid/webservice/scim2/v1/RoleAccount/1976862
```

##### Response 204 No Content

```
204 No Content
```

### Error response

<p class="callout info">For more information about error response visit [https://bookstack.soffid.com/link/116#bkmrk-error-response](https://bookstack.soffid.com/link/116#bkmrk-error-response)</p>

# SCIM Host examples

## Operations

This page shows the operations that can be performed for the host object.

### List all

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Host
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 12,
    "startIndex": 1,
    "Resources": [
        {
            "serialNumber": "soffid.bubu.lab:192.168.133.1",
            "os": "ALT",
            "mail": false,
            "ip": "192.168.133.1",
            "dynamicIp": true,
            "description": "Autocreated on  12/13/20 6:49:34 PM",
            "office": false,
            "lastSeen": "2020-12-13 18:49:34",
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Host/1039055",
                "resourceType": "Host"
            },
            "networkCode": "internal",
            "schemas": [
                "urn:soffid:com.soffid.iam.am.api.Host"
            ],
            "name": "soffid.bubu.lab",
            "id": 1039055,
            "hostAlias": [],
            "printersServer": false
        },
        {
            "os": "ALT",
            "mail": false,
            "ip": "10.129.120.4",
            "dynamicIp": false,
            "description": "Discovered host iam.soffid.com",
            "office": false,
            "lastSeen": "2021-04-05 20:06:19",
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Host/1793093",
                "resourceType": "Host"
            },
            "networkCode": "lab1",
            "schemas": [
                "urn:soffid:com.soffid.iam.am.api.Host"
            ],
            "name": "iam.soffid.com",
            "id": 1793093,
            "hostAlias": [],
            "printersServer": false
        },
      ........
    ]
}
```

### List by filter

List all Hosts with a filter expression.

<p class="callout info">It is allowed to use pagination and sort the information, for more information visit the [Sorting](https://bookstack.soffid.com/link/116#bkmrk-sorting) and [Pagination](https://bookstack.soffid.com/link/116#bkmrk-pagination) information.</p>

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Host?filter=os eq LIN and name co archiva
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 1,
    "startIndex": 1,
    "Resources": [
        {
            "os": "LIN",
            "mail": false,
            "ip": "10.129.120.2",
            "dynamicIp": false,
            "description": "Discovered host archiva.dev.lab",
            "office": false,
            "lastSeen": "2021-04-05 20:04:49",
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Host/1793026",
                "resourceType": "Host"
            },
            "networkCode": "lab1",
            "schemas": [
                "urn:soffid:com.soffid.iam.am.api.Host"
            ],
            "name": "archiva.dev.lab",
            "id": 1793026,
            "hostAlias": [],
            "printersServer": false
        }
    ]
}
```

### Query by id

Query a Host by its id (primary key).

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Host/1793093
```

##### Response 200 OK

```JSON
{
    "os": "ALT",
    "mail": false,
    "ip": "10.129.120.4",
    "dynamicIp": false,
    "description": "Discovered host iam.soffid.com",
    "office": false,
    "lastSeen": "2021-04-05 20:06:19",
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Host/1793093",
        "resourceType": "Host"
    },
    "networkCode": "lab1",
    "schemas": [
        "urn:soffid:com.soffid.iam.am.api.Host"
    ],
    "name": "iam.soffid.com",
    "id": 1793093,
    "hostAlias": [],
    "printersServer": false
}
```

### Create

#### Request

```XML
POST https://<your-domain>/soffid/webservice/scim2/v1/Host
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.am.api.Host"
    ],
    "name": "billing.dev.lab",
    "description": "Host billing.dev.lab",
    "os": "LIN",
    "mail": false,
    "dynamicIp": false,
    "networkCode": "internal",
    "hostAlias": [
        "aliasHost_1",
        "aliasHost_2"
    ],
    "serialNumber": "123456789",
    "printersServer": false
}
```

##### Response 201 Created

```JSON
{
    "serialNumber": "123456789",
    "os": "LIN",
    "mail": false,
    "dynamicIp": false,
    "description": "Host billing.dev.lab",
    "office": false,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Host/1976899",
        "resourceType": "Host"
    },
    "networkCode": "internal",
    "schemas": [
        "urn:soffid:com.soffid.iam.am.api.Host"
    ],
    "name": "billing.dev.lab",
    "id": 1976899,
    "hostAlias": [
      "aliasHost_1",
      "aliasHost_2"
    ],
    "printersServer": false
}
```

### Update partial

Only attributes with changes will be updated, the other will maintain the same value.

##### Request

```XML
PATCH https://<your-domain>/soffid/webservice/scim2/v1/Host/1976899
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.am.api.Host"
    ],
    "Operations": [
        {
            "op": "replace",
            "path": "networkCode",
            "value": "Lab1"
        },
        {
            "op": "add",
            "path": "hostAlias",
            "value": [
                "aliasHost_3",
                "aliasHost_4"
            ]
        }
    ]
}
```

##### Response 200 OK

```JSON
{
    "serialNumber": "123456789",
    "os": "LIN",
    "mail": false,
    "dynamicIp": false,
    "description": "Host billing.dev.lab",
    "office": false,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Host/1976899",
        "resourceType": "Host"
    },
    "networkCode": "Lab1",
    "schemas": [
        "urn:soffid:com.soffid.iam.am.api.Host"
    ],
    "name": "billing.dev.lab",
    "id": 1976899,
    "hostAlias": [
        "aliasHost_1",
        "aliasHost_2",
        "aliasHost_3",
        "aliasHost_4"
    ],
    "printersServer": false
}
```

### Update all

This operation replaces all values in the Hosts.

- Note that the attribute id is required to confirm that the resource "...Host/&lt;id&gt;" is the same that the JSON Host.
- Note that all the attributes not included in the request will be cleared in the Host type and their data will be lost.
- Note that not all the attributes are updatable, for example, tag meta, avoid these tags. For more information visit [Resource data model page](https://bookstack.soffid.com/books/scim/chapter/resource-data-model-schema)

##### Request

```XML
PUT https://<your-domain>/soffid/webservice/scim2/v1/Host/1976899
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.am.api.Host"
    ],
    "id": 1976899,
    "name": "billing.dev.lab",
    "description": "Host billing.dev.lab",
    "os": "LIN",
    "mail": false,
    "dynamicIp": false,
    "networkCode": "internal",   
    "printersServer": false
}
```

##### Response 200 OK

```JSON
{
    "os": "LIN",
    "mail": false,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Host/1976899",
        "resourceType": "Host"
    },
    "networkCode": "internal",
    "schemas": [
        "urn:soffid:com.soffid.iam.am.api.Host"
    ],
    "name": "billing.dev.lab",
    "dynamicIp": false,
    "description": "Host billing.dev.lab",
    "id": 1976899,
    "hostAlias": [],
    "printersServer": false
}
```

### Delete

<p class="callout warning">Please note after this delete, the host has to be created again to use it in the next examples.</p>

##### Request

```MarkDown
DELETE https://<your-omain>/soffid/webservice/scim2/v1/Host/1976899
```

##### Response 204 No Content

```
204 No Content
```

### Error response

<p class="callout info">For more information about error response visit [https://bookstack.soffid.com/link/116#bkmrk-error-response](https://bookstack.soffid.com/link/116#bkmrk-error-response)</p>

# SCIM MailDomain examples

## Operations

This page shows the operations that can be performed for the MailDomain object.

### List all

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/MailDomain
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 2,
    "startIndex": 1,
    "Resources": [
        {
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/MailDomain/523263",
                "resourceType": "MailDomain"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.iga.api.MailDomain"
            ],
            "name": "soffid.com",
            "obsolete": false,
            "description": "Soffid",
            "id": 523263
        },
        {
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/MailDomain/523265",
                "resourceType": "MailDomain"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.iga.api.MailDomain"
            ],
            "name": "soffid.org",
            "obsolete": false,
            "description": "Old Domain",
            "id": 523265
        }
    ]
}
```

### List by filter

List all Mail domain with a filter expression.

<p class="callout info">It is allowed to use pagination and sort the information, for more information visit the [Sorting](https://bookstack.soffid.com/link/116#bkmrk-sorting) and [Pagination](https://bookstack.soffid.com/link/116#bkmrk-pagination) information.</p>

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/MailDomain?filter=obsolete eq false and description co old
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 1,
    "startIndex": 1,
    "Resources": [
        {
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/MailDomain/523265",
                "resourceType": "MailDomain"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.iga.api.MailDomain"
            ],
            "name": "soffid.org",
            "obsolete": false,
            "description": "Old Domain",
            "id": 523265
        }
    ]
}
```

### Query by id

Query a Mail Domain by its id (primary key).

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/MailDomain/523263
```

##### Response 200 OK

```JSON
{
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/MailDomain/523263",
        "resourceType": "MailDomain"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.MailDomain"
    ],
    "name": "soffid.com",
    "obsolete": false,
    "description": "Soffid",
    "id": 523263
}
```

### Create

#### Request

```XML
POST https://<your-domain>/soffid/webservice/scim2/v1/MailDomain
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.MailDomain"
    ],
    "name": "newdomain.com",
    "obsolete": false,
    "description": "New Domain"
}
```

##### Response 201 Created

```JSON
{
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/MailDomain/1976941",
        "resourceType": "MailDomain"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.MailDomain"
    ],
    "name": "newdomain.com",
    "obsolete": false,
    "description": "New Domain",
    "id": 1976941
}
```

### Update partial

Only attributes with changes will be updated, the other will maintain the same value.

##### Request

```
PATCH https://<your-domain>/soffid/webservice/scim2/v1/MailDomain/1976941
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.MailDomain"
    ],
    "Operations": [
        {
            "op": "replace",
            "path": "description",
            "value": "New domain (xxx)"
        },
        {
            "op": "replace",
            "path": "obsolete",
            "value": "true"
        }
    ]
}
```

##### Response 200 OK

```JSON
{
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/MailDomain/1976941",
        "resourceType": "MailDomain"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.MailDomain"
    ],
    "name": "newdomain.com",
    "obsolete": true,
    "description": "New domain (xxx)",
    "id": 1976941
}
```

### Update all

This operation replaces all values in the Mail Domain.

- Note that the attribute id is required to confirm that the resource "...MailDomain/&lt;id&gt;" is the same that the JSON MailDomain.
- Note that all the attributes not included in the request will be cleared in the MailDomain type and their data will be lost.
- Note that not all the attributes are updatable, for example, tag meta, avoid these tags. For more information visit [Resource data model page](https://bookstack.soffid.com/books/scim/chapter/resource-data-model-schema)

##### Request

```XML
PUT https://<your-domain>/soffid/webservice/scim2/v1/MailDomain/1976941
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.MailDomain"
    ],
    "id": 1976941,
    "name": "newdomain.com",
    "obsolete": false,
    "description": "New Domain"
}
```

##### Response 200 OK

```JSON
{
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/MailDomain/1976941",
        "resourceType": "MailDomain"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.MailDomain"
    ],
    "name": "newdomain.com",
    "obsolete": false,
    "description": "New Domain",
    "id": 1976941
}
```

### Delete

<p class="callout warning">Please note after this delete, the mail domain has to be created again to use it in the next examples.</p>

##### Request

```MarkDown
DELETE https://<your-omain>/soffid/webservice/scim2/v1/MailDomain/1976941
```

##### Response 204 No Content

```
204 No Content
```

### Error response

<p class="callout info">For more information about error response visit [https://bookstack.soffid.com/link/116#bkmrk-error-response](https://bookstack.soffid.com/link/116#bkmrk-error-response)</p>

# SCIM MailList examples

## Operations

This page shows the operations that can be performed for the MailList object.

### List all

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/MailList
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 3,
    "startIndex": 1,
    "Resources": [
        {
            "groupMembers": [],
            "usersList": [
                "admin",
                "test2"
            ],
            "description": "Test email",
            "externalList": [],
            "explodedUsersList": [
                "test2",
                "admin"
            ],
            "roleMembers": [],
            "lists": [
                "test@soffid.com"
            ],
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/MailList/524071",
                "resourceType": "MailList"
            },
            "domainName": "soffid.com",
            "schemas": [
                "urn:soffid:com.soffid.iam.iga.api.MailList"
            ],
            "name": "test",
            "attributes": {},
            "id": 524071,
            "listsBelong": "test@soffid.com"
        },
        {
            "groupMembers": [],
            "usersList": [],
            "externalList": [],
            "explodedUsersList": [],
            "roleMembers": [],
            "lists": [],
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/MailList/1976100",
                "resourceType": "MailList"
            },
            "domainName": "soffid.org",
            "schemas": [
                "urn:soffid:com.soffid.iam.iga.api.MailList"
            ],
            "name": "mailList",
            "attributes": {},
            "id": 1976100,
            "listsBelong": ""
        },
       ......
    ]
}
```

### List by filter

List all MailList with a filter expression.

<p class="callout info">It is allowed to use pagination and sort the information, for more information visit the [Sorting](https://bookstack.soffid.com/link/116#bkmrk-sorting) and [Pagination](https://bookstack.soffid.com/link/116#bkmrk-pagination) information.</p>

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/MailList?filter=description co test
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 2,
    "startIndex": 1,
    "Resources": [
        {
            "groupMembers": [],
            "usersList": [
                "admin",
                "test2"
            ],
            "description": "Test email",
            "externalList": [],
            "explodedUsersList": [
                "test2",
                "admin"
            ],
            "roleMembers": [],
            "lists": [
                "test@soffid.com"
            ],
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/MailList/524071",
                "resourceType": "MailList"
            },
            "domainName": "soffid.com",
            "schemas": [
                "urn:soffid:com.soffid.iam.iga.api.MailList"
            ],
            "name": "test",
            "attributes": {},
            "id": 524071,
            "listsBelong": "test@soffid.com"
        },
        {
            "groupMembers": [],
            "usersList": [
                "dilbert",
                "admin"
            ],
            "description": "Test email mailList",
            "externalList": [],
            "explodedUsersList": [
                "dilbert",
                "admin"
            ],
            "roleMembers": [],
            "lists": [],
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/MailList/1976181",
                "resourceType": "MailList"
            },
            "domainName": "soffid.com",
            "schemas": [
                "urn:soffid:com.soffid.iam.iga.api.MailList"
            ],
            "name": "mailList2",
            "attributes": {},
            "id": 1976181,
            "listsBelong": ""
        }
    ]
}
```

### Query by id

Query a MailList by its id (primary key).

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/MailList/524071
```

##### Response 200 OK

```JSON
{
    "groupMembers": [],
    "usersList": [
        "admin",
        "test2"
    ],
    "description": "Test email",
    "externalList": [],
    "explodedUsersList": [
        "test2",
        "admin"
    ],
    "roleMembers": [],
    "lists": [
        "test@soffid.com"
    ],
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/MailList/524071",
        "resourceType": "MailList"
    },
    "domainName": "soffid.com",
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.MailList"
    ],
    "name": "test",
    "attributes": {},
    "id": 524071,
    "listsBelong": "test@soffid.com"
}
```

### Create

#### Request

```XML
POST https://<your-domain>/soffid/webservice/scim2/v1/MailList
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.MailList"
    ],
    "name": "billingMailList",
    "domainName": "newdomain.com",
    "description": "Test email mailList",
    "usersList": [
        "admin",
        "dilbert"
    ]
}
```

##### Response 201 Created

```JSON
{
    "groupMembers": [],
    "usersList": [
        "dilbert",
        "admin"
    ],
    "description": "Test email mailList",
    "externalList": [],
    "explodedUsersList": [
        "dilbert",
        "admin"
    ],
    "roleMembers": [],
    "lists": [],
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/MailList/1976957",
        "resourceType": "MailList"
    },
    "domainName": "newdomain.com",
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.MailList"
    ],
    "name": "billingMailList",
    "attributes": {},
    "id": 1976957,
    "listsBelong": ""
}
```

### Update partial

Only attributes with changes will be updated, the other will maintain the same value.

##### Request

```
PATCH http://<your-domain>/soffid/webservice/scim2/v1/GroupUser/1976741
```

**JSON**

```JSON
{
    "Operations": [
        {
            "op": "remove",
            "path": "usersList",
            "value": [
                "admin",
                "dilbert"
            ]
        }
    ]
}
```

##### Response 200 OK

```JSON
{
    "groupMembers": [],
    "description": "Test email mailList",
    "externalList": [],
    "explodedUsersList": [
        "dilbert",
        "admin"
    ],
    "roleMembers": [],
    "lists": [],
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/MailList/1976957",
        "resourceType": "MailList"
    },
    "domainName": "newdomain.com",
    "schemas": [
        "urn:soffid:com.soffid.iam.api.MailList"
    ],
    "name": "billingMailList",
    "attributes": {},
    "id": 1976957,
    "listsBelong": ""
}
```

### Update all

This operation replaces all values in the MailList.

- Note that the attribute id is required to confirm that the resource "...MailList/&lt;id&gt;" is the same that the JSON MailList.
- Note that all the attributes not included in the request will be cleared in the MailList type and their data will be lost.
- Note that not all the attributes are updatable, for example, tag meta, avoid these tags. For more information visit [Resource data model page](https://bookstack.soffid.com/books/scim/chapter/resource-data-model-schema)

##### Request

```XML
PUT https://<your-domain>/soffid/webservice/scim2/v1/MailList/1976957
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.MailList"
    ],
    "id": 1976957,
    "name": "mailList",
    "domainName": "newdomain.com"
}
```

##### Response 200 OK

```JSON
{
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/MailList/1976957",
        "resourceType": "MailList"
    },
    "domainName": "newdomain.com",
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.MailList"
    ],
    "name": "mailList",
    "attributes": {},
    "id": 1976957
}
```

### Delete

<p class="callout warning">Please note after this delete, the mail list has to be created again to use it in the next examples.</p>

##### Request

```MarkDown
DELETE https://<your-omain>/soffid/webservice/scim2/v1/MailList/1976957
```

##### Response 204 No Content

```
204 No Content
```

### Error response

<p class="callout info">For more information about error response visit [https://bookstack.soffid.com/link/116#bkmrk-error-response](https://bookstack.soffid.com/link/116#bkmrk-error-response)</p>

# SCIM Network examples

## Operations

This page shows the operations that can be performed for the Network object.

### List all

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Network
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 6,
    "startIndex": 1,
    "Resources": [
        {
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Network/67",
                "resourceType": "Network"
            },
            "ip": "127.0.0.0",
            "lanAccess": false,
            "schemas": [
                "urn:soffid:com.soffid.iam.am.api.Network"
            ],
            "name": "loopback",
            "description": "Description",
            "id": 67,
            "mask": "255.255.255.128",
            "dhcpSupport": false
        },
        {
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Network/505167",
                "resourceType": "Network"
            },
            "ip": "172.0.0.0",
            "lanAccess": false,
            "schemas": [
                "urn:soffid:com.soffid.iam.am.api.Network"
            ],
            "name": "int1",
            "description": "Internal network 1",
            "id": 505167,
            "mask": "255.240.0.0",
            "dhcpSupport": false
        },
      ...............
    ]
}
```

### List by filter

List all Networks with a filter expression.

<p class="callout info">It is allowed to use pagination and sort the information, for more information visit the [Sorting](https://bookstack.soffid.com/link/116#bkmrk-sorting) and [Pagination](https://bookstack.soffid.com/link/116#bkmrk-pagination) information.</p>

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Network?filter=description co labora
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 3,
    "startIndex": 1,
    "Resources": [
        {
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Network/1790267",
                "resourceType": "Network"
            },
            "ip": "10.129.120.0",
            "lanAccess": false,
            "schemas": [
                "urn:soffid:com.soffid.iam.am.api.Network"
            ],
            "name": "lab1",
            "description": "Laboratory network 1",
            "id": 1790267,
            "mask": "255.255.255.0",
            "dhcpSupport": false
        },
        {
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Network/1790319",
                "resourceType": "Network"
            },
            "ip": "10.129.121.0",
            "lanAccess": false,
            "schemas": [
                "urn:soffid:com.soffid.iam.am.api.Network"
            ],
            "name": "lab2",
            "description": "Laboratory network 2",
            "id": 1790319,
            "mask": "255.255.255.0",
            "dhcpSupport": false
        },
        {
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Network/1858961",
                "resourceType": "Network"
            },
            "ip": "10.129.122.0",
            "lanAccess": true,
            "schemas": [
                "urn:soffid:com.soffid.iam.am.api.Network"
            ],
            "name": "lab3",
            "description": "Laboratory network",
            "id": 1858961,
            "mask": "255.255.255.0",
            "dhcpSupport": false
        }
    ]
}
```

### Query by id

Query a Network by its id (primary key).

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Network/1038187
```

##### Response 200 OK

```JSON
{
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Network/1038187",
        "resourceType": "Network"
    },
    "ip": "192.168.133.0",
    "lanAccess": true,
    "schemas": [
        "urn:soffid:com.soffid.iam.am.api.Network"
    ],
    "name": "internal",
    "description": "Internal Network",
    "loginRestriction": false,
    "id": 1038187,
    "mask": "255.255.255.0",
    "dhcpSupport": true
}
```

### Create

#### Request

```XML
POST https://<your-domain>/soffid/webservice/scim2/v1/Network
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.api.Network"
    ],
    "name": "Laboratory",
    "description": "Laboratory Network",
    "ip": "192.168.123.0",
    "mask": "255.255.255.0",
    "loginRestriction": false,
    "lanAccess": true,
    "dhcpSupport": true
}
```

##### Response 201 Created

```JSON
{
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Network/1977114",
        "resourceType": "Network"
    },
    "ip": "192.168.123.0",
    "lanAccess": true,
    "schemas": [
        "urn:soffid:com.soffid.iam.api.Network"
    ],
    "name": "Laboratory",
    "description": "Laboratory Network",
    "loginRestriction": false,
    "id": 1977114,
    "mask": "255.255.255.0",
    "dhcpSupport": true
}
```

### Update partial

Only attributes with changes will be updated, the other will maintain the same value.

##### Request

```
PATCH https://<your-domain>/soffid/webservice/scim2/v1/Network/1977114
```

**JSON**

```JSON
{
    "Operations": [
        {
            "op": "replace",
            "path": "ip",
            "value": "192.168.125.0"
        }
    ]
}
```

##### Response 200 OK

```JSON
{
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Network/1977114",
        "resourceType": "Network"
    },
    "ip": "192.168.123.0",
    "lanAccess": true,
    "schemas": [
        "urn:soffid:com.soffid.iam.am.api.Network"
    ],
    "name": "Laboratory",
    "description": "Laboratory Network",
    "loginRestriction": false,
    "id": 1977114,
    "mask": "255.255.255.0",
    "dhcpSupport": true
}
```

### Update all

This operation replaces all values in the Network.

- Note that the attribute id is required to confirm that the resource "...Network/&lt;id&gt;" is the same that the JSON Network.
- Note that all the attributes not included in the request will be cleared in the Network type and their data will be lost.
- Note that not all the attributes are updatable, for example, tag meta, avoid these tags. For more information visit [Resource data model page](https://bookstack.soffid.com/books/scim/chapter/resource-data-model-schema)

##### Request

```XML
PUT https://<your-domain>/soffid/webservice/scim2/v1/Network/1977114
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.am.api.Network"
    ],
    "id": 1977114,
    "name": "Laboratory",
    "ip": "192.168.123.0",
    "mask": "255.255.255.0"
}
```

##### Response 200 OK

```JSON
{
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/Network/1977114",
        "resourceType": "Network"
    },
    "ip": "192.168.123.0",
    "schemas": [
        "urn:soffid:com.soffid.iam.am.api.Network"
    ],
    "name": "Laboratory",
    "id": 1977114,
    "mask": "255.255.255.0",
    "dhcpSupport": false
}
```

### Delete

<p class="callout warning">Please note after this delete, the network has to be created again to use it in the next examples.</p>

##### Request

```MarkDown
DELETE https://<your-omain>/soffid/webservice/scim2/v1/Network/1977114
```

##### Response 204 No Content

```
204 No Content
```

### Error response

<p class="callout info">For more information about error response visit [https://bookstack.soffid.com/link/116#bkmrk-error-response](https://bookstack.soffid.com/link/116#bkmrk-error-response)</p>

# SCIM DomainValue examples

## Operations

This page shows the operations that can be performed for the DomainValue object. The DomainValue is related to Information Systems.

> Role scope or domains are properties that can be assigned to some entitlements, limiting the scope of that entitlement. This can be used to limit, for instance, the maximum amount allowed for a money transfer, or the commercial zones to manage.

### List all

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/DomainValue
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 4,
    "startIndex": 1,
    "Resources": [
        {
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/DomainValue/499623",
                "resourceType": "DomainValue"
            },
            "domainName": "Zone",
            "externalCodeDomain": "Operation",
            "schemas": [
                "urn:soffid:com.soffid.iam.iga.api.DomainValue"
            ],
            "description": "Twenty",
            "id": 499623,
            "value": "20"
        },
        {
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/DomainValue/499629",
                "resourceType": "DomainValue"
            },
            "domainName": "Zone",
            "externalCodeDomain": "Operation",
            "schemas": [
                "urn:soffid:com.soffid.iam.iga.api.DomainValue"
            ],
            "description": "Eleven",
            "id": 499629,
            "value": "10"
        },
      .............
    ]
}
```

### List by filter

List all DomainValues with a filter expression.

<p class="callout info">It is allowed to use pagination and sort the information, for more information visit the [Sorting](https://bookstack.soffid.com/link/116#bkmrk-sorting) and [Pagination](https://bookstack.soffid.com/link/116#bkmrk-pagination) information.</p>

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/DomainValue?filter=description co Tw
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 1,
    "startIndex": 1,
    "Resources": [
        {
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/DomainValue/499623",
                "resourceType": "DomainValue"
            },
            "domainName": "Zone",
            "externalCodeDomain": "Operation",
            "schemas": [
                "urn:soffid:com.soffid.iam.iga.api.DomainValue"
            ],
            "description": "Twenty",
            "id": 499623,
            "value": "20"
        }
    ]
}
```

### Query by id

Query a DomainValue by its id (primary key).

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/DomainValue/802012
```

##### Response 200 OK

```JSON
{
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/DomainValue/802012",
        "resourceType": "DomainValue"
    },
    "domainName": "Company",
    "externalCodeDomain": "Operation/Business 2/SOFFID",
    "schemas": [
        "urn:soffid:com.soffid.iam.api.DomainValue"
    ],
    "description": "Soffid",
    "id": 802012,
    "value": "Soffid"
}
```

### Create

#### Request

```XML
POST https://<your-domain>/soffid/webservice/scim2/v1/DomainValue
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.DomainValue"
    ],
    "domainName": "Company",
    "externalCodeDomain": "Operation/Business 2/SOFFID",
    "description": "bubble",
    "value": "bubble"
}
```

##### Response 201 Created

```JSON
{
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/DomainValue/1977131",
        "resourceType": "DomainValue"
    },
    "domainName": "Company",
    "externalCodeDomain": "Operation/Business 2/SOFFID",
    "schemas": [
        "urn:soffid:com.soffid.iam.api.DomainValue"
    ],
    "description": "bubble",
    "id": 1977131,
    "value": "bubble"
}
```

### Update partial

Only attributes with changes will be updated, the other will maintain the same value.

##### Request

```XML
PATCH https://<your-domain>/soffid/webservice/scim2/v1/DomainValue/1976741
```

**JSON**

```JSON
{
    "Operations": [
        {
            "op": "replace",
            "path": "description",
            "value": "Bubble description"
        }
    ]
}
```

##### Response 200 OK

```JSON
{
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/DomainValue/1977131",
        "resourceType": "DomainValue"
    },
    "domainName": "Company",
    "externalCodeDomain": "Operation/Business 2/SOFFID",
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.DomainValue"
    ],
    "description": "Bubble description",
    "id": 1977131,
    "value": "bubble"
}
```

### Update all

This operation replaces all values in the DomainValue.

- Note that the attribute id is required to confirm that the resource "...DomainValue/&lt;id&gt;" is the same that the JSON DomainValue.
- Note that all the attributes not included in the request will be cleared in the DomainValue type and their data will be lost.
- Note that not all the attributes are updatable, for example, tag meta, avoid these tags. For more information visit the [Resource data model page](https://bookstack.soffid.com/books/scim/chapter/resource-data-model-schema)

##### Request

```XML
PUT https://<your-domain>/soffid/webservice/scim2/v1/DomainValue/1977131
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.GroupUser"
    ],
    "id": 1976741,
    "group": "it",
    "groupDescription": "Help desk support team",
    "user": "ckelp",
    "fullName": "Casey Kelp",
    "primaryGroup": true,
    "attributes": {}
}
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.DomainValue"
    ],
    "id": 1977131,
    "domainName": "Company",
    "externalCodeDomain": "Operation/Business 2/SOFFID",
    "description": "New bubble",
    "value": "Newbubble"
}
```

### Delete

<p class="callout warning">Please note after this delete, the DomainValue has to be created again to use it in the next examples.</p>

##### Request

```MarkDown
DELETE https://<your-omain>/soffid/webservice/scim2/v1/DomainValue/1977131
```

##### Response 204 No Content

```
204 No Content
```

### Error response

<p class="callout info">For more information about error response visit [https://bookstack.soffid.com/link/116#bkmrk-error-response](https://bookstack.soffid.com/link/116#bkmrk-error-response)</p>

# SCIM VaultFolder examples

## Operations

This page shows the operations that can be performed for the VaultFolder object

### List all

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/VaultFolder/
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 4,
    "startIndex": 1,
    "Resources": [
        {
            "grantedRoles": [],
            "accessLevel": "O",
            "managerRoles": [],
            "navigateUsers": [],
            "navigateRoles": [],
            "description": "Accounts that won't be shared",
            "personal": true,
            "ownerGroups": [],
            "ownerRoles": [],
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/VaultFolder/368461",
                "resourceType": "VaultFolder"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.am.api.VaultFolder"
            ],
            "name": "Personal accounts",
            "managerUsers": [],
            "navigateGroups": [],
            "id": 368461,
            "grantedGroups": [],
            "managerGroups": [],
            "grantedUsers": [],
            "ownerUsers": [
                "admin"
            ]
        },
        {
            "grantedRoles": [],
            "accessLevel": "O",
            "managerRoles": [],
            "navigateUsers": [
                "test2",
                "admin"
            ],
            "navigateRoles": [],
            "description": "Password vault",
            "personal": false,
            "ownerGroups": [],
            "ownerRoles": [],
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/VaultFolder/515461",
                "resourceType": "VaultFolder"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.am.api.VaultFolder"
            ],
            "name": "vault",
            "managerUsers": [],
            "navigateGroups": [],
            "id": 515461,
            "grantedGroups": [],
            "managerGroups": [],
            "grantedUsers": [],
            "ownerUsers": [
                "admin"
            ]
        },
      ............
    ]
}
```

### List by filter

List all VaultFolders with a filter expression.

<p class="callout info">It is allowed to use pagination and sort the information, for more information visit the [Sorting](https://bookstack.soffid.com/link/116#bkmrk-sorting) and [Pagination](https://bookstack.soffid.com/link/116#bkmrk-pagination) information.</p>

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/VaultFolder/?filter=personal eq true
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 1,
    "startIndex": 1,
    "Resources": [
        {
            "grantedRoles": [],
            "accessLevel": "O",
            "managerRoles": [],
            "navigateUsers": [],
            "navigateRoles": [],
            "description": "Accounts that won't be shared",
            "personal": true,
            "ownerGroups": [],
            "ownerRoles": [],
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/VaultFolder/368461",
                "resourceType": "VaultFolder"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.am.api.VaultFolder"
            ],
            "name": "Personal accounts",
            "managerUsers": [],
            "navigateGroups": [],
            "id": 368461,
            "grantedGroups": [],
            "managerGroups": [],
            "grantedUsers": [],
            "ownerUsers": [
                "admin"
            ]
        }
    ]
}
```

### Query by id

Query a VaultFolder by its id (primary key).

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/VaultFolder/515461
```

##### Response 200 OK

```JSON
{
    "grantedRoles": [],
    "accessLevel": "O",
    "managerRoles": [],
    "navigateUsers": [
        "test2",
        "admin"
    ],
    "navigateRoles": [],
    "description": "Password vault",
    "personal": false,
    "ownerGroups": [],
    "ownerRoles": [],
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/VaultFolder/515461",
        "resourceType": "VaultFolder"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.am.api.VaultFolder"
    ],
    "name": "vault",
    "managerUsers": [],
    "navigateGroups": [],
    "id": 515461,
    "grantedGroups": [],
    "managerGroups": [],
    "grantedUsers": [],
    "ownerUsers": [
        "admin"
    ]
}
```

### Create

#### Request

```XML
POST https://<your-domain>/soffid/webservice/scim2/v1/VaultFolder
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.am.api.VaultFolder"
    ],
    "name": "Folder Billing",
    "description": "Folder Billing",
    "parentFolder": "vault",
    "parentId": 515461,
    "personal": false,
    "accessLevel": "M",
    "ownerUsers": [
        "admin"
    ],
    "navigateUsers": [
        "admin"
    ]
}
```

##### Response 201 Created

```JSON
{
    "grantedRoles": [],
    "accessLevel": "O",
    "managerRoles": [],
    "navigateUsers": [
        "admin"
    ],
    "navigateRoles": [],
    "description": "Folder Billing",
    "personal": false,
    "parentId": 515461,
    "parentFolder": "vault",
    "ownerGroups": [],
    "ownerRoles": [],
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/VaultFolder/1977703",
        "resourceType": "VaultFolder"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.am.api.VaultFolder"
    ],
    "name": "Folder Billing",
    "managerUsers": [],
    "navigateGroups": [],
    "id": 1977703,
    "grantedGroups": [],
    "managerGroups": [],
    "grantedUsers": [],
    "ownerUsers": [
        "admin"
    ]
}
```

### Update partial

Only attributes with changes will be updated, the other will maintain the same value.

##### Request

```
PATCH https://<your-domain>/soffid/webservice/scim2/v1/VaultFolder/1977703
```

**JSON**

```JSON
{
    "Operations": [
        {
            "op": "replace",
            "path": "description",
            "value": "Vault folder billing"
        },
        {
            "op": "add",
            "path": "navigateUsers",
            "value": [
                "dilbert",
                "asea"
            ]
        }
    ]
}
```

##### Response 200 OK

```JSON
{
    "grantedRoles": [],
    "accessLevel": "O",
    "managerRoles": [],
    "navigateUsers": [
        "asea",
        "dilbert",
        "admin"
    ],
    "navigateRoles": [],
    "description": "Vault folder billing",
    "personal": false,
    "parentId": 515461,
    "parentFolder": "vault",
    "ownerGroups": [],
    "ownerRoles": [],
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/VaultFolder/1977703",
        "resourceType": "VaultFolder"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.am.api.VaultFolder"
    ],
    "name": "Folder Billing",
    "managerUsers": [],
    "navigateGroups": [],
    "id": 1977703,
    "grantedGroups": [],
    "managerGroups": [],
    "grantedUsers": [],
    "ownerUsers": [
        "admin"
    ]
}
```

### Update all

This operation replaces all values in the VaultFolder.

- Note that the attribute id is required to confirm that the resource "...VaultFolder/&lt;id&gt;" is the same that the JSON VaultFolder.
- Note that all the attributes not included in the request will be cleared in the GroupUser type and their data will be lost.
- Note that not all the attributes are updatable, for example, tag meta, avoid these tags. For more information visit [Resource data model page](https://bookstack.soffid.com/books/scim/chapter/resource-data-model-schema)

##### Request

```XML
PUT https://<your-domain>/soffid/webservice/scim2/v1/VaultFolder/1977703
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.am.api.VaultFolder"
    ],
    "id": 1977703,
    "name": "Folder Billing",
    "description": "Folder Billing",
    "parentFolder": "vault",
    "parentId": 515461,
    "personal": false,
    "accessLevel": "M",
    "ownerUsers": [
        "admin"
    ]
}
```

##### Response 200 OK

```JSON
{
    "grantedRoles": [],
    "accessLevel": "O",
    "managerRoles": [],
    "navigateUsers": [],
    "navigateRoles": [],
    "description": "Folder Billing",
    "personal": false,
    "parentId": 515461,
    "parentFolder": "vault",
    "ownerGroups": [],
    "ownerRoles": [],
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/VaultFolder/1977703",
        "resourceType": "VaultFolder"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.am.api.VaultFolder"
    ],
    "name": "Folder Billing",
    "managerUsers": [],
    "navigateGroups": [],
    "id": 1977703,
    "grantedGroups": [],
    "managerGroups": [],
    "grantedUsers": [],
    "ownerUsers": [
        "admin"
    ]
}
```

### Delete

<p class="callout warning">Please note after this delete, the VaultFolder has to be created again to use it in the next examples.</p>

##### Request

```MarkDown
DELETE https://<your-omain>/soffid/webservice/scim2/v1/VaultFolder/1977703
```

##### Response 204 No Content

```
204 No Content
```

### Error response

<p class="callout info">For more information about error response visit [https://bookstack.soffid.com/link/116#bkmrk-error-response](https://bookstack.soffid.com/link/116#bkmrk-error-response)</p>

# SCIM System examples

## Operations

This page shows the operations that can be performed for the Systems object (Agents).

### List all

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/System
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 16,
    "startIndex": 1,
    "Resources": [
        {
            "accessControl": false,
            "usersDomain": "DEFAULT",
            "fullReconciliation": false,
            "authoritative": false,
            "description": "Soffid system",
            "groups": "",
            "threads": 1,
            "className": "- no class -",
            "userTypes": "I",
            "groupsList": [],
            "readOnly": false,
            "passwordsDomain": "DEFAULT",
            "timeStamp": "2020-04-18 19:32:37",
            "rolebased": true,
            "trusted": false,
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/System/44",
                "resourceType": "System"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.iga.api.System"
            ],
            "name": "soffid",
            "id": 44,
            "passwordsDomainId": 27,
            "tenant": "master",
            "generateTasksOnLoad": true
        },
        {
            "accessControl": false,
            "usersDomain": "DEFAULT",
            "fullReconciliation": false,
            "authoritative": false,
            "description": "External SSO accounts",
            "groups": "admingroup,enterprise",
            "threads": 1,
            "className": "com.soffid.iam.sync.sso.agent.SSOAgent",
            "userTypes": "S,I",
            "groupsList": [
                "admingroup",
                "enterprise"
            ],
            "readOnly": false,
            "url": "local",
            "passwordsDomain": "DEFAULT",
            "timeStamp": "2020-09-21 10:17:38",
            "rolebased": false,
            "trusted": false,
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/System/47",
                "resourceType": "System"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.iga.api.System"
            ],
            "name": "SSO",
            "id": 47,
            "manualAccountCreation": true,
            "passwordsDomainId": 27,
            "tenant": "master",
            "generateTasksOnLoad": true
        },
      ................
    ]
}
```

### List by filter

List all Systems with a filter expression.

<p class="callout info">It is allowed to use pagination and sort the information, for more information visit the [Sorting](https://bookstack.soffid.com/link/116#bkmrk-sorting) and [Pagination](https://bookstack.soffid.com/link/116#bkmrk-pagination) information.</p>

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/System?filter=description co 10.129.
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 2,
    "startIndex": 1,
    "Resources": [
        {
            "accessControl": false,
            "description": "Discovered host 10.129.122.22",
            "className": "com.soffid.iam.sync.agent.SimpleSSHAgent",
            "userTypes": "",
            "passwordsDomain": "DEFAULT",
            "rolebased": false,
            "id": 1885153,
            "manualAccountCreation": true,
            "tenant": "master",
            "generateTasksOnLoad": false,
            "param7": "false",
            "usersDomain": "DEFAULT",
            "param6": "UTF-8",
            "fullReconciliation": true,
            "authoritative": false,
            "sharedDispatcher": true,
            "param0": "soffid",
            "groups": "",
            "threads": 1,
            "groupsList": [],
            "readOnly": false,
            "param3": "10.129.122.22",
            "param4": "true",
            "url": "local",
            "param2": "517y1hF40k4=",
            "timeStamp": "2021-04-23 12:23:15",
            "trusted": false,
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/System/1885153",
                "resourceType": "System"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.iga.api.System"
            ],
            "name": "10.129.122.22",
            "passwordsDomainId": 27
        },
        {
            "accessControl": false,
            "description": "Discovered host 10.129.122.25",
            "className": "com.soffid.iam.sync.agent.SimpleWindowsAgent",
            "userTypes": "",
            "passwordsDomain": "DEFAULT",
            "rolebased": false,
            "id": 1890334,
            "manualAccountCreation": true,
            "tenant": "master",
            "generateTasksOnLoad": false,
            "param7": "false",
            "usersDomain": "DEFAULT",
            "fullReconciliation": true,
            "authoritative": false,
            "sharedDispatcher": true,
            "param0": "Administrador",
            "groups": "",
            "threads": 1,
            "groupsList": [],
            "readOnly": false,
            "param3": "10.129.122.25",
            "param4": "true",
            "url": "local",
            "param2": "VFJV1pSRfE7s",
            "timeStamp": "2021-04-23 20:00:34",
            "trusted": false,
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/System/1890334",
                "resourceType": "System"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.iga.api.System"
            ],
            "name": "10.129.122.25",
            "passwordsDomainId": 27
        }
    ]
}
```

### Query by id

Query a System by its id (primary key).

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/System/389082
```

##### Response 200 OK

```JSON
{
    "accessControl": true,
    "description": "Active Directory.",
    "className": "com.soffid.iam.sync.agent2.CustomizableActiveDirectoryAgent",
    "userTypes": "I",
    "passwordsDomain": "DEFAULT",
    "rolebased": true,
    "id": 389082,
    "manualAccountCreation": false,
    "tenant": "master",
    "generateTasksOnLoad": true,
    "param7": "true",
    "param8": "true",
    "usersDomain": "DEFAULT",
    "fullReconciliation": false,
    "authoritative": true,
    "sharedDispatcher": false,
    "param0": "ad.bubu.lab",
    "groups": "",
    "threads": 1,
    "groupsList": [],
    "readOnly": false,
    "param3": "C27Nv4vjbIsI",
    "url": "https://soffid.bubu.lab:1760/",
    "param1": "dc=ad,dc=bubu,dc=lab",
    "param2": "ad\\Administrator",
    "timeStamp": "2021-04-07 09:31:59",
    "trusted": true,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/System/389082",
        "resourceType": "System"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.System"
    ],
    "name": "ad",
    "passwordsDomainId": 27
}
```

### Create

#### Request

```XML
POST https://<your-domain>/soffid/webservice/scim2/v1/System
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.System"
    ],
    "name": "SQLRRHH",
    "description": "SQL RRHH test",
    "className": "com.soffid.iam.sync.agent.SQLAgent2",
    "userTypes": "E,I",
    "passwordsDomain": "DEFAULT",
    "usersDomain": "DEFAULT"
}
```

##### Response 201 Created

```JSON
{
    "accessControl": false,
    "usersDomain": "DEFAULT",
    "fullReconciliation": false,
    "authoritative": false,
    "description": "SQL RRHH test",
    "groups": "",
    "threads": 1,
    "className": "com.soffid.iam.sync.agent.SQLAgent2",
    "userTypes": "I,E",
    "groupsList": [],
    "readOnly": false,
    "passwordsDomain": "DEFAULT",
    "timeStamp": "2021-05-12 10:58:35",
    "rolebased": false,
    "trusted": false,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/System/1977157",
        "resourceType": "System"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.System"
    ],
    "name": "SQLRRHH",
    "id": 1977157,
    "passwordsDomainId": 27,
    "tenant": "master",
    "generateTasksOnLoad": false
}
```

### Update partial

Only attributes with changes will be updated, the other will maintain the same value.

##### Request

```
PATCH https://<your-domain>/soffid/webservice/scim2/v1/System/1977157
```

**JSON**

```JSON
{
    "Operations": [
        {
            "op": "replace",
            "path": "param0",
            "value": "user"
        },
        {
            "op": "replace",
            "path": "param1",
            "value": "password"
        },
        {
            "op": "replace",
            "path": "param2",
            "value": "jdbc:mysql://localhost/personal"
        }
    ]
}
```

##### Response 200 OK

```JSON
{
    "accessControl": false,
    "description": "SQL RRHH test",
    "className": "com.soffid.iam.sync.agent.SQLAgent2",
    "userTypes": "I,E",
    "passwordsDomain": "DEFAULT",
    "rolebased": false,
    "id": 1977157,
    "tenant": "master",
    "generateTasksOnLoad": false,
    "usersDomain": "DEFAULT",
    "fullReconciliation": false,
    "authoritative": false,
    "param0": "user",
    "groups": "",
    "threads": 1,
    "groupsList": [],
    "readOnly": false,
    "param1": "password",
    "param2": "jdbc:mysql://localhost/personal",
    "timeStamp": "2021-05-12 10:59:44",
    "trusted": false,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/System/1977157",
        "resourceType": "System"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.System"
    ],
    "name": "SQLRRHH",
    "passwordsDomainId": 27
}
```

### Update all

This operation replace all values in the System.

- Note that the attribute id is required to confirm that the resource "...System/&lt;id&gt;" is the same that the JSON System.
- Note that all the attributes not included in the request will be cleared in the System type and their data will be lost.
- Note that not all the attributes are updatable, for example, tag meta, avoid these tags. For more information visit [Resource data model page](https://bookstack.soffid.com/books/scim/chapter/resource-data-model-schema)

##### Request

```XML
PUT http://<your-domain>/soffid/webservice/scim2/v1/System/1977157
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.System"
    ],
    "id": 1977157,
    "name": "SQLRRHH",
    "description": "SQL RRHH test",
    "className": "com.soffid.iam.sync.agent.SQLAgent2",
    "userTypes": "E,I",
    "passwordsDomain": "DEFAULT",
    "usersDomain": "DEFAULT"
}
```

##### Response 200 OK

```JSON
{
    "accessControl": false,
    "usersDomain": "DEFAULT",
    "fullReconciliation": false,
    "authoritative": false,
    "description": "SQL RRHH test",
    "groups": "",
    "threads": 1,
    "className": "com.soffid.iam.sync.agent.SQLAgent2",
    "userTypes": "I,E",
    "groupsList": [],
    "readOnly": false,
    "passwordsDomain": "DEFAULT",
    "timeStamp": "2021-05-12 11:02:49",
    "rolebased": false,
    "trusted": false,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/System/1977157",
        "resourceType": "System"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.System"
    ],
    "name": "SQLRRHH",
    "id": 1977157,
    "passwordsDomainId": 27,
    "tenant": "master",
    "generateTasksOnLoad": false
}
```

### Delete

<p class="callout warning">Please note after this delete, the System has to be created again to use it in the next examples.</p>

##### Request

```MarkDown
DELETE https://<your-omain>/soffid/webservice/scim2/v1/System/1977157
```

##### Response 204 No Content

```
204 No Content
```

### Error response

<p class="callout info">For more information about error response visit [https://bookstack.soffid.com/link/116#bkmrk-error-response](https://bookstack.soffid.com/link/116#bkmrk-error-response)</p>

# SCIM CustomObject examples

## Operations

This page shows the operations that can be performed for the CustomObjects object

### List all

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/CustomObject
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 6,
    "startIndex": 1,
    "Resources": [
        {
            "meta": {
                "location": "http://soffid.pat.lab:8080/webservice/scim2/v1/CustomObject/848157",
                "resourceType": "CustomObject"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.iga.api.CustomObject"
            ],
            "name": "aa",
            "description": "aaa",
            "attributes": {
                "address": "2"
            },
            "id": 848157,
            "type": "building"
        },
        {
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/CustomObject/1510208",
                "resourceType": "CustomObject"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.iga.api.CustomObject"
            ],
            "name": "ES",
            "description": "Spain",
            "attributes": {
                "language": "English"
            },
            "id": 1510208,
            "type": "country"
        },
      ..........
    ]
}
```

### List by filter

List all CustomObjects with a filter expression.

<p class="callout info">It is allowed to use pagination and sort the information, for more information visit the [Sorting](https://bookstack.soffid.com/link/116#bkmrk-sorting) and [Pagination](https://bookstack.soffid.com/link/116#bkmrk-pagination) information.</p>

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/CustomObject?filter=description eq Spain
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 1,
    "startIndex": 1,
    "Resources": [
        {
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/CustomObject/1510208",
                "resourceType": "CustomObject"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.iga.api.CustomObject"
            ],
            "name": "ES",
            "description": "Spain",
            "attributes": {
                "language": "English"
            },
            "id": 1510208,
            "type": "country"
        }
    ]
}
```

### Query by id

Query a CustomObject by its id (primary key).

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/CustomObject/848062
```

##### Response 200 OK

```JSON
{
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/CustomObject/848062",
        "resourceType": "CustomObject"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.CustomObject"
    ],
    "name": "HQ",
    "description": "Headquarters",
    "attributes": {
        "address": "1"
    },
    "id": 848062,
    "type": "building"
}
```

### Create

#### Request

```XML
POST https://<your-domain>/soffid/webservice/scim2/v1/CustomObject
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.CustomObject"
    ],
    "name": "IT",
    "description": "Italy",
    "type": "country",
    "attributes": {
        "language": "English"
    }
}
```

##### Response 201 Created

```JSON
{
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/CustomObject/1977187",
        "resourceType": "CustomObject"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.CustomObject"
    ],
    "name": "IT",
    "description": "Italy",
    "attributes": {
        "language": "English"
    },
    "id": 1977187,
    "type": "country"
}
```

### Update partial

Only attributes with changes will be updated, the other will maintain the same value.

##### Request

```
PATCH https://<your-domain>/soffid/webservice/scim2/v1/CustomObject/1977187
```

**JSON**

```JSON
{
  "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.CustomObject"
    ],
    "Operations": [
        {
            "op": "replace",
            "path": "attributes",
            "value": {
                "language": "German"
            }
        }
    ]
}
```

##### Response 200 OK

```JSON
{
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/CustomObject/1977187",
        "resourceType": "CustomObject"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.CustomObject"
    ],
    "name": "IT",
    "description": "Italy",
    "attributes": {
        "language": "German"
    },
    "id": 1977187,
    "type": "country"
}
```

### Update all

This operation replaces all values in the CustomObject.

- Note that the attribute id is required to confirm that the resource "...CustomObject/&lt;id&gt;" is the same that the JSON CustomObject.
- Note that all the attributes not included in the request will be cleared in the CustomObject type and their data will be lost.
- Note that not all the attributes are updatable, for example, tag meta, avoid these tags. For more information see [Resource data model page](https://bookstack.soffid.com/books/scim/chapter/resource-data-model-schema)

##### Request

```XML
PUT https://<your-domain>/soffid/webservice/scim2/v1/CustomObject/1977187
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.CustomObject"
    ],
    "id": 1977187,
    "name": "IT",
    "description": "Italy",
    "type": "country",
    "attributes": {
        "language": "English"
    }
}
```

##### Response 200 OK

```JSON
{
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/CustomObject/1977187",
        "resourceType": "CustomObject"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.iga.api.CustomObject"
    ],
    "name": "IT",
    "description": "Italy",
    "attributes": {
        "language": "English"
    },
    "id": 1977187,
    "type": "country"
}
```

### Delete

<p class="callout warning">Please note after this delete, the CustomObject has to be created again to use it in the next examples.</p>

##### Request

```MarkDown
DELETE https://<your-omain>/soffid/webservice/scim2/v1/CustomObject/1977187
```

##### Response 204 No Content

```
204 No Content
```

### Error response

<p class="callout info">For more information about error response visit [https://bookstack.soffid.com/link/116#bkmrk-error-response](https://bookstack.soffid.com/link/116#bkmrk-error-response)</p>

# SCIM ProcessDefinition examples

## Operations

This page shows the operations that can be performed for the ProcessDefinitions object

### List all

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/ProcessDefinition
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 8,
    "startIndex": 1,
    "Resources": [
        {
            "author": "admin",
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/ProcessDefinition/1474063",
                "resourceType": "ProcessDefinition"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.bpm.api.ProcessDefinition"
            ],
            "name": "User registration",
            "deployed": "2021-02-11 16:42:08",
            "tag": "27",
            "id": 1474063,
            "version": 27,
            "enabled": true
        },
        {
            "author": "admin",
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/ProcessDefinition/1857694",
                "resourceType": "ProcessDefinition"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.bpm.api.ProcessDefinition"
            ],
            "name": "User request",
            "deployed": "2021-04-15 16:10:11",
            "tag": "19",
            "id": 1857694,
            "version": 19,
            "enabled": true
        },
      .............
    ]
}
```

### List by filter

List all ProcessDefinitions with a filter expression.

<p class="callout info">It is allowed to use pagination and sort the information, for more information visit the [Sorting](https://bookstack.soffid.com/link/116#bkmrk-sorting) and [Pagination](https://bookstack.soffid.com/link/116#bkmrk-pagination) information.</p>

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/ProcessDefinition?filter=name co request
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 2,
    "startIndex": 1,
    "Resources": [
        {
            "author": "admin",
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/ProcessDefinition/1946303",
                "resourceType": "ProcessDefinition"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.bpm.api.ProcessDefinition"
            ],
            "name": "Permissions request",
            "deployed": "2021-04-30 08:48:58",
            "tag": "23",
            "id": 1946303,
            "type": "RoleApproval",
            "version": 23,
            "enabled": true
        },
        {
            "author": "admin",
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/ProcessDefinition/1857694",
                "resourceType": "ProcessDefinition"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.bpm.api.ProcessDefinition"
            ],
            "name": "User request",
            "deployed": "2021-04-15 16:10:11",
            "tag": "19",
            "id": 1857694,
            "version": 19,
            "enabled": true
        }
    ]
}
```

### Query by id

Query a ProcessDefinition by its id (primary key).

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/ProcessDefinition/1857694
```

##### Response 200 OK

```JSON
{
    "author": "admin",
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/ProcessDefinition/1857694",
        "resourceType": "ProcessDefinition"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.bpm.api.ProcessDefinition"
    ],
    "name": "User request",
    "deployed": "2021-04-15 16:10:11",
    "tag": "19",
    "id": 1857694,
    "version": 19,
    "enabled": true
}
```

### Create

This operation is not allowed.

### Update partial

This operation is not allowed.

### Update all

This operation is not allowed.

### Delete

This operation is not allowed.

### Error response

<p class="callout info">For more information about error response visit [https://bookstack.soffid.com/link/116#bkmrk-error-response](https://bookstack.soffid.com/link/116#bkmrk-error-response)</p>

# SCIM ProcessInstance examples

## Operations

This page shows the operations that can be performed for the ProcessInstances object.

### List all

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/ProcessInstance
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 311,
    "startIndex": 1,
    "Resources": [
        {
            "dummyProcess": false,
            "variables": {},
            "comments": [
                {
                    "actor": "admin Soffid Administrator",
                    "schemas": [
                        "urn:soffid:com.soffid.iam.bpm.api.Comment"
                    ],
                    "time": "2020-09-30 09:57:15",
                    "message": "Comentario"
                }
            ],
            "processDefinition": 628635,
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/ProcessInstance/626161",
                "resourceType": "ProcessInstance"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.bpm.api.ProcessInstance"
            ],
            "start": "2020-09-29 20:34:46",
            "currentTask": "Entrada de la consulta",
            "description": "Consultar la base de datos",
            "end": "2020-11-11 15:05:48",
            "id": 626161
        },
        {
            "dummyProcess": false,
            "variables": {},
            "comments": [],
            "processDefinition": 628635,
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/ProcessInstance/626179",
                "resourceType": "ProcessInstance"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.bpm.api.ProcessInstance"
            ],
            "start": "2020-09-29 20:35:22",
            "currentTask": "Entrada de la consulta",
            "description": "Consultar la base de datos",
            "end": "2020-11-11 15:05:44",
            "id": 626179
        },
      ..........
    ]
}
```

### List by filter

List all ProcessInstances with a filter expression.

<p class="callout info">It is allowed to use pagination and sort the information, for more information visit the [Sorting](https://bookstack.soffid.com/link/116#bkmrk-sorting) and [Pagination](https://bookstack.soffid.com/link/116#bkmrk-pagination) information.</p>

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/ProcessInstance?filter=description co Permission and currentTask eq Start
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 8,
    "startIndex": 1,
    "Resources": [
        {
            "dummyProcess": false,
            "variables": {
                "requester": "admin",
                "grants": [],
                "requesterName": "Soffid Administrator"
            },
            "comments": [],
            "processDefinition": 1054785,
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/ProcessInstance/1053984",
                "resourceType": "ProcessInstance"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.bpm.api.ProcessInstance"
            ],
            "start": "2020-12-14 14:49:20",
            "currentTask": "Start",
            "description": "Permissions request",
            "end": "2021-01-29 08:25:28",
            "id": 1053984
        },
        {
            "dummyProcess": false,
            "variables": {
                "requester": "admin",
                "grants": [],
                "requesterName": "Soffid Administrator"
            },
            "comments": [],
            "processDefinition": 1946303,
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/ProcessInstance/1378380",
                "resourceType": "ProcessInstance"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.bpm.api.ProcessInstance"
            ],
            "start": "2021-01-29 08:26:30",
            "currentTask": "Start",
            "description": "Permissions request",
            "id": 1378380
        },
        ...........
    ]
}
      
```

### Query by id

Query a ProcessInstance by its id (primary key).

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/ProcessInstance/1378380
```

##### Response 200 OK

```JSON
{
    "dummyProcess": false,
    "variables": {
        "requester": "admin",
        "grants": [],
        "requesterName": "Soffid Administrator"
    },
    "comments": [],
    "processDefinition": 1946303,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/ProcessInstance/1378380",
        "resourceType": "ProcessInstance"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.bpm.api.ProcessInstance"
    ],
    "start": "2021-01-29 08:26:30",
    "currentTask": "Start",
    "description": "Permissions request",
    "id": 1378380
}
```

### Create

#### Request

```XML
POST https://<your-domain>/soffid/webservice/scim2/v1/ProcessInstance
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.bpm.api.ProcessInstance"
    ],
    "dummyProcess": false,
    "variables": {
        "requester": "ckelp",
        "grants": [],
        "requesterName": "Casey Kelp"
    },
    "comments": [],
    "processDefinition": 1946303,
    "description": "Permissions request"
}
```

##### Response 201 Created

```JSON
{
    "dummyProcess": false,
    "variables": {
        "requester": "ckelp",
        "grants": [],
        "requesterName": "Casey Kelp"
    },
    "comments": [],
    "processDefinition": 1946303,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/ProcessInstance/1378380",
        "resourceType": "ProcessInstance"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.bpm.api.ProcessInstance"
    ],
    "start": "2021-01-29 08:26:30",
    "currentTask": "Start",
    "description": "Permissions request",
    "id": 1378380
}
```

### Update partial

Only attributes with changes will be updated, the other will maintain the same value.

##### Request

```
PATCH https://<your-domain>/soffid/webservice/scim2/v1/GroupUser/1976741
```

**JSON**

```JSON
{
    "Operations": [
        {
            "op": "replace",
            "path": "start",
            "value": "2021-05-14 00:00:00"
        }
    ]
}
```

##### Response 200 OK

```JSON
{
    "dummyProcess": false,
    "variables": {
        "requester": "admin",
        "grants": [],
        "requesterName": "Soffid Administrator"
    },
    "comments": [],
    "processDefinition": 1946303,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/ProcessInstance/1378380",
        "resourceType": "ProcessInstance"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.bpm.api.ProcessInstance"
    ],
    "start": "2021-05-14 00:00:00",
    "currentTask": "Start",
    "description": "Permissions request",
    "id": 1378380
}
```

### Update all

This operation replaces all values in the ProcessInstance.

- Note that the attribute id is required to confirm that the resource "...ProcessInstance/&lt;id&gt;" is the same that the JSON ProcessInstance.
- Note that all the attributes not included in the request will be cleared in the ProcessInstance type and their data will be lost.
- Note that not all the attributes are updatable, for example, tag meta, avoid these tags. For more information see [Resource data model page](https://bookstack.soffid.com/books/scim/chapter/resource-data-model-schema)

##### Request

```XML
PUT - https://<your-domain>/soffid/webservice/scim2/v1/ProcessInstance/1474138
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.bpm.api.ProcessInstance"
    ],
    "id": 1378380,
    "dummyProcess": false,
    "variables": {
        "requester": "ckelp",
        "grants": [],
        "requesterName": "Casey Kelp"
    },
    "comments": ["comments"],
    "processDefinition": 1946303,
    "start": "2021-05-14 00:00:00",
    "currentTask": "Start",
    "description": "Permissions request"
    
}
```

##### Response 200 OK

```JSON
{
    "dummyProcess": false,
    "variables": {
        "requester": "ckelp",
        "grants": [],
        "requesterName": "Casey Kelp"
    },
    "comments": [
        "comments"
    ],
    "processDefinition": 1946303,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/ProcessInstance/1378380",
        "resourceType": "ProcessInstance"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.bpm.api.ProcessInstance"
    ],
    "start": "2021-05-14 00:00:00",
    "currentTask": "Start",
    "description": "Permissions request",
    "id": 1378380
}
```

### Delete

> When you delete a ProcessInstance, it will be disabled, but never deleted from the database, this ProcessInstance will have an end date.

<p class="callout warning">Please note after this delete, the ProcessInstance has to be created again to use it in the next examples.</p>

##### Request

```MarkDown
DELETE - https://<your-domain>/webservice/scim2/v1/ProcessInstance/1977873
```

##### Response 204 No Content

```
204 No Content
```

### Error response

<p class="callout info">For more infomation about error response visit [https://bookstack.soffid.com/link/116#bkmrk-error-response](https://bookstack.soffid.com/link/116#bkmrk-error-response)</p>

# SCIM TaskInstance examples

## Operations

This page shows the operations that can be performed for the TaskInstances object.

### List all

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/TaskInstance
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 6,
    "startIndex": 1,
    "Resources": [
        {
            "variables": {
                "requester": "admin",
                "grants": [
                    {
                        "ownersString": "SOFFID_ADMIN ",
                        "comments": "",
                        "roleId": 393447,
                        "userFullName": "Soffid Administrator",
                        "owners": [
                            "SOFFID_ADMIN"
                        ],
                        "userName": "admin",
                        "approved": false,
                        "applicationDescription": "SOFFID Identity Manager",
                        "taskInstance": 1762656,
                        "schemas": [
                            "urn:soffid:com.soffid.iam.addons.bpm.common.RoleRequestInfo"
                        ],
                        "denied": false,
                        "roleDescription": "Accounting Manager",
                        "applicationName": "Container/Business 2/SOFFID"
                    }
                ],
                "requesterName": "Soffid Administrator"
            },
            "processDefinition": 1762352,
            "description": "Approve ",
            "pooledActors": [
                "SOFFID_ADMIN"
            ],
            "priority": 3,
            "transitions": [
                "Rechazar",
                "Aceptar"
            ],
            "dummyTask": false,
            "processName": "Modificar permisos",
            "processId": 1762544,
            "blocking": false,
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/TaskInstance/1762656",
                "resourceType": "TaskInstance"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.bpm.api.TaskInstance"
            ],
            "name": "Approve",
            "create": "2021-03-30 19:57:35",
            "cancelled": false,
            "id": 1762656,
            "open": true,
            "signalling": true
        },
        {
            "variables": {
                "requester": "admin",
                "grants": [
                    {
                        "ownersString": "admin ",
                        "comments": "",
                        "roleId": 393447,
                        "userFullName": "Soffid Administrator",
                        "owners": [
                            "admin"
                        ],
                        "userName": "admin",
                        "approved": false,
                        "applicationDescription": "SOFFID Identity Manager",
                        "taskInstance": 1861549,
                        "schemas": [
                            "urn:soffid:com.soffid.iam.addons.bpm.common.RoleRequestInfo"
                        ],
                        "denied": false,
                        "roleDescription": "Accounting Manager",
                        "applicationName": "Operation/Business 2/SOFFID"
                    }
                ],
                "requesterName": "Soffid Administrator"
            },
            "processDefinition": 1946303,
            "description": "Approve pending permissions",
            "pooledActors": [
                "admin"
            ],
            "priority": 3,
            "transitions": [
                "Reject",
                "Approve"
            ],
            "dummyTask": false,
            "processName": "Permissions request",
            "processId": 1861537,
            "blocking": false,
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/TaskInstance/1861549",
                "resourceType": "TaskInstance"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.bpm.api.TaskInstance"
            ],
            "name": "Approve",
            "create": "2021-04-17 21:00:46",
            "cancelled": false,
            "id": 1861549,
            "open": true,
            "signalling": true
        },
      ....................
    ]
}
```

### List by filter

List all TaskInstances with a filter expression.

<p class="callout info">It is allowed to use pagination and sort the information, for more information visit the [Sorting](https://bookstack.soffid.com/link/116#bkmrk-sorting) and [Pagination](https://bookstack.soffid.com/link/116#bkmrk-pagination) information.</p>

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/TaskInstance?count=2&filter=processName eq "Permissions request" and name eq Approve
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 4,
    "startIndex": 1,
    "Resources": [
        {
            "variables": {
                "requester": "admin",
                "grants": [
                    {
                        "ownersString": "admin ",
                        "comments": "",
                        "roleId": 393447,
                        "userFullName": "Soffid Administrator",
                        "owners": [
                            "admin"
                        ],
                        "userName": "admin",
                        "approved": false,
                        "applicationDescription": "SOFFID Identity Manager",
                        "taskInstance": 1861549,
                        "schemas": [
                            "urn:soffid:com.soffid.iam.addons.bpm.common.RoleRequestInfo"
                        ],
                        "denied": false,
                        "roleDescription": "Accounting Manager",
                        "applicationName": "Operation/Business 2/SOFFID"
                    }
                ],
                "requesterName": "Soffid Administrator"
            },
            "processDefinition": 1946303,
            "description": "Approve pending permissions",
            "pooledActors": [
                "admin"
            ],
            "priority": 3,
            "transitions": [
                "Reject",
                "Approve"
            ],
            "dummyTask": false,
            "processName": "Permissions request",
            "processId": 1861537,
            "blocking": false,
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/TaskInstance/1861549",
                "resourceType": "TaskInstance"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.bpm.api.TaskInstance"
            ],
            "name": "Approve",
            "create": "2021-04-17 21:00:46",
            "cancelled": false,
            "id": 1861549,
            "open": true,
            "signalling": true
        },
        {
            "variables": {
                "requester": "admin",
                "grants": [
                    {
                        "ownersString": "admin ",
                        "comments": "",
                        "roleId": 393103,
                        "userFullName": "Soffid Administrator",
                        "owners": [
                            "admin"
                        ],
                        "userName": "admin",
                        "approved": false,
                        "applicationDescription": "Active Directory",
                        "taskInstance": 1638273,
                        "schemas": [
                            "urn:soffid:com.soffid.iam.addons.bpm.common.RoleRequestInfo"
                        ],
                        "denied": false,
                        "roleDescription": "Enterprise Administrators",
                        "applicationName": "Container/Business process/ad"
                    }
                ],
                "requesterName": "Soffid Administrator"
            },
            "processDefinition": 1946303,
            "start": "2021-05-10 12:57:31",
            "description": "Approve pending permissions",
            "pooledActors": [
                "admin"
            ],
            "priority": 3,
            "transitions": [
                "Reject",
                "Approve"
            ],
            "dummyTask": false,
            "actorId": "admin",
            "processName": "Permissions request",
            "processId": 1638261,
            "blocking": false,
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/TaskInstance/1638273",
                "resourceType": "TaskInstance"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.bpm.api.TaskInstance"
            ],
            "name": "Approve",
            "create": "2021-03-11 16:33:41",
            "cancelled": false,
            "id": 1638273,
            "open": true,
            "signalling": true
        },
      ..............
    ]
}
```

### Query by id

Query a TaskInstance by its id (primary key).

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/TaskInstance/1861549
```

##### Response 200 OK

```JSON
{
    "variables": {
        "requester": "admin",
        "grants": [
            {
                "ownersString": "admin ",
                "comments": "",
                "roleId": 393447,
                "userFullName": "Soffid Administrator",
                "owners": [
                    "admin"
                ],
                "userName": "admin",
                "approved": false,
                "applicationDescription": "SOFFID Identity Manager",
                "taskInstance": 1861549,
                "schemas": [
                    "urn:soffid:com.soffid.iam.addons.bpm.common.RoleRequestInfo"
                ],
                "denied": false,
                "roleDescription": "Accounting Manager",
                "applicationName": "Operation/Business 2/SOFFID"
            }
        ],
        "requesterName": "Soffid Administrator"
    },
    "processDefinition": 1946303,
    "description": "Approve pending permissions",
    "pooledActors": [
        "admin"
    ],
    "priority": 3,
    "transitions": [
        "Reject",
        "Approve"
    ],
    "dummyTask": false,
    "processName": "Permissions request",
    "processId": 1861537,
    "blocking": false,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/TaskInstance/1861549",
        "resourceType": "TaskInstance"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.bpm.api.TaskInstance"
    ],
    "name": "Approve",
    "create": "2021-04-17 21:00:46",
    "cancelled": false,
    "id": 1861549,
    "open": true,
    "signalling": true
}
```

### Create

This operation is not allowed.

### Update partial

Only attributes with changes will be updated, the other will mantain the same value.

##### Request

```XML
PATCH https://<your-domain>/soffid/webservice/scim2/v1/TaskInstance/1762656
```

**JSON**

```JSON
{
    "Operations": [
        {
            "op": "replace",
            "path": "blocking",
            "value": true
        }
    ]
}
```

##### Response 200 OK

```JSON
{
    "variables": {
        "requester": "admin",
        "grants": [
            {
                "ownersString": "SOFFID_ADMIN ",
                "comments": "",
                "roleId": 393447,
                "userFullName": "Soffid Administrator",
                "owners": [
                    "SOFFID_ADMIN"
                ],
                "userName": "admin",
                "approved": false,
                "applicationDescription": "SOFFID Identity Manager",
                "taskInstance": 1762656,
                "schemas": [
                    "urn:soffid:com.soffid.iam.addons.bpm.common.RoleRequestInfo"
                ],
                "denied": false,
                "roleDescription": "Accounting Manager",
                "applicationName": "Container/Business 2/SOFFID"
            }
        ],
        "requesterName": "Soffid Administrator"
    },
    "processDefinition": 1762352,
    "description": "Approve ",
    "pooledActors": [
        "SOFFID_ADMIN"
    ],
    "priority": 3,
    "transitions": [
        "Rechazar",
        "Aceptar"
    ],
    "dummyTask": false,
    "processName": "Modificar permisos",
    "processId": 1762544,
    "blocking": true,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/TaskInstance/1762656",
        "resourceType": "TaskInstance"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.bpm.api.TaskInstance"
    ],
    "name": "Approve",
    "create": "2021-03-30 19:57:35",
    "cancelled": false,
    "id": 1762656,
    "open": true,
    "signalling": true
}
```

### Update all

This operation replaces all values in the GroupUser.

- Note that the attribute id is required to confirm that the resource "...TaskInstance/&lt;id&gt;" is the same that the JSON TaskInstance.
- Note that all the attributes not included in the request will be cleared in the TaskInstance type and their data will be lost.
- Note that not all the attributes are updatable, for example tag meta, avoid these tags. For more information visit [Resource data model page](https://bookstack.soffid.com/books/scim/chapter/resource-data-model-schema)

##### Request

```XML
PUT https://<your-domain>/webservice/scim2/v1/TaskInstance/1762656
```

**JSON**

```JSON
{
    "variables": {
        "requester": "admin",
        "grants": [
            {
                "ownersString": "SOFFID_ADMIN ",
                "comments": "",
                "roleId": 393447,
                "userFullName": "Soffid Administrator",
                "owners": [
                    "SOFFID_ADMIN"
                ],
                "userName": "admin",
                "approved": false,
                "applicationDescription": "SOFFID Identity Manager",
                "taskInstance": 1762656,
                "schemas": [
                    "urn:soffid:com.soffid.iam.addons.bpm.common.RoleRequestInfo"
                ],
                "denied": false,
                "roleDescription": "Accounting Manager",
                "applicationName": "Container/Business 2/SOFFID"
            }
        ],
        "requesterName": "Soffid Administrator"
    },
    "processDefinition": 1762352,
    "description": "Approve ",
    "pooledActors": [
        "SOFFID_ADMIN"
    ],
    "priority": 3,
    "transitions": [
        "Rechazar",
        "Aceptar"
    ],
    "dummyTask": false,
    "processName": "Modificar permisos",
    "processId": 1762544,
    "blocking": true,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/TaskInstance/1762656",
        "resourceType": "TaskInstance"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.bpm.api.TaskInstance"
    ],
    "name": "Approve",
    "create": "2021-03-30 19:57:35",
    "cancelled": false,
    "id": 1762656,
    "open": true,
    "signalling": true
}
```

##### Response 200 OK

```JSON
{
    "variables": {
        "requester": "admin",
        "grants": [
            {
                "ownersString": "SOFFID_ADMIN ",
                "comments": "",
                "roleId": 393447,
                "userFullName": "Soffid Administrator",
                "owners": [
                    "SOFFID_ADMIN"
                ],
                "userName": "admin",
                "approved": false,
                "applicationDescription": "SOFFID Identity Manager",
                "taskInstance": 1762656,
                "schemas": [
                    "urn:soffid:com.soffid.iam.addons.bpm.common.RoleRequestInfo"
                ],
                "denied": false,
                "roleDescription": "Accounting Manager",
                "applicationName": "Container/Business 2/SOFFID"
            }
        ],
        "requesterName": "Soffid Administrator"
    },
    "processDefinition": 1762352,
    "description": "Approve ",
    "pooledActors": [
        "SOFFID_ADMIN"
    ],
    "priority": 3,
    "transitions": [
        "Rechazar",
        "Aceptar"
    ],
    "dummyTask": false,
    "processName": "Modificar permisos",
    "processId": 1762544,
    "blocking": true,
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/TaskInstance/1762656",
        "resourceType": "TaskInstance"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.bpm.api.TaskInstance"
    ],
    "name": "Approve",
    "create": "2021-03-30 19:57:35",
    "cancelled": false,
    "id": 1762656,
    "open": true,
    "signalling": true
}
```

### Delete

In this case, delete operation will cancel the TaskInstace, but does not be deleted form database.

<p class="callout warning">Please note after this delete, the account has to be created again to use it in the next examples.</p>

##### Request

```MarkDown
DELETE - https://<your-domain>/soffid/webservice/scim2/v1/TaskInstance/1762656
```

##### Response 204 No Content

```
204 No Content
```

### Error response

<p class="callout info">For more information about error response visit [https://bookstack.soffid.com/link/116#bkmrk-error-response](https://bookstack.soffid.com/link/116#bkmrk-error-response)</p>

# SCIM Issue examples

## Operations

This page shows the operations that can be performed for the issue object.

### List all

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Issue
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 4,
    "startIndex": 1,
    "Resources": [
        {
            "performedActions": "2023-06-09 07:17:25 admin Created\n2023-06-09 09:46:54 admin Acknowledged\n",
            "acknowledged": "2023-06-09 09:46:54",
            "created": "2023-06-09 07:17:25",
            "hosts": [],
            "meta": {
                "location": "http://soffid.35x.lab:8089/soffid/webservice/scim2/v1/Issue/44656",
                "resourceType": "Issue"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.rc.api.Issue"
            ],
            "description": "Duplicated user bob bobm",
            "id": 44656,
            "type": "duplicated-user",
            "users": [
                {
                    "schemas": [
                        "urn:soffid:com.soffid.iam.api.IssueUser"
                    ],
                    "userName": "bob",
                    "userId": 3941
                },
                {
                    "schemas": [
                        "urn:soffid:com.soffid.iam.api.IssueUser"
                    ],
                    "userName": "bobm",
                    "userId": 3971
                }
            ],
            "status": "A"
        },
        {
            "acknowledged": "2023-06-09 08:55:49",
            "created": "2023-06-09 07:29:25",
            "hosts": [],
            "description": "Account etaylor@soffid has been locked",
            "solved": "2023-06-09 08:56:09",
            "type": "locked-account",
            "users": [
                {
                    "schemas": [
                        "urn:soffid:com.soffid.iam.rc.api.IssueUser"
                    ],
                    "userName": "etaylor",
                    "userId": 3821
                }
            ],
            "performedActions": "2023-06-09 07:29:25 $$INTERNAL$$ Created\n2023-06-09 08:49:49 admin User etaylor is disabled\n2023-06-09 08:55:09 admin The account etaylor has been locked\n2023-06-09 08:55:41 admin Notify pgarcia@soffid.com\n2023-06-09 08:55:49 admin Acknowledged\n2023-06-09 08:55:53 admin The account etaylor has been unlocked\n2023-06-09 08:56:09 admin Solved\n",
            "meta": {
                "location": "http://soffid.35x.lab:8089/soffid/webservice/scim2/v1/Issue/44672",
                "resourceType": "Issue"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.api.Issue"
            ],
            "id": 44672,
            "account": {
                "lastLogin": "2023-06-09 07:28:11",
                "grantedRoles": [],
                "description": "Elizabeth Taylor",
                "type": "U",
                "lastUpdated": "2023-06-09 08:56:07",
                "ownerGroups": [],
                "loginName": "etaylor",
                "inheritNewPermissions": false,
                "disabled": false,
                "id": 4994,
                "managerGroups": [],
                "grantedGroups": [],
                "lastPasswordSet": "2023-06-09 07:28:14",
                "passwordExpiration": "2024-06-08 07:28:14",
                "passwordPolicy": "I",
                "accessLevel": "-",
                "managerRoles": [],
                "created": "2023-06-02 09:14:36",
                "hasSnapshot": false,
                "system": "soffid",
                "ownerRoles": [],
                "meta": {
                    "location": "http://soffid.35x.lab:8089/soffid/webservice/scim2/v1/Account/4994",
                    "resourceType": "Account"
                },
                "schemas": [
                    "urn:soffid:com.soffid.iam.api.Account"
                ],
                "name": "etaylor",
                "managerUsers": [],
                "lastChange": "2023-06-09 08:55:53",
                "attributes": {},
                "status": "a",
                "ownerUsers": [
                    "etaylor"
                ],
                "grantedUsers": []
            },
            "status": "S"
        },
        {
            "performedActions": "2023-06-14 06:56:42 admin Created\n",
            "created": "2023-06-14 06:56:42",
            "hosts": [],
            "meta": {
                "location": "http://soffid.35x.lab:8089/soffid/webservice/scim2/v1/Issue/56710",
                "resourceType": "Issue"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.api.Issue"
            ],
            "description": "Duplicated user cdarwin cmartin etaylor",
            "id": 56710,
            "type": "duplicated-user",
            "users": [
                {
                    "schemas": [
                        "urn:soffid:com.soffid.iam.api.IssueUser"
                    ],
                    "userName": "cdarwin",
                    "userId": 4037
                },
                {
                    "schemas": [
                        "urn:soffid:com.soffid.iam.api.IssueUser"
                    ],
                    "userName": "cmartin",
                    "userId": 3890
                },
                {
                    "schemas": [
                        "urn:soffid:com.soffid.iam.api.IssueUser"
                    ],
                    "userName": "etaylor",
                    "userId": 3821
                }
            ],
            "status": "N"
        },
        {
            "performedActions": "2023-06-14 07:02:55 admin Created\n",
            "created": "2023-06-14 07:02:55",
            "hosts": [],
            "meta": {
                "location": "http://soffid.35x.lab:8089/soffid/webservice/scim2/v1/Issue/56728",
                "resourceType": "Issue"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.api.Issue"
            ],
            "description": "Duplicated user cdarwin cmartin etaylor",
            "id": 56728,
            "type": "duplicated-user",
            "users": [
                {
                    "schemas": [
                        "urn:soffid:com.soffid.iam.api.IssueUser"
                    ],
                    "userName": "cdarwin",
                    "userId": 4037
                },
                {
                    "schemas": [
                        "urn:soffid:com.soffid.iam.api.IssueUser"
                    ],
                    "userName": "cmartin",
                    "userId": 3890
                },
                {
                    "schemas": [
                        "urn:soffid:com.soffid.iam.api.IssueUser"
                    ],
                    "userName": "etaylor",
                    "userId": 3821
                }
            ],
            "status": "N"
        }
    ]
}
```

### List by filter

List all Issues with a filter expression.

<p class="callout info">It is allowed to use pagination and sort the information, for more information visit the [Sorting](https://bookstack.soffid.com/link/116#bkmrk-sorting) and [Pagination](https://bookstack.soffid.com/link/116#bkmrk-pagination) information.</p>

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Issue?filter=type co "locked"
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 1,
    "startIndex": 1,
    "Resources": [
        {
            "acknowledged": "2023-06-09 08:55:49",
            "created": "2023-06-09 07:29:25",
            "hosts": [],
            "description": "Account etaylor@soffid has been locked",
            "solved": "2023-06-09 08:56:09",
            "type": "locked-account",
            "users": [
                {
                    "schemas": [
                        "urn:soffid:com.soffid.iam.rc.api.IssueUser"
                    ],
                    "userName": "etaylor",
                    "userId": 3821
                }
            ],
            "performedActions": "2023-06-09 07:29:25 $$INTERNAL$$ Created\n2023-06-09 08:49:49 admin User etaylor is disabled\n2023-06-09 08:55:09 admin The account etaylor has been locked\n2023-06-09 08:55:41 admin Notify pgarcia@soffid.com\n2023-06-09 08:55:49 admin Acknowledged\n2023-06-09 08:55:53 admin The account etaylor has been unlocked\n2023-06-09 08:56:09 admin Solved\n",
            "meta": {
                "location": "http://soffid.35x.lab:8089/soffid/webservice/scim2/v1/Issue/44672",
                "resourceType": "Issue"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.api.Issue"
            ],
            "id": 44672,
            "account": {
                "lastLogin": "2023-06-09 07:28:11",
                "grantedRoles": [],
                "description": "Elizabeth Taylor",
                "type": "U",
                "lastUpdated": "2023-06-09 08:56:07",
                "ownerGroups": [],
                "loginName": "etaylor",
                "inheritNewPermissions": false,
                "disabled": false,
                "id": 4994,
                "managerGroups": [],
                "grantedGroups": [],
                "lastPasswordSet": "2023-06-09 07:28:14",
                "passwordExpiration": "2024-06-08 07:28:14",
                "passwordPolicy": "I",
                "accessLevel": "-",
                "managerRoles": [],
                "created": "2023-06-02 09:14:36",
                "hasSnapshot": false,
                "system": "soffid",
                "ownerRoles": [],
                "meta": {
                    "location": "http://soffid.35x.lab:8089/soffid/webservice/scim2/v1/Account/4994",
                    "resourceType": "Account"
                },
                "schemas": [
                    "urn:soffid:com.soffid.iam.rc.api.Account"
                ],
                "name": "etaylor",
                "managerUsers": [],
                "lastChange": "2023-06-09 08:55:53",
                "attributes": {},
                "status": "a",
                "ownerUsers": [
                    "etaylor"
                ],
                "grantedUsers": []
            },
            "status": "S"
        }
    ]
}
```

### Query by id

Query an Issue by its id (primary key).

##### Request

```MarkDown
GET https://<your-domain>/soffid/webservice/scim2/v1/Issue/44656
```

##### Response 200 OK

```JSON
{
    "performedActions": "2023-06-09 07:17:25 admin Created\n2023-06-09 09:46:54 admin Acknowledged\n",
    "acknowledged": "2023-06-09 09:46:54",
    "created": "2023-06-09 07:17:25",
    "hosts": [],
    "meta": {
        "location": "http://soffid.35x.lab:8089/soffid/webservice/scim2/v1/Issue/44656",
        "resourceType": "Issue"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.api.rc.Issue"
    ],
    "description": "Duplicated user bob bobm",
    "id": 44656,
    "type": "duplicated-user",
    "users": [
        {
            "schemas": [
                "urn:soffid:com.soffid.iam.rc.api.IssueUser"
            ],
            "userName": "bob",
            "userId": 3941
        },
        {
            "schemas": [
                "urn:soffid:com.soffid.iam.rc.api.IssueUser"
            ],
            "userName": "bobm",
            "userId": 3971
        }
    ],
    "status": "A"
}
```

### Create

#### Request

```XML
POST https://<your-domain>/soffid/webservice/scim2/v1/Issue
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.rc.api.Issue"
    ],
    "type" : "duplicated-user",
    "status" : "N",
    "created" : "2023-06-19 15:30:00",
    "users" : [{
                "schemas": [
                    "urn:soffid:com.soffid.iam.rc.api.IssueUser"
                ],
                "userName": "david.gomez",
                "userId": 4630
            },
            {
                "schemas": [
                    "urn:soffid:com.soffid.iam.rc.api.IssueUser"
                ],
                "userName": "pepe.garcia",
                "userId": 4640
            }]
}
```

##### Response 201 Created

```JSON
{
  "requester": "admin@soffid",
  "updatedBy": "admin",
  "acknowledged": "2026-03-06 13:26:17",
  "hosts": [],
  "created": "2026-03-06 13:26:17.013",
  "ip": "172.19.0.1",
  "description": "Duplicated user david.gomez pepe.garcia",
  "updatedOn": "2026-03-06 13:26:17.018",
  "type": "duplicated-user",
  "browsers": [],
  "users": [
    {
      "schemas": [
        "urn:soffid:com.soffid.iam.rc.api.IssueUser"
      ],
      "action": "K",
      "userName": "david.gomez",
      "userId": 4630
    },
    {
      "schemas": [
        "urn:soffid:com.soffid.iam.rc.api.IssueUser"
      ],
      "action": "K",
      "userName": "pepe.garcia",
      "userId": 4640
    }
  ],
  "actor": "SOFFID_ADMIN@soffid",
  "number": 1,
  "performedActions": "2026-03-06 13:26:17 admin Created\n",
  "times": 1,
  "meta": {
    "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/Issue/24589",
    "resourceType": "Issue"
  },
  "schemas": [
    "urn:soffid:com.soffid.iam.rc.api.Issue"
  ],
  "id": 24589,
  "status": "N"
}
```

### Update partial

Only attributes with changes will be updated, the others will maintain the same value.

##### Request

```XML
PATCH https://<your-domain>/soffid/webservice/scim2/v1/Issue/169336
```

**JSON**

```JSON
{
    "Operations": [
        {
            "op": "replace",
            "path": "status",
            "value": "A"
        }
    ]
}
```

##### Response 200 OK

```JSON
{
    "performedActions": "2023-06-21 08:54:04 admin Created\n2023-06-21 08:58:59 admin Acknowledged\n",
    "acknowledged": "2023-06-21 08:58:59.605",
    "created": "2023-06-21 08:54:04",
    "hosts": [],
    "meta": {
        "location": "http://soffid.35x.lab:8089/soffid/webservice/scim2/v1/Issue/169336",
        "resourceType": "Issue"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.rc.api.Issue"
    ],
    "description": "Duplicated user bobm bob",
    "id": 169336,
    "type": "duplicated-user",
    "users": [
        {
            "schemas": [
                "urn:soffid:com.soffid.iam.rc.api.IssueUser"
            ],
            "userName": "bobm",
            "userId": 3971
        },
        {
            "schemas": [
                "urn:soffid:com.soffid.iam.rc.api.IssueUser"
            ],
            "userName": "bob",
            "userId": 3941
        }
    ],
    "status": "A"
}
```

### Update all

This operation replaces all values in the Issues.

- Note that the attribute id is required to confirm that the resource "...Issue/&lt;id&gt;" is the same that the JSON Issue.
- Note that all the attributes not included in the request will be cleared in the Issue type and their data will be lost.
- Note that not all the attributes are updatable, for example, tag meta, avoid these tags. For more information visit [Resource data model page](https://bookstack.soffid.com/books/scim/chapter/resource-data-model-schema)

##### Request

```XML
PUT https://<your-domain>/soffid/webservice/scim2/v1/Issue/169336
```

**JSON**

```JSON
{
    "schemas": [
        "urn:soffid:com.soffid.iam.bpm.api.rc.Issue"
    ],
    "requester": "ckelp",
    "type": "ANOMALY",
    "description": "Suspicious login activity detected",
    "times": 1,
    "status": "A",
    "system": "soffid",
    "ip": "192.168.1.100",
    "country": "ES",
    "account": "ckelp",
    "loginName": "ckelp",
    "htmlDescription": "<p>Suspicious login activity detected</p>",
    "actor": "ckelp",
    "users": [],
    "hosts": [],
    "browsers": []
}
```

##### Response 200 OK

```JSON
{
  "requester": "admin@soffid",
  "updatedBy": "admin",
  "acknowledged": "2026-03-06 13:36:04.859",
  "hosts": [],
  "created": "2026-03-06 13:26:17",
  "ip": "172.19.0.1",
  "description": "Duplicated user david.gomez pepe.garcia",
  "updatedOn": "2026-03-06 13:36:04.859",
  "type": "duplicated-user",
  "browsers": [],
  "users": [
    {
      "schemas": [
        "urn:soffid:com.soffid.iam.rc.api.IssueUser"
      ],
      "action": "K",
      "userName": "david.gomez",
      "userId": 4630
    },
    {
      "schemas": [
        "urn:soffid:com.soffid.iam.rc.api.IssueUser"
      ],
      "action": "K",
      "userName": "pepe.garcia",
      "userId": 4640
    }
  ],
  "actor": "SOFFID_ADMIN@soffid",
  "number": 1,
  "performedActions": "2026-03-06 13:26:17 admin Created\n2026-03-06 13:36:04 admin Acknowledged\n",
  "times": 1,
  "meta": {
    "location": "https://console.soffid4.local:8443/soffid/webservice/scim2/v1/Issue/24589",
    "resourceType": "Issue"
  },
  "schemas": [
    "urn:soffid:com.soffid.iam.rc.api.Issue"
  ],
  "id": 24589,
  "status": "A"
}
```

### Delete

This operation is not allowed.

### Error response

<p class="callout info">For more information about error response visit [https://bookstack.soffid.com/link/116#bkmrk-error-response](https://bookstack.soffid.com/link/116#bkmrk-error-response)</p>

# SCIM for OTP devices

SCIM for OTP devices

# ⏰ Getting Started

## Introduction

<p class="callout info">Soffid allows you to combine two of the most powerful addons you can use into Soffid Console, **SCIM,** and **OTP**. </p>

Please note that the SCIM REST Web Service Add-on installed must be installed, please check this part in [How to use SCIM in Soffid # Installation](https://bookstack.soffid.com/link/120#bkmrk-installation)

Please note that a user with the authentication is required, please check this part in [How to use SCIM in Soffid # Confirm authorization](https://bookstack.soffid.com/link/120#bkmrk-confirm-authorizatio)

Please note that is recommended to use a REST client, please see our example in [Testing tool # RESTer](https://bookstack.soffid.com/link/118#bkmrk-rester)

Please note that the correct header parameters must be used, please browse them in [SCIM in Soffid # HTTP request](https://bookstack.soffid.com/link/114#bkmrk-http-request)

Please note that the OTP addon must be installed and configured, check it in [OTP Settings](https://bookstack.soffid.com/books/two-factor-authentication-2fa-VsJ/page/otp-settings)

### OTP Device Types

OTP device types available

- **TOTP**: Time based HMAC Token
- **HOTP**: Event based HMAC Token
- **EMAIL**
- **SMS**
- **PIN**: Security PIN

### OTP Device Status

OTP device status available :

- C: **Created**
- V: **Validated**
- L: **Locked**
- D: **Disabled**

### OTP Operations

Soffid provides an API that allows you to connect to the OTP microservices.

The available operations are the following

- List all
- List by filter
- Query by id
- Create
- Update
- Validate
- Send SMS
- Delete

<p class="callout info">You can visit the [SCIM OTP devices examples page](https://bookstack.soffid.com/books/scim/page/scim-otp-devices-examples) for more detailed information</p>

#### Workflows

With the previous operations, using the SCIM OTP API, we can define some workflows.

<p class="callout info">You can visit the [SCIM OTP devices Workflows examples page](https://bookstack.soffid.com/books/scim/page/scim-otp-devices-workflows-examples)</p>

# SCIM OTP devices examples

## Operations

This page shows the operations that can be performed for the OTP devices object.

### List all

##### Request

```MarkDown
GET http://<your-domain>/soffid/webservice/scim2/v1/OtpDevice
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 25,
    "startIndex": 1,
    "Resources": [
        {
            "lastUsed": "2021-10-14 06:57:00",
            "created": "2021-10-14 06:44:43",
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/4022880",
                "links": {
                    "requestChallenge": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/4022880/requestChallenge",
                    "responseChallenge": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/4022880/responseChallenge"
                },
                "resourceType": "OtpDevice"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.addons.otp.common.OtpDevice"
            ],
            "name": "TOTP00000001",
            "id": 4022880,
            "type": "TOTP",
            "user": "franck",
            "fails": 0,
            "status": "D"
        },
        {
            "created": "2021-10-14 08:37:38",
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/4024384",
                "links": {
                    "requestChallenge": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/4024384/requestChallenge",
                    "responseChallenge": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/4024384/responseChallenge"
                },
                "resourceType": "OtpDevice"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.addons.otp.common.OtpDevice"
            ],
            "name": "Email message to pg*****@so****.co*",
            "id": 4024384,
            "type": "EMAIL",
            "user": "patricia",
            "fails": 0,
            "email": "patricia@soffid.com",
            "status": "D"
        },
        {
            "created": "2021-10-14 11:17:52",
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/4024416",
                "links": {
                    "requestChallenge": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/4024416/requestChallenge",
                    "responseChallenge": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/4024416/responseChallenge"
                },
                "resourceType": "OtpDevice"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.addons.otp.common.OtpDevice"
            ],
            "phone": "666555444",
            "name": "SMS message to 66*****44",
            "id": 4024416,
            "type": "SMS",
            "user": "agatha",
            "fails": 0,
            "status": "V"
        },
      .............
      .............
    ]
}
```

### List by filter

List all the OTP devices with a filter expression.

<p class="callout info">It is allowed to use pagination and sort the information, for more information visit the [Sorting](https://bookstack.soffid.com/link/116#bkmrk-sorting) and [Pagination](https://bookstack.soffid.com/link/116#bkmrk-pagination) information.</p>

##### Request

```MarkDown
GET http://<your-domain>/soffid/webservice/scim2/v1/OtpDevice?filter=type eq "TOTP"
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 7,
    "startIndex": 1,
    "Resources": [
        {
            "lastUsed": "2021-10-14 06:57:00",
            "created": "2021-10-14 06:44:43",
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/4022880",
                "links": {
                    "requestChallenge": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/4022880/requestChallenge",
                    "responseChallenge": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/4022880/responseChallenge"
                },
                "resourceType": "OtpDevice"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.addons.otp.common.OtpDevice"
            ],
            "name": "TOTP00000001",
            "id": 4022880,
            "type": "TOTP",
            "user": "franck",
            "fails": 0,
            "status": "D"
        },
      .............
      .............
    ]
}
```

### Query by id

Query a OTP device by its id (primary key).

##### Request

```MarkDown
GET http://<your-domain>/soffid/webservice/scim2/v1/OtpDevice/5007882
```

##### Response 200 OK

```JSON
{
    "created": "2022-02-22 07:46:51",
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/5007882",
        "links": {
            "requestChallenge": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/5007882/requestChallenge",
            "responseChallenge": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/5007882/responseChallenge"
        },
        "resourceType": "OtpDevice"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.addons.otp.common.OtpDevice"
    ],
    "name": "TOTP00000035",
    "id": 5007882,
    "type": "TOTP",
    "user": "admin",
    "fails": 0,
    "status": "C"
}
```

### Create

Allows you to create a new OTP device. It is important the type of the OTP you want to create, and depending on this, it will be mandatory to add new attributes to the request.

- **SMS**: add to the JSON the phone attribute
- **EMAIL**: add to the JSON the email attribute
- **PIN**: add to the JSON the pin attribute

##### Request

```XML
http://<your-domain>/soffid/webservice/scim2/v1/OtpDevice
```

**JSON**

```XML
{
    "meta": {
        "location": "http://<your-domain>/webservice/scim2/v1/OtpDevice",
        "resourceType": "OtpDevice"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.addons.otp.common.OtpDevice"
    ],
    "type": "TOTP",
    "user": "admin"
}
```

##### Response 200 OK

```JSON
{
    "image": "iVBORw0KGgoAAAANSUhEUgAAAMgAAADIAQAAAACFI5MzAAAC3klEQVR4Xu2XP66jMBDGB7lwFy5gydeg40rkAoRcgFzJna+B5AtA58Ji9hueQvJWu8UbS6stMoqiwA9lrPn7Qfw3o99vnPYhHyL2L0mghhOz2Xue+tJGIltBIm9haQPdgufsButxp4LQlc1M+C5tSLt1TSWJyy26Jvipd2NfTTJPHU/kmlxariS8RX6w2fhwwt+i82OC/ER3fX2+Ze7HBJbp0iGieCQh54dpSaCBaOz8SmbukfY0C1STJAHIZkdQe947d6khkYau3KKZrNktzs77MwYawoTCuTFqEDytHY1PPxqSEQPPwY3WoOeu0WzPbGtIoNH6tTdzt1BX2ky3w7mSZAnkA95sQge3eRmfMdAQhh8pwLFL94ACR/9VkOzvbB5oX0LnuaEz9xoS/YORcNROGY7jn/nREE5bwCRwFwtveOQtBgoSJc9rnzggOWm27nUCBcnws1wI3OPgeOpVVQqCkdynqU+rLWQx+fwxEtTEEZXBLoO4KjcpzAqScZWQbczRNphZOq+CBHcNkuQmSs+hm4enHw1hXBWM9o39PS4XW161oyBhIZt2MishP/imy3kCDUEAyo3LpZe2m/BUDYlmtdjbUoDYtIQNyRUkLPj7jdNE5g4hIKVUQWK5BszRQh3PWBf0pncUJCAhRjJDGPZokbdtpiCMooYHs8rZ4WehKuIhnZqM0YIKSo+czsmnIRFKpxyyArfd8FY7GoKRzISg7gSInqsj2UwdYVZh+c+9jATMZj2J0rUi7ix0YsFsFt9qIrtR5PA9o10wYPx0nlpDjJRhD4Xi0MoP6NnTj4KEQ4WJFvNbXlDWZ+1oCCwujWhYg7S3sVQR0bDUYj3GI+3xpa81BPoah+3T/UvDygqqIShDNxIq2q8dftD7W4GGRLyBYT0ujdRRedOwOgKRgvMiS446z2JqwjKfMJUJextCm87dqCHIj+xGj0WxMbT/8v7G8mPyZ/uQDxH7n8kvJ2XgRr9Rxi0AAAAASUVORK5CYII=",
    "created": "2022-02-22 07:46:51",
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/5007882",
        "resourceType": "OtpDevice"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.addons.otp.common.OtpDevice"
    ],
    "name": "TOTP00000035",
    "id": 5007882,
    "type": "TOTP",
    "user": "admin",
    "fails": 0,
    "status": "C"
}
```

##### Example JSON SMS

```JSON
{
    "type": "SMS",
    "user": "dilbert",
    "phone": "6665552222"
}
```

##### Example JSON EMAIL

```JSON
{
    "type": "EMAIL",
    "user": "dilbert",
    "email": "dilbert@soffid.com"
}
```

##### Example JSON PIN

```JSON
{
    "type": "PIN",
    "user": "dilbert",
    "email": "123456789"
}
```

### Update partial

Only attributes with changes will be updated, the other will mantain the same value. This example shows how to enable an OTP device.

##### Request

```XML
PATCH http://<your-domain>/soffid/webservice/scim2/v1/OtpDevice/5007882
```

**JSON**

```JSON
{
    "Operations": 
    [
        {
            "op": "replace",
            "path": "status",
            "value": "V"
        }
    ]
}
```

##### Response 200 OK

```JSON
{
    "created": "2022-02-22 07:46:51",
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/5007882",
        "links": {
            "requestChallenge": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/5007882/requestChallenge",
            "responseChallenge": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/5007882/responseChallenge"
        },
        "resourceType": "OtpDevice"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.addons.otp.common.OtpDevice"
    ],
    "name": "TOTP00000035",
    "id": 5007882,
    "type": "TOTP",
    "user": "admin",
    "fails": 0,
    "status": "V"
}
```

### Request Challenge

This operation allows Soffid to obtain the PIN code for a specific OTP device. We can use this method to send an email or SMS, depending on the type of OTP device.

##### Request

```XML
GET http://<your-domain>//soffid/webservice/scim2/v1/OtpDevice/<OTP_ID>/requestChallenge
```

##### Response 200 OK

```JSON
{
    "cell": "PIN",
    "cardNumber": "SMS message to 66*****22"
}
```


### Response Challenge

This operation allows you to validate a PIN code for a specific OTP device.


##### Request

```XML
POST http://<your-domain>//soffid/webservice/scim2/v1/OtpDevice/<OTP_ID>/responseChallenge
```

**JSON**

```JSON
{
    "pin": "12345678"
}
```

##### Response 200 OK

```JSON
{
    "success": false,
    "locked": false
}
```

### Delete

In this case, delete operation will cancel the TaskInstace, but does not be deleted form database.

<p class="callout warning">Please note after this delete, the account has to be created again to use it in the next examples.</p>

##### Request

```MarkDown
DELETE - http://<your-domain>/soffid/webservice/scim2/v1/OtpDevice/5007967
```

##### Response 204 No Content

```
204 No Content
```

### Error response

<p class="callout info">For more information about error response visit [https://bookstack.soffid.com/link/116#bkmrk-error-response](https://bookstack.soffid.com/link/116#bkmrk-error-response)</p>

# SCIM OTP devices Workflows examples

## Workflow Examples

### Workflow 1

#### 1. Create Email OTP device

##### Request

```XML
GET http://<your-domain>/soffid/webservice/scim2/v1/OtpDevice
```

**JSON**

```JSON
{
    "type": "EMAIL",
    "user": "dilbert",
    "email": "dilbert@soffid.com"
}
```

##### Response 200 OK

```JSON
{
    "created": "2022-03-09 13:39:52",
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/5099461",
        "resourceType": "OtpDevice"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.addons.otp.common.OtpDevice"
    ],
    "name": "Email message to di*****@so****.co*",
    "id": 5099461,
    "type": "EMAIL",
    "user": "dilbert",
    "fails": 0,
    "email": "dilbert@soffid.com",
    "status": "C"
}
```

#### 2. RequestChallenge to get the PIN code

##### Request

```XML
GET http://<your-domain>/soffid/webservice/scim2/v1/OtpDevice/5099461/requestChallenge
```

##### Response 200 OK

```JSON
{
    "cell": "PIN",
    "cardNumber": "Email message to di*****@so****.co*"
}
```

#### 3. ResponseChallenge to validate the PIN code

##### Request

```XML
POST http://<your-domain>/soffid/webservice/scim2/v1/OtpDevice/5099461/responseChallenge
```

**JSON**

```Java
{
    "pin": "839231"
}
```

##### Response 200 OK

```JSON
{
    "success": true,
    "locked": false
}
```

#### 4. Enable OTP device

##### Request

```XML
PATCH http://<your-domain>/soffid/webservice/scim2/v1/OtpDevice/5099461
```

**JSON**

```JSON
{
    "Operations": 
    [
        {
            "op": "replace",
            "path": "status",
            "value": "V"
        }
    ]
}
```

##### Response

```JSON
{
    "created": "2022-03-09 13:39:52",
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/5099461",
        "links": {
            "requestChallenge": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/5099461/requestChallenge",
            "responseChallenge": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/5099461/responseChallenge"
        },
        "resourceType": "OtpDevice"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.addons.otp.common.OtpDevice"
    ],
    "name": "Email message to di*****@so****.co*",
    "id": 5099461,
    "type": "EMAIL",
    "user": "dilbert",
    "fails": 0,
    "email": "dilbert@soffid.com",
    "status": "V"
}
```

### Workflow 2

#### 1. Get TOTP devices

Obtain all unused OTP devices by 2022.

##### Request 

```MarkDown
GET http://<your-domain>/soffid/webservice/scim2/v1/OtpDevice?filter=lastUsed le "2022-01-01"
```

##### Response 200 Ok

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 5,
    "startIndex": 1,
    "Resources": [
        {
            "lastUsed": "2021-10-14 06:57:00",
            "created": "2021-10-14 06:44:43",
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/4022880",
                "links": {
                    "requestChallenge": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/4022880/requestChallenge",
                    "responseChallenge": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/4022880/responseChallenge"
                },
                "resourceType": "OtpDevice"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.addons.otp.common.OtpDevice"
            ],
            "name": "TOTP00000001",
            "id": 4022880,
            "type": "TOTP",
            "user": "admin",
            "fails": 0,
            "status": "E"
        },
        {
            "lastUsed": "2021-10-14 06:59:33",
            "created": "2021-10-14 06:58:05",
            "meta": {
                "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/4022891",
                "links": {
                    "requestChallenge": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/4022891/requestChallenge",
                    "responseChallenge": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/4022891/responseChallenge"
                },
                "resourceType": "OtpDevice"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.addons.otp.common.OtpDevice"
            ],
            "name": "TOTP00000002",
            "id": 4022891,
            "type": "TOTP",
            "user": "ckelp",
            "fails": 0,
            "status": "C"
        },
        .....
    ]
}
```

#### 2. Disable OTP device

Disble the OTP devices one by one

##### Request

```MarkDown
PATCH http://<your-domain>/soffid/webservice/scim2/v1/OtpDevice/4022880
```

**JSON**

```JSON
{
    "Operations": 
    [
        {
            "op": "replace",
            "path": "status",
            "value": "D"
        }
    ]
}
```

##### Response 200 Ok

```JSON
{
    "lastUsed": "2021-10-14 06:57:00",
    "created": "2021-10-14 06:44:43",
    "meta": {
        "location": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/4022880",
        "links": {
            "requestChallenge": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/4022880/requestChallenge",
            "responseChallenge": "http://soffid.pat.lab:8080/soffid/webservice/scim2/v1/OtpDevice/4022880/responseChallenge"
        },
        "resourceType": "OtpDevice"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.addons.otp.common.OtpDevice"
    ],
    "name": "TOTP00000001",
    "id": 4022880,
    "type": "TOTP",
    "user": "admin",
    "fails": 0,
    "status": "D"
}
```

##

# SCIM for Federation

SCIM for Service Providers

# ⏰ Getting Started

## Introduction

<p class="callout info">Soffid allows you to combine two of the most powerful addons you can use into Soffid Console, **SCIM,** and **Federation**. </p>

Please note that the SCIM REST Web Service Add-on installed must be installed, please check this part in [How to use SCIM in Soffid # Installation](https://bookstack.soffid.com/link/120#bkmrk-installation)

Please note that a user with the authentication is required, please check this part in [How to use SCIM in Soffid # Confirm authorization](https://bookstack.soffid.com/link/120#bkmrk-confirm-authorizatio)

Please note that it is recommended to use a REST client, please see our example in [Testing tool # RESTer](https://bookstack.soffid.com/link/118#bkmrk-rester)

Please note that the correct header parameters must be used, please browse them in [SCIM in Soffid # HTTP request](https://bookstack.soffid.com/link/114#bkmrk-http-request)

Please note that the Federation addon must be installed and configured, check it in [the Federation book](https://bookstack.soffid.com/books/federation)[.](https://bookstack.soffid.com/books/two-factor-authentication-2fa-VsJ/page/otp-settings)

### Identify Service Provider

- **classe**: "S"

### Service providers Types

Service providers types available

- **SAML**: saml
- **SAML API client**: soffid-saml
- **OpenID Connect**: openid-connect
- **OpenID Dynamic Register**: openid-dynamic-register
- **Radius client**: radius
- **CAS client**: cas

### Open Id Mechanism

- PA: **User's password**
- AC: **Authorization code**
- PC: **User's password + Client credentials**
- IM: **Implicit**

### Federation Operations

Soffid provides an API that allows you to connect to the Federation microservices.

The available operations are the following

- List all
- List by filter
- Query by id
- Create
- Update
- Delete

<p class="callout info">You can visit [the SCIM Federation Member examples](https://bookstack.soffid.com/books/scim/page/scim-federation-members-examples) and [the SCIM Entity Group examples](https://bookstack.soffid.com/books/scim/page/scim-entity-group-examples) page for more detailed information.</p>

# SCIM Entity Group examples

## Operations

This page shows the functions that can be performed for the Entity Group object.

### List all

##### Request

```MarkDown
GET http://<your-domain>/soffid/webservice/scim2/v1/EntityGroup
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 3,
    "startIndex": 1,
    "Resources": [
        {
            "meta": {
                "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/EntityGroup/5462422",
                "resourceType": "EntityGroup"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.addons.federation.common.EntityGroup"
            ],
            "name": "test-demoIdP",
            "id": 5462422
        },
        {
            "meta": {
                "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/EntityGroup/6725679",
                "resourceType": "EntityGroup"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.addons.federation.common.EntityGroup"
            ],
            "name": "Soffid",
            "id": 6725679
        },
        {
            "metadataUrl": "test-2",
            "meta": {
                "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/EntityGroup/6780683",
                "resourceType": "EntityGroup"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.addons.federation.common.EntityGroup"
            ],
            "name": "test-2",
            "id": 6780683
        }
    ]
}
```

### List by filter

List all entity groups with a filter expression.

<p class="callout info">It is allowed to use pagination and sort the information, for more information visit the [Sorting](https://bookstack.soffid.com/link/116#bkmrk-sorting) and [Pagination](https://bookstack.soffid.com/link/116#bkmrk-pagination) information.</p>

##### Request

```MarkDown
GET http://<your-domain>/soffid/webservice/scim2/v1/EntityGroup?filter=name co "test"
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 3,
    "startIndex": 1,
    "Resources": [
        {
            "meta": {
                "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/EntityGroup/5462422",
                "resourceType": "EntityGroup"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.addons.federation.common.EntityGroup"
            ],
            "name": "test-demoIdP",
            "id": 5462422
        },
        {
            "meta": {
                "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/EntityGroup/6725679",
                "resourceType": "EntityGroup"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.addons.federation.common.EntityGroup"
            ],
            "name": "Soffid",
            "id": 6725679
        },
        {
            "metadataUrl": "test-2",
            "meta": {
                "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/EntityGroup/6780683",
                "resourceType": "EntityGroup"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.addons.federation.common.EntityGroup"
            ],
            "name": "test-2",
            "id": 6780683
        }
    ]
}
```

### Query by id

Query an entity group by its id (primary key).

##### Request

```MarkDown
GET http://<your-domain>/soffid/webservice/scim2/v1/EntityGroup/5462422
```

##### Response 200 OK

```JSON
{
    "meta": {
        "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/EntityGroup/5462422",
        "resourceType": "EntityGroup"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.addons.federation.common.EntityGroup"
    ],
    "name": "test-demoIdP",
    "id": 5462422
}
```

### Create

#### Request

```XML
POST http://<your-domain>/soffid/webservice/scim2/v1/EntityGroup
```

**JSON**

```JSON
 {
    "metadataUrl": "test-3",
    "name": "test-3"
}
```

##### Response 201 Created

```JSON
{
    "metadataUrl": "test-3",
    "meta": {
        "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/EntityGroup/6780695",
        "resourceType": "EntityGroup"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.addons.federation.common.EntityGroup"
    ],
    "name": "test-3",
    "id": 6780695
}
```

### Update partial

Only attributes with changes will be updated, the others will maintain the same value.

##### Request

```XML
PATCH http://<your-domain>/soffid/webservice/scim2/v1/EntityGroup/6780695
```

**JSON**

```JSON
 {
    "Operations" : [
        {
            "op" : "replace",
            "path" : "name",
            "value": "SP Cloud"
        },
        {
            "op" : "replace",
            "path" : "metadataUrl",
            "value": "SP Cloud"
        }
    ]
}
```

##### Response 200 OK

```JSON
{
    "metadataUrl": "SP Cloud",
    "meta": {
        "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/EntityGroup/6780695",
        "resourceType": "EntityGroup"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.addons.federation.common.EntityGroup"
    ],
    "name": "SP Cloud",
    "id": 6780695
}
```

### Update all

This operation replaces all values in the entity group.

- Note that the attribute id is required to confirm that the resource "...EntityGroup/&lt;id&gt;" is the same that the JSON EntityGroup.
- Note that all the attributes not included in the request will be cleared in the EntityGroup and their data will be lost.
- Note that not all the attributes are updatable, for example, tag meta, avoid these tags. For more information see the [Resource data model](https://bookstack.soffid.com/books/addons/page/resource-data-model "Resource data model") page

##### Request

```XML
PUT http://<your-domain>/soffid/webservice/scim2/v1/EntityGroup/1976590
```

**JSON**

```JSON
{
    "metadataUrl": "SP Cloud Test",
    "schemas": [
        "urn:soffid:com.soffid.iam.addons.federation.common.EntityGroup"
    ],
    "name": "SP Cloud Test",
    "id": 6780695
}
```

##### Response 200 OK

```JSON
{
    "metadataUrl": "SP Cloud Test",
    "meta": {
        "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/EntityGroup/6780695",
        "resourceType": "EntityGroup"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.addons.federation.common.EntityGroup"
    ],
    "name": "SP Cloud Test",
    "id": 6780695
}
```

### Delete

<p class="callout warning">Please note, after this deletion, the entity group has to be created again to use it in the following examples.</p>

##### Request

```MarkDown
DELETE http://<your-omain>/soffid/webservice/scim2/v1/EntityGroup/6780695
```

##### Response 204 No Content

```
204 No Content
```

### Error response

<p class="callout info">For more information about error response visit [https://bookstack.soffid.com/link/116#bkmrk-error-response](https://bookstack.soffid.com/link/116#bkmrk-error-response)</p>

# SCIM Federation Members examples

## Operations

This page shows the functions that can be performed for the Federation Member object.

### List all

##### Request

```MarkDown
GET http://<your-domain>/soffid/webservice/scim2/v1/FederationMember
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 15,
    "startIndex": 1,
    "Resources": [
        {
            "internal": false,
            "allowRecover": false,
            "disableSSL": false,
            "impersonations": [],
            "roles": [],
            "ssoCookieName": "soffid_sso_session",
            "entityGroup": {
                "meta": {
                    "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/EntityGroup/5462422",
                    "resourceType": "EntityGroup"
                },
                "schemas": [
                    "urn:soffid:com.soffid.iam.addons.federation.common.EntityGroup"
                ],
                "name": "test-demoIdP",
                "id": 5462422
            },
            "metadades": "{\n \"authorization_endpoint\": \"https://server/oauth2/auth\",\n \"token_endpoint\": \"https://server/oauth2/token\",\n \"userinfo_endpoint\": \"https://server/oauth2/userinfo\",\n \"scopes_supported\": [ \"openid\",\"email\",\"profile\"],\n \"display\": \"page\"\n}",
            "authenticationMethods": "P",
            "storeUser": false,
            "contact": "pgarcia@soffid.com",
            "loginHintScript": "loginHint",
            "id": 5999758,
            "enableCaptcha": false,
            "classe": "I",
            "idpType": "openid-connect",
            "keytabs": [],
            "meta": {
                "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/FederationMember/5999758",
                "resourceType": "FederationMember"
            },
            "organization": "Soffid",
            "extendedAuthenticationMethods": [],
            "schemas": [
                "urn:soffid:com.soffid.iam.addons.federation.common.FederationMember"
            ],
            "name": "OpenIDConnect_Test",
            "serviceProvider": [],
            "allowRegister": false,
            "publicId": "OpenIDConnect_ID"
        },
        {
            "classe": "S",
            "internal": false,
            "allowRecover": false,
            "disableSSL": false,
            "virtualIdentityProvider": [],
            "impersonations": [],
            "roles": [],
            "registrationTokenExpiration": "2024-04-04 08:04:47",
            "uidExpression": "userName",
            "entityGroup": {
                "metadataUrl": "test-2",
                "meta": {
                    "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/EntityGroup/6780683",
                    "resourceType": "EntityGroup"
                },
                "schemas": [
                    "urn:soffid:com.soffid.iam.addons.federation.common.EntityGroup"
                ],
                "name": "test-2",
                "id": 6780683
            },
            "keytabs": [],
            "allowedScopes": [
                {
                    "meta": {
                        "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/AllowedScope/6798983",
                        "resourceType": "AllowedScope"
                    },
                    "scope": "*",
                    "roles": [],
                    "schemas": [
                        "urn:soffid:com.soffid.iam.addons.federation.common.AllowedScope"
                    ],
                    "id": 6798983
                },
                {
                    "meta": {
                        "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/AllowedScope/6798984",
                        "resourceType": "AllowedScope"
                    },
                    "scope": "openid",
                    "roles": [],
                    "schemas": [
                        "urn:soffid:com.soffid.iam.addons.federation.common.AllowedScope"
                    ],
                    "id": 6798984
                }
            ],
            "openidMechanism": [
                "PA",
                "AC",
                "PC",
                "IM"
            ],
            "openidLogoutUrl": [],
            "openidSectorIdentifierUrl": "http://localhost:4204",
            "meta": {
                "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/FederationMember/6796706",
                "resourceType": "FederationMember"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.addons.federation.common.FederationMember"
            ],
            "name": "OpenIDDynamicRegister-Test2",
            "openidUrl": [],
            "id": 6796706,
            "maxRegistrations": 3,
            "allowRegister": false,
            "publicId": "OpenIDDynamicRegister-publicId-test2",
            "serviceProviderType": "openid-dynamic-register"
        },
      ........
      ]
}
```

### List by filter

List all entity groups with a filter expression.

<p class="callout info">It is allowed to use pagination and sort the information, for more information visit the [Sorting](https://bookstack.soffid.com/link/116#bkmrk-sorting) and [Pagination](https://bookstack.soffid.com/link/116#bkmrk-pagination) information.</p>

##### Request

```MarkDown
GET http://<your-domain>/soffid/webservice/scim2/v1/FederationMember?filter=name co "Dynamic"
```

##### Response 200 OK

```JSON
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 2,
    "startIndex": 1,
    "Resources": [
       {
            "classe": "S",
            "internal": false,
            "allowRecover": false,
            "disableSSL": false,
            "virtualIdentityProvider": [],
            "impersonations": [],
            "roles": [
                "SOFFID_USER@soffid"
            ],
            "registrationTokenExpiration": "2023-11-09 07:57:20",
            "entityGroup": {
                "meta": {
                    "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/EntityGroup/5462422",
                    "resourceType": "EntityGroup"
                },
                "schemas": [
                    "urn:soffid:com.soffid.iam.addons.federation.common.EntityGroup"
                ],
                "name": "test-demoIdP",
                "id": 5462422
            },
            "keytabs": [],
            "allowedScopes": [
                {
                    "meta": {
                        "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/AllowedScope/6617980",
                        "resourceType": "AllowedScope"
                    },
                    "scope": "openid",
                    "roles": [],
                    "schemas": [
                        "urn:soffid:com.soffid.iam.addons.federation.common.AllowedScope"
                    ],
                    "id": 6617980
                },
                {
                    "meta": {
                        "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/AllowedScope/6617977",
                        "resourceType": "AllowedScope"
                    },
                    "scope": "*",
                    "roles": [],
                    "schemas": [
                        "urn:soffid:com.soffid.iam.addons.federation.common.AllowedScope"
                    ],
                    "id": 6617977
                }
            ],
            "openidMechanism": [
                "PA",
                "AC"
            ],
            "openidLogoutUrl": [],
            "meta": {
                "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/FederationMember/6617976",
                "resourceType": "FederationMember"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.addons.federation.common.FederationMember"
            ],
            "name": "Dynamic Register SP",
            "openidUrl": [],
            "id": 6617976,
            "maxRegistrations": 2,
            "allowRegister": false,
            "publicId": "DR",
            "serviceProviderType": "openid-dynamic-register"
        },
        {
            "classe": "S",
            "internal": false,
            "allowRecover": false,
            "disableSSL": false,
            "virtualIdentityProvider": [],
            "impersonations": [],
            "roles": [
                "SOFFID_USER@soffid"
            ],
            "registrationTokenExpiration": "2022-11-10 00:00:00",
            "entityGroup": {
                "meta": {
                    "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/EntityGroup/5462422",
                    "resourceType": "EntityGroup"
                },
                "schemas": [
                    "urn:soffid:com.soffid.iam.addons.federation.common.EntityGroup"
                ],
                "name": "test-demoIdP",
                "id": 5462422
            },
            "keytabs": [],
            "allowedScopes": [
                {
                    "meta": {
                        "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/AllowedScope/6622593",
                        "resourceType": "AllowedScope"
                    },
                    "scope": "*",
                    "roles": [],
                    "schemas": [
                        "urn:soffid:com.soffid.iam.addons.federation.common.AllowedScope"
                    ],
                    "id": 6622593
                },
                {
                    "meta": {
                        "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/AllowedScope/6622594",
                        "resourceType": "AllowedScope"
                    },
                    "scope": "openid",
                    "roles": [],
                    "schemas": [
                        "urn:soffid:com.soffid.iam.addons.federation.common.AllowedScope"
                    ],
                    "id": 6622594
                }
            ],
            "openidMechanism": [],
            "openidLogoutUrl": [],
            "meta": {
                "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/FederationMember/6622589",
                "resourceType": "FederationMember"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.addons.federation.common.FederationMember"
            ],
            "name": "Dynamic Register SP 2",
            "openidUrl": [],
            "id": 6622589,
            "maxRegistrations": 1,
            "allowRegister": false,
            "publicId": "DR2",
            "serviceProviderType": "openid-dynamic-register"
        }
    ]
}
```

### Query by id

Query a federation member by its id (primary key).

##### Request

```MarkDown
GET http://<your-domain>/soffid/webservice/scim2/v1/FederationMember/6617976
```

##### Response 200 OK

```JSON
{
    "classe": "S",
    "internal": false,
    "allowRecover": false,
    "disableSSL": false,
    "virtualIdentityProvider": [],
    "impersonations": [],
    "roles": [
        "SOFFID_USER@soffid"
    ],
    "registrationTokenExpiration": "2023-11-09 07:57:20",
    "entityGroup": {
        "meta": {
            "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/EntityGroup/5462422",
            "resourceType": "EntityGroup"
        },
        "schemas": [
            "urn:soffid:com.soffid.iam.addons.federation.common.EntityGroup"
        ],
        "name": "test-demoIdP",
        "id": 5462422
    },
    "keytabs": [],
    "allowedScopes": [
        {
            "meta": {
                "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/AllowedScope/6617980",
                "resourceType": "AllowedScope"
            },
            "scope": "openid",
            "roles": [],
            "schemas": [
                "urn:soffid:com.soffid.iam.addons.federation.common.AllowedScope"
            ],
            "id": 6617980
        },
        {
            "meta": {
                "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/AllowedScope/6617977",
                "resourceType": "AllowedScope"
            },
            "scope": "*",
            "roles": [],
            "schemas": [
                "urn:soffid:com.soffid.iam.addons.federation.common.AllowedScope"
            ],
            "id": 6617977
        }
    ],
    "openidMechanism": [
        "PA",
        "AC"
    ],
    "openidLogoutUrl": [],
    "meta": {
        "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/FederationMember/6617976",
        "resourceType": "FederationMember"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.addons.federation.common.FederationMember"
    ],
    "name": "Dynamic Register SP",
    "openidUrl": [],
    "id": 6617976,
    "maxRegistrations": 2,
    "allowRegister": false,
    "publicId": "DR",
    "serviceProviderType": "openid-dynamic-register"
}
```

### Create (SAML)

#### Request

```XML
POST http://<your-domain>/soffid/webservice/scim2/v1/FederationMember
```

**JSON**

```JSON
{
    "name": "App SAML Cloud" ,
    "publicId" : "http://<YOUR-SERVER>:8090/apps/user_saml/saml/metadata", 
    "classe": "S",
    "serviceProviderType": "saml",
    "entityGroup": {
        "meta": {
            "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/EntityGroup/6780683",
            "resourceType": "EntityGroup"
        },
        "schemas": [
            "urn:soffid:com.soffid.iam.addons.federation.common.EntityGroup"
        ],
       "name": "test-2",
       "id": 6780683
    } 
}
```

#### Response 201 Created

```JSON
{
    "classe": "S",
    "internal": false,
    "allowRecover": false,
    "disableSSL": false,
    "virtualIdentityProvider": [],
    "impersonations": [],
    "roles": [],
    "entityGroup": {
        "metadataUrl": "test-2",
        "meta": {
            "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/EntityGroup/6780683",
            "resourceType": "EntityGroup"
        },
        "schemas": [
            "urn:soffid:com.soffid.iam.addons.federation.common.EntityGroup"
        ],
        "name": "test-2",
        "id": 6780683
    },
    "keytabs": [],
    "meta": {
        "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/FederationMember/6798992",
        "resourceType": "FederationMember"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.addons.federation.common.FederationMember"
    ],
    "name": "App SAML Cloud",
    "id": 6798992,
    "allowRegister": false,
    "publicId": "http://<YOUR-SERVER>:8090/apps/user_saml/saml/metadata",
    "serviceProviderType": "saml"
}
```

### Create (SAML API client)

#### Request

```XML
POST http://<your-domain>/soffid/webservice/scim2/v1/FederationMember
```

**JSON**

```JSON
{
    "name": "Test-IdP" ,
    "publicId" : "https://some.idp.com/identifier/", 
    "classe": "S",
    "serviceProviderType": "soffid-saml",
    "entityGroup": {
        "meta": {
            "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/EntityGroup/6780683",
            "resourceType": "EntityGroup"
        },
        "schemas": [
            "urn:soffid:com.soffid.iam.addons.federation.common.EntityGroup"
        ],
       "name": "test-2",
        "id": 6780683
    }
}
```

#### Response 201 Created

```JSON
{
    "classe": "S",
    "internal": true,
    "allowRecover": false,
    "disableSSL": false,
    "virtualIdentityProvider": [],
    "impersonations": [],
    "roles": [],
    "entityGroup": {
        "metadataUrl": "test-2",
        "meta": {
            "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/EntityGroup/6780683",
            "resourceType": "EntityGroup"
        },
        "schemas": [
            "urn:soffid:com.soffid.iam.addons.federation.common.EntityGroup"
        ],
        "name": "test-2",
        "id": 6780683
    },
    "keytabs": [],
    "meta": {
        "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/FederationMember/6787237",
        "resourceType": "FederationMember"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.addons.federation.common.FederationMember"
    ],
    "name": "Test-IdP",
    "id": 6787237,
    "allowRegister": false,
    "publicId": "https://some.idp.com/identifier/",
    "serviceProviderType": "soffid-saml"
}
```

### Create (OpenID Connect)

#### Request

```XML
POST http://<your-domain>/soffid/webservice/scim2/v1/FederationMember
```

**JSON**

```JSON
{
    "name": "AngularAppOpenID",
    "publicId": "AngularAppOpenID",
    "classe": "S",
    "serviceProviderType": "openid-connect",
    "roles": [
        "SOFFID_HRMANAGER@soffid",
        "SOFFID_MUSIC@soffid"
    ],
    "entityGroup": {
        "meta": {
            "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/EntityGroup/6780683",
            "resourceType": "EntityGroup"
        },
        "schemas": [
            "urn:soffid:com.soffid.iam.addons.federation.common.EntityGroup"
        ],
        "name": "test-2",
        "id": 6780683
    },
    "allowedScopes": [
        {
            "scope": "profile",
            "roles": [
                "SOFFID_MUSIC@soffid"
            ],
            "schemas": [
                "urn:soffid:com.soffid.iam.addons.federation.common.AllowedScope"
            ]
        },
        {
            "scope": "email",
            "roles": [],
            "schemas": [
                "urn:soffid:com.soffid.iam.addons.federation.common.AllowedScope"
            ]
        }
    ],
    "openidMechanism": [
        "PA",
        "AC",
        "PC",
        "IM"
    ],
     "openidUrl": [
        "http://localhost:4204"
    ],
    "openidClientId" : "angularClientID",
    "openidSecret":  "XXXXXXX",
    "openidLogoutUrlFront": "http://demolab.soffid.pat.lab:8080/soffid/anonymuuslogout.zul",
    "openidLogoutUrlBack": "",
    "openidLogoutUrl" : [],
    "openidSectorIdentifierUrl": ""
}
```

<details id="bkmrk-openidmechanism-pa%3A-"><summary>📌 openidMechanism</summary>

- PA: User's password
- AC: Authorization code
- PC: User's password + Client credentials
- IM: Implicit

</details>#### Response 201 Created

```JSON
{
    "internal": false,
    "allowRecover": false,
    "disableSSL": false,
    "virtualIdentityProvider": [],
    "impersonations": [],
    "roles": [
        "SOFFID_MUSIC@soffid",
        "SOFFID_HRMANAGER@soffid"
    ],
    "entityGroup": {
        "metadataUrl": "test-2",
        "meta": {
            "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/EntityGroup/6780683",
            "resourceType": "EntityGroup"
        },
        "schemas": [
            "urn:soffid:com.soffid.iam.addons.federation.common.EntityGroup"
        ],
        "name": "test-2",
        "id": 6780683
    },
    "openidLogoutUrlBack": "",
    "openidMechanism": [
        "PA",
        "AC",
        "PC",
        "IM"
    ],
    "openidSecret": {
        "schemas": [
            "urn:soffid:com.soffid.iam.addons.federation.api.Digest"
        ]
    },
    "id": 6787194,
    "serviceProviderType": "openid-connect",
    "classe": "S",
    "openidLogoutUrlFront": "http://demolab.soffid.pat.lab:8080/soffid/anonymuuslogout.zul",
    "keytabs": [],
    "allowedScopes": [
        {
            "meta": {
                "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/AllowedScope/6787199",
                "resourceType": "AllowedScope"
            },
            "scope": "email",
            "roles": [],
            "schemas": [
                "urn:soffid:com.soffid.iam.addons.federation.common.AllowedScope"
            ],
            "id": 6787199
        },
        {
            "meta": {
                "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/AllowedScope/6787197",
                "resourceType": "AllowedScope"
            },
            "scope": "profile",
            "roles": [
                "SOFFID_MUSIC@soffid"
            ],
            "schemas": [
                "urn:soffid:com.soffid.iam.addons.federation.common.AllowedScope"
            ],
            "id": 6787197
        },
        {
            "scope": "openid",
            "roles": [],
            "schemas": [
                "urn:soffid:com.soffid.iam.addons.federation.common.AllowedScope"
            ]
        }
    ],
    "openidLogoutUrl": [],
    "openidSectorIdentifierUrl": "",
    "meta": {
        "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/FederationMember/6787194",
        "resourceType": "FederationMember"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.addons.federation.common.FederationMember"
    ],
    "name": "AngularAppOpenID",
    "openidClientId": "angularClientID",
    "openidUrl": [
        "http://localhost:4204"
    ],
    "allowRegister": false,
    "publicId": "AngularAppOpenID"
}
```

### Create (Radius)

#### Request

```XML
POST http://<your-domain>/soffid/webservice/scim2/v1/FederationMember
```

**JSON**

```JSON
{
    "name": "SP-RADIUS" ,
    "publicId" : "SP-RADIUS-publicId", 
    "classe": "S",
    "serviceProviderType" : "radius", 
    "radiusSecret" : "XXxxzzaasssDD",
    "sourceIps": "127.0.01,192.168.133.0/24",
    "roles": ["SOFFID_HRMANAGER@soffid",
                "SOFFID_MUSIC@soffid"],
    "system": "BABELTEST",
    "entityGroup": {
        "meta": {
            "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/EntityGroup/6780683",
            "resourceType": "EntityGroup"
        },
        "schemas": [
            "urn:soffid:com.soffid.iam.addons.federation.common.EntityGroup"
        ],
       "name": "test-2",
       "id": 6780683
    }
}
```

#### Response 201 Created

```JSON
{
    "classe": "S",
    "internal": false,
    "allowRecover": false,
    "disableSSL": false,
    "virtualIdentityProvider": [],
    "impersonations": [],
    "roles": [
        "SOFFID_MUSIC@soffid",
        "SOFFID_HRMANAGER@soffid"
    ],
    "entityGroup": {
        "metadataUrl": "test-2",
        "meta": {
            "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/EntityGroup/6780683",
            "resourceType": "EntityGroup"
        },
        "schemas": [
            "urn:soffid:com.soffid.iam.addons.federation.common.EntityGroup"
        ],
        "name": "test-2",
        "id": 6780683
    },
    "keytabs": [],
    "sourceIps": "127.0.01,192.168.133.0/24",
    "system": "BABELTEST",
    "meta": {
        "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/FederationMember/6787250",
        "resourceType": "FederationMember"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.addons.federation.common.FederationMember"
    ],
    "name": "SP-RADIUS",
    "radiusSecret": "5GsnYxLvT0D0W4GQ9Zae",
    "id": 6787250,
    "allowRegister": false,
    "publicId": "SP-RADIUS-publicId",
    "serviceProviderType": "radius"
}
```

### Create (Cas)

#### Request

```XML
POST http://<your-domain>/soffid/webservice/scim2/v1/FederationMember
```

**JSON**

```JSON
{
    "name": "CAS",
    "publicId": "CAS-publicId",
    "classe": "S",
    "serviceProviderType": "cas",
    "roles": [
        "SOFFID_HRMANAGER@soffid",
        "SOFFID_MUSIC@soffid"
    ],
    "system": "BABELTEST",
    "consent": true,
    "entityGroup": {
        "meta": {
            "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/EntityGroup/6780683",
            "resourceType": "EntityGroup"
        },
        "schemas": [
            "urn:soffid:com.soffid.iam.addons.federation.common.EntityGroup"
        ],
        "name": "test-2",
        "id": 6780683
    }, 
    "openidUrl": [
                "https://www.testcasserver.lab/cas/"
    ],
    "openidLogoutUrl": [
        "https://www.testcasserver.lab/cas/logout?service=<redirect_url>"
    ]
}
```

#### Response 201 Created

```JSON
{
    "classe": "S",
    "internal": false,
    "allowRecover": false,
    "disableSSL": false,
    "virtualIdentityProvider": [],
    "impersonations": [],
    "roles": [
        "SOFFID_MUSIC@soffid",
        "SOFFID_HRMANAGER@soffid"
    ],
    "consent": true,
    "entityGroup": {
        "metadataUrl": "test-2",
        "meta": {
            "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/EntityGroup/6780683",
            "resourceType": "EntityGroup"
        },
        "schemas": [
            "urn:soffid:com.soffid.iam.addons.federation.common.EntityGroup"
        ],
        "name": "test-2",
        "id": 6780683
    },
    "keytabs": [],
    "system": "BABELTEST",
    "openidLogoutUrl": [
        "https://www.testcasserver.lab/cas/logout?service=<redirect_url>"
    ],
    "meta": {
        "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/FederationMember/6804777",
        "resourceType": "FederationMember"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.addons.federation.common.FederationMember"
    ],
    "name": "CAS",
    "openidUrl": [
        "https://www.testcasserver.lab/cas/"
    ],
    "id": 6804777,
    "allowRegister": false,
    "publicId": "CAS-publicId",
    "serviceProviderType": "cas"
}
```

### Create (OpenID Dynamic Register)

The OpenID Dynamic Register has to be created in the Soffid console

<p class="callout info">For more information, you can visit [the Openid-connect Dynamic Register documentation](https://bookstack.soffid.com/link/392#bkmrk-openid-connect-dynam)</p>

### Update partial

Only attributes with changes will be updated, the others will maintain the same value.

##### Request

```XML
PATCH http://<your-domain>/soffid/webservice/scim2/v1/FederationMember/6787388
```

**JSON**

```JSON
{
    "Operations" : [
        {
            "op" : "replace",
            "path" : "openidMechanism",
            "value": ["AC", "PC"]
        },
        {
            "op" : "replace",
            "path" : "consent",
            "value": "true"
        }
    ]
}
```

##### Response 200 OK

```JSON
{
            "classe": "S",
            "internal": false,
            "allowRecover": false,
            "disableSSL": false,
            "openidLogoutUrlFront": "http://demolab.soffid.pat.lab:8080/soffid/anonymuuslogout.zul",
            "virtualIdentityProvider": [],
            "impersonations": [],
            "roles": [
                "SOFFID_MUSIC@soffid",
                "SOFFID_HRMANAGER@soffid"
            ],
            "entityGroup": {
                "metadataUrl": "test-2",
                "meta": {
                    "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/EntityGroup/6780683",
                    "resourceType": "EntityGroup"
                },
                "schemas": [
                    "urn:soffid:com.soffid.iam.addons.federation.common.EntityGroup"
                ],
                "name": "test-2",
                "id": 6780683
            },
            "openidLogoutUrlBack": "",
            "keytabs": [],
            "allowedScopes": [
                {
                    "meta": {
                        "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/AllowedScope/6787199",
                        "resourceType": "AllowedScope"
                    },
                    "scope": "email",
                    "roles": [],
                    "schemas": [
                        "urn:soffid:com.soffid.iam.addons.federation.common.AllowedScope"
                    ],
                    "id": 6787199
                },
                {
                    "meta": {
                        "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/AllowedScope/6787197",
                        "resourceType": "AllowedScope"
                    },
                    "scope": "profile",
                    "roles": [
                        "SOFFID_MUSIC@soffid"
                    ],
                    "schemas": [
                        "urn:soffid:com.soffid.iam.addons.federation.common.AllowedScope"
                    ],
                    "id": 6787197
                },
                {
                    "scope": "openid",
                    "roles": [],
                    "schemas": [
                        "urn:soffid:com.soffid.iam.addons.federation.common.AllowedScope"
                    ]
                }
            ],
            "openidMechanism": [
                "AC",
                "PC"
            ],
            "openidLogoutUrl": [],
            "openidSectorIdentifierUrl": "",
            "meta": {
                "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/FederationMember/6787194",
                "resourceType": "FederationMember"
            },
            "schemas": [
                "urn:soffid:com.soffid.iam.addons.federation.common.FederationMember"
            ],
            "name": "AngularAppOpenID",
            "openidClientId": "angularClientID",
            "openidUrl": [
                "http://localhost:4204"
            ],
            "id": 6787194,
            "allowRegister": false,
            "publicId": "AngularAppOpenID",
            "serviceProviderType": "openid-connect"
        }
```

### Update all

This operation replaces all values in the entity group.

- Note that the attribute id is required to confirm that the resource "...EntityGroup/&lt;id&gt;" is the same that the JSON EntityGroup.
- Note that all the attributes not included in the request will be cleared in the EntityGroup and their data will be lost.
- Note that not all the attributes are updatable, for example, tag meta, avoid these tags. For more information see the [Resource data model](https://bookstack.soffid.com/books/addons/page/resource-data-model "Resource data model") page

##### Request

```XML
PUT http://<your-domain>/soffid/webservice/scim2/v1/EntityGroup/6787194
```

**JSON**

```JSON
{
    "classe": "S",
    "internal": false,
    "allowRecover": false,
    "disableSSL": false,
    "openidLogoutUrlFront": "http://demolab.soffid.pat.lab:8080/soffid/anonymuuslogout.zul",
    "virtualIdentityProvider": [],
    "impersonations": [],
    "roles": [
     ],
     "entityGroup": {
        "metadataUrl": "test-2",
            "meta": {
                "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/EntityGroup/6780683",
                "resourceType": "EntityGroup"
            },
           "schemas": [
                "urn:soffid:com.soffid.iam.addons.federation.common.EntityGroup"
            ],
            "name": "test-2",
            "id": 6780683
        },
        "openidLogoutUrlBack": "",
        "keytabs": [],
        "allowedScopes": [
            {
                "meta": {
                    "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/AllowedScope/6787199",
                    "resourceType": "AllowedScope"
                },
                "scope": "email",
                "roles": [],
                "schemas": [
                    "urn:soffid:com.soffid.iam.addons.federation.common.AllowedScope"
                ],
                "id": 6787199
            },
            {
                "meta": {
                    "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/AllowedScope/6787197",
                    "resourceType": "AllowedScope"
                },
                "scope": "profile",
                "roles": [
                    "SOFFID_MUSIC@soffid"
                ],
                "schemas": [
                    "urn:soffid:com.soffid.iam.addons.federation.common.AllowedScope"
                ],
                "id": 6787197
            },
            {
                "scope": "openid",
                "roles": [],
                "schemas": [
                    "urn:soffid:com.soffid.iam.addons.federation.common.AllowedScope"
                ]
            }
        ],
        "openidMechanism": [
        "PA",
        "AC",
        "PC",
        "IM"
    ],
    "openidLogoutUrl": [],
    "openidSectorIdentifierUrl": "",
    "meta": {
        "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/FederationMember/6787194",
        "resourceType": "FederationMember"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.addons.federation.common.FederationMember"
    ],
    "name": "AngularAppOpenID",
    "openidClientId": "angularClientID",
    "openidUrl": [
        "http://localhost:4204"
    ],
    "allowRegister": false,
    "publicId": "AngularAppOpenID",
    "serviceProviderType": "openid-connect"
}
```

##### Response 200 OK

```JSON
{
    "classe": "S",
    "internal": false,
    "allowRecover": false,
    "disableSSL": false,
    "openidLogoutUrlFront": "http://demolab.soffid.pat.lab:8080/soffid/anonymuuslogout.zul",
    "virtualIdentityProvider": [],
    "impersonations": [],
    "roles": [
        "SOFFID_MUSIC@soffid",
        "SOFFID_HRMANAGER@soffid"
    ],
    "entityGroup": {
        "metadataUrl": "test-2",
        "meta": {
            "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/EntityGroup/6780683",
            "resourceType": "EntityGroup"
        },
        "schemas": [
            "urn:soffid:com.soffid.iam.addons.federation.common.EntityGroup"
        ],
        "name": "test-2",
        "id": 6780683
    },
    "openidLogoutUrlBack": "",
    "keytabs": [],
    "allowedScopes": [
        {
            "meta": {
                "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/AllowedScope/6802723",
                "resourceType": "AllowedScope"
            },
            "scope": "openid",
            "roles": [],
            "schemas": [
                "urn:soffid:com.soffid.iam.addons.federation.common.AllowedScope"
            ],
            "id": 6802723
        },
        {
            "meta": {
                "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/AllowedScope/6787199",
                "resourceType": "AllowedScope"
            },
            "scope": "email",
            "roles": [],
            "schemas": [
                "urn:soffid:com.soffid.iam.addons.federation.common.AllowedScope"
            ],
            "id": 6787199
        },
        {
            "meta": {
                "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/AllowedScope/6787197",
                "resourceType": "AllowedScope"
            },
            "scope": "profile",
            "roles": [
                "SOFFID_MUSIC@soffid"
            ],
            "schemas": [
                "urn:soffid:com.soffid.iam.addons.federation.common.AllowedScope"
            ],
            "id": 6787197
        }
    ],
    "openidMechanism": [
        "PA",
        "AC",
        "PC",
        "IM"
    ],
    "openidLogoutUrl": [],
    "openidSectorIdentifierUrl": "",
    "meta": {
        "location": "http://demolab.soffid.pat.lab:8080/soffid/webservice/scim2/v1/FederationMember/6787194",
        "resourceType": "FederationMember"
    },
    "schemas": [
        "urn:soffid:com.soffid.iam.addons.federation.common.FederationMember"
    ],
    "name": "AngularAppOpenID",
    "openidClientId": "angularClientID",
    "openidUrl": [
        "http://localhost:4204"
    ],
    "id": 6787194,
    "allowRegister": false,
    "publicId": "AngularAppOpenID",
    "serviceProviderType": "openid-connect"
}
```

### Delete

<p class="callout warning">Please note, after this deletion, the entity group has to be created again to use it in the following examples.</p>

##### Request

```MarkDown
DELETE http://<your-omain>/soffid/webservice/scim2/v1/FederationMember/6784722
```

##### Response 204 No Content

```
204 No Content
```

### Error response

<p class="callout info">For more information about error response visit [https://bookstack.soffid.com/link/116#bkmrk-error-response](https://bookstack.soffid.com/link/116#bkmrk-error-response)</p>

# Cross-Origin Resource Sharing (CORS)

By default, for security reasons, the SCIM interface is published for any server application, but not for client-side (javascript) applications.

In order to allow client-side applications to query or modify SCIM objects, the CORS protocol states how to define the restrictions that apply to client-side applications. CORS settings can be tuned adding two [parameters:](https://bookstack.soffid.com/books/soffid-3-reference-guide/page/soffid-parameters "Soffid parameters")

<table border="1" id="bkmrk-parameter-value-soff" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 27.7105%;">Parameter</td><td style="width: 72.4019%;">Value</td></tr><tr><td style="width: 27.7105%;">**soffid.scim.cors.origin**</td><td style="width: 72.4019%;">Set a comma separated list of DNS domains allowed to perform SCIM operations.

Set to \* to allow access from any domain

</td></tr><tr><td style="width: 27.7105%;">**soffid.scim.cors.methods**</td><td style="width: 72.4019%;">Set a comma-separated list of allowed operations.

By default, it is set to **GET, OPTIONS, HEAD**

To allow any operation, set it to **GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD**

</td></tr></tbody></table>

These parameters can be changed in real-time for any tenant. Mind that setting these values for the master tenant applies to master tenant, but also applies as default values for any child tenant.

# Textual Index



# Textual Index

{{@875}}

# Operation

{{@876}}