# Identity REST endpoint This is a basic endpoint that allows identity management in CzechIdM.

# Supports

If you want to use the REST API, you must be logged in. The easiest way is to use Basic authentication directly in request "- u admin: admin".

# API TODO: Swagger

# Examples

## Creating new identity You can use the POST method to create a new identity. Below is an example of identity creation new_identity where the query body contains only "user name, last name, first name and email". In response is returned whole new created identity (with all audit fields and generated ID).

### Request: ``` curl -i -X POST -H "Content-Type:application/json" -u admin:admin http://localhost:8080/idm-backend/api/v1/identities/ -d '{"username": "john_doe", "firstName": "John", "lastName": "Doe", "email": "john.doe@czechidm.eu"}' ```

### Response:

{
   "id": "22246775-19be-4088-ab34-cc67a322f731",
   "created": "2017-06-13T09:03:30.127Z",
   "modified": null,
   "creator": "admin",
   "creatorId": "d0c47adb-4cbd-4551-bb20-87567ff7892d",
   "modifier": null,
   "modifierId": null,
   "originalCreator": "admin",
   "originalCreatorId": "d0c47adb-4cbd-4551-bb20-87567ff7892d",
   "originalModifier": null,
   "originalModifierId": null,
   "username": "new_identity",
   "firstName": "New",
   "lastName": "Identity",
   "email": "new.identity@czechidm.eu",
   "phone": null,
   "titleBefore": null,
   "titleAfter": null,
   "description": null,
   "disabled": false,
   "_trimmed": false,
   "_embedded": {},
   "_links": {"self": {"href": "http://localhost:8080/idm-backend/api/v1/identities/22246775-19be-4088-ab34-cc67a322f731"}}
}

## Getting authorities for identity With uses this endpoint, you can get list of authorities for the identity. In this example for john doe identity. Authority defines what the identity potentially can do. For example, if the IDENTITY_READ authority is returned, it means that the user will see tab Users in the GUI. However, the authorities do not guarantee that the user will see other users as such. This is the task of permissions evaluators.

Edit add tag

### Request: ``` curl -u admin:admin 'http://localhost:8080/idm-backend/api/v1/identities/john_doe/authorities' ```

### Response:

[
  {
    "authority" : "CONTRACTGUARANTEE_AUTOCOMPLETE"
  }, {
    "authority" : "CONTRACTGUARANTEE_PASSWORDCHANGE"
  }, {
    "authority" : "CONTRACTGUARANTEE_READ"
  }, {
    "authority" : "IDENTITYCONTRACT_AUTOCOMPLETE"
  }, {
    "authority" : "IDENTITYCONTRACT_PASSWORDCHANGE"
  }, {
    "authority" : "IDENTITYCONTRACT_READ"
  }, {
    "authority" : "IDENTITYROLE_AUTOCOMPLETE"
  }, {
    "authority" : "IDENTITYROLE_PASSWORDCHANGE"
  }, {
    "authority" : "IDENTITYROLE_READ"
  }, {
    "authority" : "IDENTITY_AUTOCOMPLETE"
  }, {
    "authority" : "IDENTITY_PASSWORDCHANGE"
  }, {
    "authority" : "IDENTITY_READ"
  }, {
    "authority" : "ROLE_AUTOCOMPLETE"
  } 
]

## Getting assigned roles for identity With uses this endpoint, you can get list of assigned roles for the identity. In this example for admin identity. For example, a role can assign permissions or accounts on end systems.

List of returned assigned roles not support pagination. Everytime returning all.

### Request: ``` curl -u admin:admin 'http://localhost:8080/idm-backend/api/v1/identities/admin/roles'

```

### Response:

{
  "_embedded" : {
    "identityRoles" : [ {
      "id" : "4f2b06cd-5abd-4426-ab52-278741ec8389",
      "created" : "2017-06-12T10:48:42.157Z",
      "modified" : null,
      "creator" : "[SYSTEM]",
      "creatorId" : null,
      "modifier" : null,
      "modifierId" : null,
      "originalCreator" : "[SYSTEM]",
      "originalCreatorId" : null,
      "originalModifier" : null,
      "originalModifierId" : null,
      "identityContract" : "bf843f35-5d31-48e3-9d4d-a224b1ded9de",
      "role" : "2e8d493a-8368-4417-af88-08ad682a2ca1",
      "validFrom" : null,
      "validTill" : null,
      "automaticRole" : false,
      "roleTreeNode" : null,
      "valid" : true,
      "_trimmed" : true,
      "_embedded" : {!Shortened-for-clarity!}
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/idm-backend/api/v1/identities/admin/roles"
    }
  },
  "page" : {
    "size" : 0,
    "totalElements" : 1,
    "totalPages" : 1,
    "number" : 0
  }
}

## Reading identities For get identities without filter, you can use the simple GET request show below. The number of identities returned is limited to 10 . You must use pagination to return more results.

### Request: ``` curl -u admin:admin 'http://localhost:8080/idm-backend/api/v1/identities/'

