Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: Added REST Identity API section #4880

Merged
merged 7 commits into from
Oct 31, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
206 changes: 206 additions & 0 deletions docs/references/rest-apis/rest-identity-api.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,206 @@
# Rest Identity v1 API
!!! note

This API can also be accessed via the RequestHandler with app-id: `IDN-V1`.


The `IdentityRestService` APIs provides methods to manage the system identities.
Unless otherwise specified, identities with `rest.identity` permissions can access these APIs.

## POST methods

#### Create User

- Description: This method allows to create a new user in the system.
- Method: POST
- API PATH: `services/identity/v1/identities`

##### Request
```JSON
{
"userName": "username",
"password": "password",
"passwordChangeNeeded": false,
"passwordAuthEnabled": true,
"permissions": [
"rest.identity"
]
}
```

##### Responses

- 200 OK status
- 400 Bad Request (Password strenght requirements not satisfied)
- 500 Internal Server Error

#### Get User by Name

- Description: This method allows to get data about an user in the system. The only considered field is the userName.
- Method: POST
- API PATH: `services/identity/v1/identities/byName`

##### Request
```JSON
{
"userName": "username"
}
salvatore-coppola marked this conversation as resolved.
Show resolved Hide resolved
```

##### Responses
```JSON
{
"userName": "kura.user.username",
"passwordAuthEnabled": false,
"passwordChangeNeeded": false,
"permissions": []
}
```

- 200 OK status
- 500 Internal Server Error

## GET methods

#### Get defined permissions

- Description: This method allows you to get the list of the permissions defined in the system
- Method: GET
- API PATH: `services/identity/v1/definedPermissions`

No specific permission is required to access this resource.

##### Responses

```JSON
{
"permissions": [
"rest.command",
"rest.inventory",
"rest.configuration",
"rest.tamper.detection",
"rest.security",
"kura.cloud.connection.admin",
"rest.position",
"kura.packages.admin",
"kura.device",
"rest.wires.admin",
"kura.admin",
"rest.keystores",
"rest.assets",
"rest.system",
"kura.maintenance",
"kura.wires.admin",
"rest.identity"
]
}
```

- 200 OK status
- 500 Internal Server Error

#### Get users configuration

- Description: This method allows you to get the list of the users and their configuration on the system.
- Method: GET
- API PATH: `services/identity/v1/identities`

##### Responses

```JSON
{
"userConfig": [
{
"userName": "admin",
"passwordAuthEnabled": true,
"passwordChangeNeeded": false,
"permissions": [
"kura.admin"
]
},
{
"userName": "appadmin",
"passwordAuthEnabled": true,
"passwordChangeNeeded": true,
"permissions": [
"kura.cloud.connection.admin",
"kura.packages.admin",
"kura.wires.admin"
]
}
]
}
```

- 200 OK status
- 500 Internal Server Error

#### Get password requirements

- Description: This method allows you to get the password requirements.
- Method: GET
- API PATH: `services/identity/v1/passwordRequirements`

No specific permission is required to access this resource.

##### Responses

```JSON
{
"passwordMinimumLength": 8,
"passwordRequireDigits": false,
"passwordRequireSpecialChars": false,
"passwordRequireBothCases": false
}
```

- 200 OK status
- 500 Internal Server Error

## PUT methods

#### Update User

- Description: This method allows to update an existing user in the system.
- Method: PUT
- API PATH: `services/identity/v1/identities`

##### Request

```JSON
{
"userName": "username",
"password": "password",
"passwordChangeNeeded": false,
"passwordAuthEnabled": true,
"permissions": [
"rest.identity"
]
}
```

##### Responses

- 200 OK status
- 400 Bad Request (Password strenght requirements not satisfied)
- 500 Internal Server Error

## DELETE methods

#### Delete User

- Description: This method allows to delete an existing user in the system. The only considered field is the userName.
- Method: DELETE
- API PATH: `services/identity/v1/identities`

##### Request
```JSON
{
"userName": "username",
}
salvatore-coppola marked this conversation as resolved.
Show resolved Hide resolved
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please remove the comma also here.

```

##### Responses

- 200 OK status
- 500 Internal Server Error
1 change: 1 addition & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,7 @@ nav:
- REST-APIs:
- Command: references/rest-apis/rest-command-api.md
- Deploy: references/rest-apis/rest-deploy-api.md
- Identity: references/rest-apis/rest-identity-api.md
- Inventory: references/rest-apis/rest-inventory-api.md
- Position: references/rest-apis/rest-position-api.md
- Security: references/rest-apis/rest-security-api.md
Expand Down