``` ### Response:

{
   "_embedded": {"identities":    [
            {
         "id": "7660871b-8b95-4676-87ba-742ffb5ee881",
         "created": "2017-06-12T10:48:46.998Z",
         "modified": "2017-06-12T10:50:44.096Z",
         "creator": "[SYSTEM]",
         "creatorId": null,
         "modifier": "admin",
         "modifierId": "d0c47adb-4cbd-4551-bb20-87567ff7892d",
         "originalCreator": "[SYSTEM]",
         "originalCreatorId": null,
         "originalModifier": "admin",
         "originalModifierId": "d0c47adb-4cbd-4551-bb20-87567ff7892d",
         "username": "john_doe",
         "firstName": "John",
         "lastName": "Doe",
         "email": "john.doe@czechidm.eu",
         "phone": null,
         "titleBefore": null,
         "titleAfter": null,
         "description": null,
         "disabled": false,
         "_trimmed": true,
         "_embedded": {}
      },
            {
         "id": "5144d990-3d99-4d2e-8c5e-5335f0c3e67e",
         "created": "2017-06-12T10:48:46.450Z",
         "modified": "2017-06-12T10:52:25.242Z",
         "creator": "[SYSTEM]",
         "creatorId": null,
         "modifier": "admin",
         "modifierId": "d0c47adb-4cbd-4551-bb20-87567ff7892d",
         "originalCreator": "[SYSTEM]",
         "originalCreatorId": null,
         "originalModifier": "admin",
         "originalModifierId": "d0c47adb-4cbd-4551-bb20-87567ff7892d",
         "username": "james_smith",
         "firstName": " James",
         "lastName": "Smith",
         "email": "james.smith@czechidm.eu",
         "phone": null,
         "titleBefore": null,
         "titleAfter": null,
         "description": null,
         "disabled": false,
         "_trimmed": true,
         "_embedded": {}
      },
            {
         "id": "a42b0b2a-c4da-4b2d-b4c3-0d82d529e81c",
         "created": "2017-06-12T10:48:45.317Z",
         "modified": "2017-06-12T10:54:54.455Z",
         "creator": "[SYSTEM]",
         "creatorId": null,
         "modifier": "admin",
         "modifierId": "d0c47adb-4cbd-4551-bb20-87567ff7892d",
         "originalCreator": "[SYSTEM]",
         "originalCreatorId": null,
         "originalModifier": "admin",
         "originalModifierId": "d0c47adb-4cbd-4551-bb20-87567ff7892d",
         "username": "richard_miles",
         "firstName": "Richard",
         "lastName": "Miles",
         "email": "richard.miles@czechidm.eu",
         "phone": null,
         "titleBefore": null,
         "titleAfter": null,
         "description": null,
         "disabled": false,
         "_trimmed": true,
         "_embedded": {}
      },
            {
         "id": "d0c47adb-4cbd-4551-bb20-87567ff7892d",
         "created": "2017-06-12T10:48:41.397Z",
         "modified": "2017-06-12T10:55:51.328Z",
         "creator": "[SYSTEM]",
         "creatorId": null,
         "modifier": "admin",
         "modifierId": "d0c47adb-4cbd-4551-bb20-87567ff7892d",
         "originalCreator": "[SYSTEM]",
         "originalCreatorId": null,
         "originalModifier": "admin",
         "originalModifierId": "d0c47adb-4cbd-4551-bb20-87567ff7892d",
         "username": "admin",
         "firstName": "Super",
         "lastName": "Admin",
         "email": "admin@czechidm.eu",
         "phone": null,
         "titleBefore": null,
         "titleAfter": null,
         "description": null,
         "disabled": false,
         "_trimmed": true,
         "_embedded": {}
      }
   ]},
   "_links": {"self": {"href": "http://localhost:8080/idm-backend/api/v1/identities/?pageu=0&sizeu=3"}},
   "page":    {
      "size": 10,
      "totalElements": 4,
      "totalPages": 1,
      "number": 0
   }
}

## Reading identities with uses pagination Below is a example of how to get identity using pagination. We specify page of results by page parameter. The size parameter defines the number of records on the page. In this case, the first page will be returned, containing only one identity.

### Request: ``` curl -u admin:admin 'http://localhost:8080/idm-backend/api/v1/identities/?page=0&size=1'

``` ### Response:

{
   "_embedded": {"identities": [   {
      "id": "7660871b-8b95-4676-87ba-742ffb5ee881",
      "created": "2017-06-12T10:48:46.998Z",
      "modified": "2017-06-12T10:50:44.096Z",
      "creator": "[SYSTEM]",
      "creatorId": null,
      "modifier": "admin",
      "modifierId": "d0c47adb-4cbd-4551-bb20-87567ff7892d",
      "originalCreator": "[SYSTEM]",
      "originalCreatorId": null,
      "originalModifier": "admin",
      "originalModifierId": "d0c47adb-4cbd-4551-bb20-87567ff7892d",
      "username": "john_doe",
      "firstName": "John",
      "lastName": "Doe",
      "email": "john.doe@czechidm.eu",
      "phone": null,
      "titleBefore": null,
      "titleAfter": null,
      "description": null,
      "disabled": false,
      "_trimmed": true,
      "_embedded": {}
   }]},
   "_links":    {
      "first": {"href": "http://localhost:8080/idm-backend/api/v1/identities/?page=0&size=1"},
      "self": {"href": "http://localhost:8080/idm-backend/api/v1/identities/?page=0&size=1"},
      "next": {"href": "http://localhost:8080/idm-backend/api/v1/identities/?page=1&size=1"},
      "last": {"href": "http://localhost:8080/idm-backend/api/v1/identities/?page=3&size=1"}
   },
   "page":    {
      "size": 1,
      "totalElements": 4,
      "totalPages": 4,
      "number": 0
   }
}

## Get the main identity position in organization Returns the identity of the main position in the organization (/work-position). Returned position contains all work position's parents in the tree structure and contract's working position as path.

### Request: ``` curl -u admin:admin 'http://localhost:8080/idm-backend/api/v1/identities/admin/work-position'

```

### Response:

{
  "id" : "b34e015f-0a27-45f2-b333-c01478d22f37",
  "created" : "2017-06-13T10:54:18.439Z",
  "modified" : "2017-06-13T10:54:29.956Z",
  "creator" : "admin",
  "creatorId" : "d0c47adb-4cbd-4551-bb20-87567ff7892d",
  "modifier" : "admin",
  "modifierId" : "d0c47adb-4cbd-4551-bb20-87567ff7892d",
  "originalCreator" : "admin",
  "originalCreatorId" : "d0c47adb-4cbd-4551-bb20-87567ff7892d",
  "originalModifier" : "admin",
  "originalModifierId" : "d0c47adb-4cbd-4551-bb20-87567ff7892d",
  "identity" : {
    "id" : "7660871b-8b95-4676-87ba-742ffb5ee881",
    "created" : "2017-06-12T10:48:46.998Z",
    "modified" : "2017-06-12T10:50:44.096Z",
    "creator" : "[SYSTEM]",
    "creatorId" : null,
    "modifier" : "admin",
    "modifierId" : "d0c47adb-4cbd-4551-bb20-87567ff7892d",
    "originalCreator" : "[SYSTEM]",
    "originalCreatorId" : null,
    "originalModifier" : "admin",
    "originalModifierId" : "d0c47adb-4cbd-4551-bb20-87567ff7892d",
    "username" : "john_doe",
    "firstName" : "John",
    "lastName" : "Doe",
    "email" : "john.doe@czechidm.eu",
    "phone" : null,
    "titleBefore" : null,
    "titleAfter" : null,
    "description" : null,
    "disabled" : false,
    "_trimmed" : false,
    "_embedded" : { }
  },
  "contract" : {
    "id" : "b34e015f-0a27-45f2-b333-c01478d22f37",
    "created" : "2017-06-13T10:54:18.439Z",
    "modified" : "2017-06-13T10:54:29.956Z",
    "creator" : "admin",
    "creatorId" : "d0c47adb-4cbd-4551-bb20-87567ff7892d",
    "modifier" : "admin",
    "modifierId" : "d0c47adb-4cbd-4551-bb20-87567ff7892d",
    "originalCreator" : "admin",
    "originalCreatorId" : "d0c47adb-4cbd-4551-bb20-87567ff7892d",
    "originalModifier" : "admin",
    "originalModifierId" : "d0c47adb-4cbd-4551-bb20-87567ff7892d",
    "identity" : "7660871b-8b95-4676-87ba-742ffb5ee881",
    "validFrom" : null,
    "validTill" : null,
    "guarantee" : null,
    "position" : "Director",
    "externe" : false,
    "disabled" : false,
    "main" : true,
    "workPosition" : "e8a69620-be42-433b-ad98-1b95d448a6ba",
    "description" : null,
    "valid" : true,
    "_trimmed" : false,
    "_embedded" : {
      "workPosition" : {
        "id" : "e8a69620-be42-433b-ad98-1b95d448a6ba",
        "created" : "2017-06-12T10:48:47.492Z",
        "modified" : null,
        "creator" : "[SYSTEM]",
        "creatorId" : null,
        "modifier" : null,
        "modifierId" : null,
        "originalCreator" : "[SYSTEM]",
        "originalCreatorId" : null,
        "originalModifier" : null,
        "originalModifierId" : null,
        "code" : "one",
        "name" : "Organization One",
        "parent" : "59f10d91-259e-4fad-8820-39b1607665c8",
        "treeType" : "9920488b-984a-40d0-8af8-108332cc25ab",
        "disabled" : false,
        "_trimmed" : true,
        "_embedded" : {
          "parent" : {
            "id" : "59f10d91-259e-4fad-8820-39b1607665c8",
            "created" : "2017-06-12T10:48:42.706Z",
            "modified" : null,
            "creator" : "[SYSTEM]",
            "creatorId" : null,
            "modifier" : null,
            "modifierId" : null,
            "originalCreator" : "[SYSTEM]",
            "originalCreatorId" : null,
            "originalModifier" : null,
            "originalModifierId" : null,
            "code" : "root",
            "name" : "Root organization",
            "parent" : null,
            "treeType" : "9920488b-984a-40d0-8af8-108332cc25ab",
            "disabled" : false,
            "_trimmed" : true,
            "_embedded" : {
              "treeType" : {
                "id" : "9920488b-984a-40d0-8af8-108332cc25ab",
                "created" : "2017-06-12T10:48:42.587Z",
                "modified" : null,
                "creator" : "[SYSTEM]",
                "creatorId" : null,
                "modifier" : null,
                "modifierId" : null,
                "originalCreator" : "[SYSTEM]",
                "originalCreatorId" : null,
                "originalModifier" : null,
                "originalModifierId" : null,
                "code" : "ORGANIZATIONS",
                "name" : "Organization structure",
                "defaultTreeType" : true,
                "defaultTreeNode" : null,
                "_trimmed" : true,
                "_embedded" : { }
              }
            }
          },
          "treeType" : {
            "id" : "9920488b-984a-40d0-8af8-108332cc25ab",
            "created" : "2017-06-12T10:48:42.587Z",
            "modified" : null,
            "creator" : "[SYSTEM]",
            "creatorId" : null,
            "modifier" : null,
            "modifierId" : null,
            "originalCreator" : "[SYSTEM]",
            "originalCreatorId" : null,
            "originalModifier" : null,
            "originalModifierId" : null,
            "code" : "ORGANIZATIONS",
            "name" : "Organization structure",
            "defaultTreeType" : true,
            "defaultTreeNode" : null,
            "_trimmed" : true,
            "_embedded" : { }
          }
        }
      },
      "identity" : {
        "id" : "7660871b-8b95-4676-87ba-742ffb5ee881",
        "created" : "2017-06-12T10:48:46.998Z",
        "modified" : "2017-06-12T10:50:44.096Z",
        "creator" : "[SYSTEM]",
        "creatorId" : null,
        "modifier" : "admin",
        "modifierId" : "d0c47adb-4cbd-4551-bb20-87567ff7892d",
        "originalCreator" : "[SYSTEM]",
        "originalCreatorId" : null,
        "originalModifier" : "admin",
        "originalModifierId" : "d0c47adb-4cbd-4551-bb20-87567ff7892d",
        "username" : "john_doe",
        "firstName" : "John",
        "lastName" : "Doe",
        "email" : "john.doe@czechidm.eu",
        "phone" : null,
        "titleBefore" : null,
        "titleAfter" : null,
        "description" : null,
        "disabled" : false,
        "_trimmed" : true,
        "_embedded" : { }
      }
    }
  },
  "path" : [ {
    "id" : "59f10d91-259e-4fad-8820-39b1607665c8",
    "created" : "2017-06-12T10:48:42.706Z",
    "modified" : null,
    "creator" : "[SYSTEM]",
    "creatorId" : null,
    "originalCreator" : "[SYSTEM]",
    "originalCreatorId" : null,
    "modifier" : null,
    "modifierId" : null,
    "originalModifier" : null,
    "originalModifierId" : null,
    "code" : "root",
    "name" : "Root organization",
    "treeType" : null,
    "disabled" : false,
    "externalId" : null,
    "childrenCount" : 2,
    "parent" : null
  }, {
    "id" : "e8a69620-be42-433b-ad98-1b95d448a6ba",
    "created" : "2017-06-12T10:48:47.492Z",
    "modified" : null,
    "creator" : "[SYSTEM]",
    "creatorId" : null,
    "originalCreator" : "[SYSTEM]",
    "originalCreatorId" : null,
    "modifier" : null,
    "modifierId" : null,
    "originalModifier" : null,
    "originalModifierId" : null,
    "code" : "one",
    "name" : "Organization One",
    "treeType" : null,
    "disabled" : false,
    "externalId" : null,
    "childrenCount" : 0,
    "parent" : null
  } ],
  "_trimmed" : false,
  "_embedded" : { }
}