# Users

## Open a new session

> \*\*API Key Scope\*\*: sessions / create

```json
{"openapi":"3.0.1","info":{"title":"Nodeum API","version":"2.1.0"},"servers":[{"url":"{url}/api/v2","variables":{"url":{"default":"http://localhost","description":"URL of server"}}}],"security":[],"paths":{"/users/sign_in":{"post":{"summary":"Open a new session","operationId":"sign_in","description":"**API Key Scope**: sessions / create","tags":["users"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sign_in"}}}},"responses":{"201":{"description":"Successful user sign in.","headers":{"Authorization":{"description":"JWT token","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/user"}}}}}}}},"components":{"schemas":{"sign_in":{"type":"object","properties":{"user":{"type":"object","properties":{"username":{"type":"string"},"password":{"type":"string"}}}}},"user":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"user_id":{"type":"integer"},"group_id":{"type":"integer"},"username":{"type":"string"},"password":{"type":"string","description":"Creation and update only"},"email":{"type":"string"},"is_admin":{"type":"boolean"},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true},"expired_at":{"type":"string","format":"date-time","description":"Expiration date of the user account"},"source_type":{"type":"string","enum":["web_app","cli_linux_multi_user","cli_ldap"],"default":"web_app"}}}}}}
```

## Close the session

> \*\*API Key Scope\*\*: sessions / destroy

```json
{"openapi":"3.0.1","info":{"title":"Nodeum API","version":"2.1.0"},"servers":[{"url":"{url}/api/v2","variables":{"url":{"default":"http://localhost","description":"URL of server"}}}],"security":[{"BasicAuth":[]},{"BearerAuth":[]},{"JWT":[]}],"components":{"securitySchemes":{"BasicAuth":{"type":"http","scheme":"basic","description":"Pass the username and password of a user in the authorization header.\nThis currently gives full access."},"BearerAuth":{"type":"apiKey","description":"Create an API Key associated to user.\nAccess can be restricted with the scope.\nEach API call described below has a scoped mentionned in its description.\n\nFor example :\n\n**API Key Scope**: files / index\n\nThis means that the API key should have a scope with controller as *files*\nand the action as *index*.","name":"Authorization","in":"header"},"JWT":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/users/sign_out":{"delete":{"summary":"Close the session","operationId":"sign_out","description":"**API Key Scope**: sessions / destroy","tags":["users"],"responses":{"204":{"description":"Successful user sign out."}}}}}}
```

## Lists all configurations of current user.

> \*\*API Key Scope\*\*: configurations / index

```json
{"openapi":"3.0.1","info":{"title":"Nodeum API","version":"2.1.0"},"servers":[{"url":"{url}/api/v2","variables":{"url":{"default":"http://localhost","description":"URL of server"}}}],"security":[{"BasicAuth":[]},{"BearerAuth":[]},{"JWT":[]}],"components":{"securitySchemes":{"BasicAuth":{"type":"http","scheme":"basic","description":"Pass the username and password of a user in the authorization header.\nThis currently gives full access."},"BearerAuth":{"type":"apiKey","description":"Create an API Key associated to user.\nAccess can be restricted with the scope.\nEach API call described below has a scoped mentionned in its description.\n\nFor example :\n\n**API Key Scope**: files / index\n\nThis means that the API key should have a scope with controller as *files*\nand the action as *index*.","name":"Authorization","in":"header"},"JWT":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"responses":{"configuration_index":{"description":"List of configurations.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/user_configuration_collection"}}}}},"schemas":{"user_configuration_collection":{"type":"object","properties":{"configurations":{"type":"array","items":{"$ref":"#/components/schemas/user_configuration"}},"count":{"type":"integer"}}},"user_configuration":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"key":{"type":"string"},"value":{"type":"string"}}}},"parameters":{"limit":{"name":"limit","in":"query","description":"The number of items to display for pagination.","schema":{"type":"integer"}},"offset":{"name":"offset","in":"query","description":"The number of items to skip for pagination.","schema":{"type":"integer"}}}},"paths":{"/users/me/configurations":{"get":{"summary":"Lists all configurations of current user.","tags":["users"],"operationId":"index_configurations","description":"**API Key Scope**: configurations / index","responses":{"200":{"$ref":"#/components/responses/configuration_index"}},"parameters":[{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/offset"}]}}}}
```

## Creates a new configuration value for current user.

> \*\*API Key Scope\*\*: configurations / create

```json
{"openapi":"3.0.1","info":{"title":"Nodeum API","version":"2.1.0"},"servers":[{"url":"{url}/api/v2","variables":{"url":{"default":"http://localhost","description":"URL of server"}}}],"security":[{"BasicAuth":[]},{"BearerAuth":[]},{"JWT":[]}],"components":{"securitySchemes":{"BasicAuth":{"type":"http","scheme":"basic","description":"Pass the username and password of a user in the authorization header.\nThis currently gives full access."},"BearerAuth":{"type":"apiKey","description":"Create an API Key associated to user.\nAccess can be restricted with the scope.\nEach API call described below has a scoped mentionned in its description.\n\nFor example :\n\n**API Key Scope**: files / index\n\nThis means that the API key should have a scope with controller as *files*\nand the action as *index*.","name":"Authorization","in":"header"},"JWT":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"responses":{"configuration_show":{"description":"A specific file.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/user_configuration"}}}}},"schemas":{"user_configuration":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"key":{"type":"string"},"value":{"type":"string"}}}},"requestBodies":{"configuration_body":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/user_configuration"}}},"required":true}}},"paths":{"/users/me/configurations":{"post":{"summary":"Creates a new configuration value for current user.","operationId":"create_configuration","description":"**API Key Scope**: configurations / create","tags":["users"],"responses":{"201":{"$ref":"#/components/responses/configuration_show"}},"requestBody":{"$ref":"#/components/requestBodies/configuration_body"}}}}}
```

## Displays a specific configuration value.

> \*\*API Key Scope\*\*: configurations / show

```json
{"openapi":"3.0.1","info":{"title":"Nodeum API","version":"2.1.0"},"servers":[{"url":"{url}/api/v2","variables":{"url":{"default":"http://localhost","description":"URL of server"}}}],"security":[{"BasicAuth":[]},{"BearerAuth":[]},{"JWT":[]}],"components":{"securitySchemes":{"BasicAuth":{"type":"http","scheme":"basic","description":"Pass the username and password of a user in the authorization header.\nThis currently gives full access."},"BearerAuth":{"type":"apiKey","description":"Create an API Key associated to user.\nAccess can be restricted with the scope.\nEach API call described below has a scoped mentionned in its description.\n\nFor example :\n\n**API Key Scope**: files / index\n\nThis means that the API key should have a scope with controller as *files*\nand the action as *index*.","name":"Authorization","in":"header"},"JWT":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"responses":{"configuration_show":{"description":"A specific file.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/user_configuration"}}}},"not_found":{"description":"The requested resource was not found. The detailed error will be of type `not_found`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/model_error"}}}}},"schemas":{"user_configuration":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"key":{"type":"string"},"value":{"type":"string"}}},"model_error":{"type":"object","properties":{"details":{"type":"object","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/attribute_error"}},"description":"Parsable objects describing the errors. The key is the invalid attribute name."},"messages":{"type":"array","description":"English description of the errors.","items":{"type":"string"}}}},"attribute_error":{"required":["error"],"type":"object","properties":{"error":{"type":"string"}},"discriminator":{"propertyName":"error"}}}},"paths":{"/users/me/configurations/{configuration_id}":{"get":{"summary":"Displays a specific configuration value.","operationId":"show_configuration","description":"**API Key Scope**: configurations / show","tags":["users"],"responses":{"200":{"$ref":"#/components/responses/configuration_show"},"404":{"$ref":"#/components/responses/not_found"}}}}}}
```

## Updates a specific configuration value.

> \*\*API Key Scope\*\*: configurations / update

```json
{"openapi":"3.0.1","info":{"title":"Nodeum API","version":"2.1.0"},"servers":[{"url":"{url}/api/v2","variables":{"url":{"default":"http://localhost","description":"URL of server"}}}],"security":[{"BasicAuth":[]},{"BearerAuth":[]},{"JWT":[]}],"components":{"securitySchemes":{"BasicAuth":{"type":"http","scheme":"basic","description":"Pass the username and password of a user in the authorization header.\nThis currently gives full access."},"BearerAuth":{"type":"apiKey","description":"Create an API Key associated to user.\nAccess can be restricted with the scope.\nEach API call described below has a scoped mentionned in its description.\n\nFor example :\n\n**API Key Scope**: files / index\n\nThis means that the API key should have a scope with controller as *files*\nand the action as *index*.","name":"Authorization","in":"header"},"JWT":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"responses":{"configuration_show":{"description":"A specific file.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/user_configuration"}}}}},"schemas":{"user_configuration":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"key":{"type":"string"},"value":{"type":"string"}}}},"requestBodies":{"configuration_body":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/user_configuration"}}},"required":true}}},"paths":{"/users/me/configurations/{configuration_id}":{"put":{"summary":"Updates a specific configuration value.","operationId":"update_configuration","description":"**API Key Scope**: configurations / update","tags":["users"],"responses":{"200":{"$ref":"#/components/responses/configuration_show"}},"requestBody":{"$ref":"#/components/requestBodies/configuration_body"}}}}}
```

## Destroys a specific configuration value.

> \*\*API Key Scope\*\*: configurations / destroy

```json
{"openapi":"3.0.1","info":{"title":"Nodeum API","version":"2.1.0"},"servers":[{"url":"{url}/api/v2","variables":{"url":{"default":"http://localhost","description":"URL of server"}}}],"security":[{"BasicAuth":[]},{"BearerAuth":[]},{"JWT":[]}],"components":{"securitySchemes":{"BasicAuth":{"type":"http","scheme":"basic","description":"Pass the username and password of a user in the authorization header.\nThis currently gives full access."},"BearerAuth":{"type":"apiKey","description":"Create an API Key associated to user.\nAccess can be restricted with the scope.\nEach API call described below has a scoped mentionned in its description.\n\nFor example :\n\n**API Key Scope**: files / index\n\nThis means that the API key should have a scope with controller as *files*\nand the action as *index*.","name":"Authorization","in":"header"},"JWT":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/users/me/configurations/{configuration_id}":{"delete":{"summary":"Destroys a specific configuration value.","operationId":"destroy_configuration","description":"**API Key Scope**: configurations / destroy","tags":["users"],"responses":{"204":{"description":"Configuration destroyed."}}}}}}
```

## Lists all API keys of current user.

> \*\*API Key Scope\*\*: api\_keys / index

```json
{"openapi":"3.0.1","info":{"title":"Nodeum API","version":"2.1.0"},"servers":[{"url":"{url}/api/v2","variables":{"url":{"default":"http://localhost","description":"URL of server"}}}],"security":[{"BasicAuth":[]},{"BearerAuth":[]},{"JWT":[]}],"components":{"securitySchemes":{"BasicAuth":{"type":"http","scheme":"basic","description":"Pass the username and password of a user in the authorization header.\nThis currently gives full access."},"BearerAuth":{"type":"apiKey","description":"Create an API Key associated to user.\nAccess can be restricted with the scope.\nEach API call described below has a scoped mentionned in its description.\n\nFor example :\n\n**API Key Scope**: files / index\n\nThis means that the API key should have a scope with controller as *files*\nand the action as *index*.","name":"Authorization","in":"header"},"JWT":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"responses":{"api_key_index":{"description":"List of API Keys.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api_key_collection"}}}}},"schemas":{"api_key_collection":{"type":"object","properties":{"api_keys":{"type":"array","items":{"$ref":"#/components/schemas/api_key"}},"count":{"type":"integer"}}},"api_key":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"key":{"type":"string","readOnly":true},"name":{"type":"string"}}}},"parameters":{"limit":{"name":"limit","in":"query","description":"The number of items to display for pagination.","schema":{"type":"integer"}},"offset":{"name":"offset","in":"query","description":"The number of items to skip for pagination.","schema":{"type":"integer"}}}},"paths":{"/users/me/api_keys":{"get":{"summary":"Lists all API keys of current user.","tags":["users"],"operationId":"index_api_keys","description":"**API Key Scope**: api_keys / index","responses":{"200":{"$ref":"#/components/responses/api_key_index"}},"parameters":[{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/offset"}]}}}}
```

## Creates a new API Key for current user.

> \*\*API Key Scope\*\*: api\_keys / create

```json
{"openapi":"3.0.1","info":{"title":"Nodeum API","version":"2.1.0"},"servers":[{"url":"{url}/api/v2","variables":{"url":{"default":"http://localhost","description":"URL of server"}}}],"security":[{"BasicAuth":[]},{"BearerAuth":[]},{"JWT":[]}],"components":{"securitySchemes":{"BasicAuth":{"type":"http","scheme":"basic","description":"Pass the username and password of a user in the authorization header.\nThis currently gives full access."},"BearerAuth":{"type":"apiKey","description":"Create an API Key associated to user.\nAccess can be restricted with the scope.\nEach API call described below has a scoped mentionned in its description.\n\nFor example :\n\n**API Key Scope**: files / index\n\nThis means that the API key should have a scope with controller as *files*\nand the action as *index*.","name":"Authorization","in":"header"},"JWT":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"responses":{"api_key_show":{"description":"A specific file.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api_key_full"}}}}},"schemas":{"api_key_full":{"allOf":[{"$ref":"#/components/schemas/api_key"},{"type":"object","properties":{"api_key_scopes":{"type":"array","items":{"$ref":"#/components/schemas/api_key_scope"}}}}]},"api_key":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"key":{"type":"string","readOnly":true},"name":{"type":"string"}}},"api_key_scope":{"type":"object","properties":{"controller":{"type":"string"},"action":{"type":"string"}}}},"requestBodies":{"api_key_body":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/api_key_full"}}},"required":true}}},"paths":{"/users/me/api_keys":{"post":{"summary":"Creates a new API Key for current user.","operationId":"create_api_key","description":"**API Key Scope**: api_keys / create","tags":["users"],"responses":{"201":{"$ref":"#/components/responses/api_key_show"}},"requestBody":{"$ref":"#/components/requestBodies/api_key_body"}}}}}
```

## Displays a specific API Key with its scopes.

> \*\*API Key Scope\*\*: api\_keys / show

```json
{"openapi":"3.0.1","info":{"title":"Nodeum API","version":"2.1.0"},"servers":[{"url":"{url}/api/v2","variables":{"url":{"default":"http://localhost","description":"URL of server"}}}],"security":[{"BasicAuth":[]},{"BearerAuth":[]},{"JWT":[]}],"components":{"securitySchemes":{"BasicAuth":{"type":"http","scheme":"basic","description":"Pass the username and password of a user in the authorization header.\nThis currently gives full access."},"BearerAuth":{"type":"apiKey","description":"Create an API Key associated to user.\nAccess can be restricted with the scope.\nEach API call described below has a scoped mentionned in its description.\n\nFor example :\n\n**API Key Scope**: files / index\n\nThis means that the API key should have a scope with controller as *files*\nand the action as *index*.","name":"Authorization","in":"header"},"JWT":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"responses":{"api_key_show":{"description":"A specific file.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api_key_full"}}}},"not_found":{"description":"The requested resource was not found. The detailed error will be of type `not_found`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/model_error"}}}}},"schemas":{"api_key_full":{"allOf":[{"$ref":"#/components/schemas/api_key"},{"type":"object","properties":{"api_key_scopes":{"type":"array","items":{"$ref":"#/components/schemas/api_key_scope"}}}}]},"api_key":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"key":{"type":"string","readOnly":true},"name":{"type":"string"}}},"api_key_scope":{"type":"object","properties":{"controller":{"type":"string"},"action":{"type":"string"}}},"model_error":{"type":"object","properties":{"details":{"type":"object","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/attribute_error"}},"description":"Parsable objects describing the errors. The key is the invalid attribute name."},"messages":{"type":"array","description":"English description of the errors.","items":{"type":"string"}}}},"attribute_error":{"required":["error"],"type":"object","properties":{"error":{"type":"string"}},"discriminator":{"propertyName":"error"}}}},"paths":{"/users/me/api_keys/{api_key_id}":{"get":{"summary":"Displays a specific API Key with its scopes.","operationId":"show_api_key","description":"**API Key Scope**: api_keys / show","tags":["users"],"responses":{"200":{"$ref":"#/components/responses/api_key_show"},"404":{"$ref":"#/components/responses/not_found"}}}}}}
```

## Updates a specific API Key.

> \*\*API Key Scope\*\*: api\_keys / update

```json
{"openapi":"3.0.1","info":{"title":"Nodeum API","version":"2.1.0"},"servers":[{"url":"{url}/api/v2","variables":{"url":{"default":"http://localhost","description":"URL of server"}}}],"security":[{"BasicAuth":[]},{"BearerAuth":[]},{"JWT":[]}],"components":{"securitySchemes":{"BasicAuth":{"type":"http","scheme":"basic","description":"Pass the username and password of a user in the authorization header.\nThis currently gives full access."},"BearerAuth":{"type":"apiKey","description":"Create an API Key associated to user.\nAccess can be restricted with the scope.\nEach API call described below has a scoped mentionned in its description.\n\nFor example :\n\n**API Key Scope**: files / index\n\nThis means that the API key should have a scope with controller as *files*\nand the action as *index*.","name":"Authorization","in":"header"},"JWT":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"responses":{"api_key_show":{"description":"A specific file.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api_key_full"}}}}},"schemas":{"api_key_full":{"allOf":[{"$ref":"#/components/schemas/api_key"},{"type":"object","properties":{"api_key_scopes":{"type":"array","items":{"$ref":"#/components/schemas/api_key_scope"}}}}]},"api_key":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"key":{"type":"string","readOnly":true},"name":{"type":"string"}}},"api_key_scope":{"type":"object","properties":{"controller":{"type":"string"},"action":{"type":"string"}}}},"requestBodies":{"api_key_body":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/api_key_full"}}},"required":true}}},"paths":{"/users/me/api_keys/{api_key_id}":{"put":{"summary":"Updates a specific API Key.","operationId":"update_api_key","description":"**API Key Scope**: api_keys / update","tags":["users"],"responses":{"200":{"$ref":"#/components/responses/api_key_show"}},"requestBody":{"$ref":"#/components/requestBodies/api_key_body"}}}}}
```

## Destroys a specific API Key.

> \*\*API Key Scope\*\*: api\_keys / destroy

```json
{"openapi":"3.0.1","info":{"title":"Nodeum API","version":"2.1.0"},"servers":[{"url":"{url}/api/v2","variables":{"url":{"default":"http://localhost","description":"URL of server"}}}],"security":[{"BasicAuth":[]},{"BearerAuth":[]},{"JWT":[]}],"components":{"securitySchemes":{"BasicAuth":{"type":"http","scheme":"basic","description":"Pass the username and password of a user in the authorization header.\nThis currently gives full access."},"BearerAuth":{"type":"apiKey","description":"Create an API Key associated to user.\nAccess can be restricted with the scope.\nEach API call described below has a scoped mentionned in its description.\n\nFor example :\n\n**API Key Scope**: files / index\n\nThis means that the API key should have a scope with controller as *files*\nand the action as *index*.","name":"Authorization","in":"header"},"JWT":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/users/me/api_keys/{api_key_id}":{"delete":{"summary":"Destroys a specific API Key.","operationId":"destroy_api_key","description":"**API Key Scope**: api_keys / destroy","tags":["users"],"responses":{"204":{"description":"API Key destroyed."}}}}}}
```

## Displays current user.

> \*\*API Key Scope\*\*: users / show

```json
{"openapi":"3.0.1","info":{"title":"Nodeum API","version":"2.1.0"},"servers":[{"url":"{url}/api/v2","variables":{"url":{"default":"http://localhost","description":"URL of server"}}}],"security":[{"BasicAuth":[]},{"BearerAuth":[]},{"JWT":[]}],"components":{"securitySchemes":{"BasicAuth":{"type":"http","scheme":"basic","description":"Pass the username and password of a user in the authorization header.\nThis currently gives full access."},"BearerAuth":{"type":"apiKey","description":"Create an API Key associated to user.\nAccess can be restricted with the scope.\nEach API call described below has a scoped mentionned in its description.\n\nFor example :\n\n**API Key Scope**: files / index\n\nThis means that the API key should have a scope with controller as *files*\nand the action as *index*.","name":"Authorization","in":"header"},"JWT":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"responses":{"users_show":{"description":"A specific user.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/user"}}}},"unauthorized":{"description":"User is unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/generic_error"}}}},"not_found":{"description":"The requested resource was not found. The detailed error will be of type `not_found`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/model_error"}}}}},"schemas":{"user":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"user_id":{"type":"integer"},"group_id":{"type":"integer"},"username":{"type":"string"},"password":{"type":"string","description":"Creation and update only"},"email":{"type":"string"},"is_admin":{"type":"boolean"},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true},"expired_at":{"type":"string","format":"date-time","description":"Expiration date of the user account"},"source_type":{"type":"string","enum":["web_app","cli_linux_multi_user","cli_ldap"],"default":"web_app"}}},"generic_error":{"type":"object","properties":{"error":{"type":"string"}}},"model_error":{"type":"object","properties":{"details":{"type":"object","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/attribute_error"}},"description":"Parsable objects describing the errors. The key is the invalid attribute name."},"messages":{"type":"array","description":"English description of the errors.","items":{"type":"string"}}}},"attribute_error":{"required":["error"],"type":"object","properties":{"error":{"type":"string"}},"discriminator":{"propertyName":"error"}}}},"paths":{"/users/me":{"get":{"summary":"Displays current user.","operationId":"show_current_user","description":"**API Key Scope**: users / show","tags":["users"],"responses":{"200":{"$ref":"#/components/responses/users_show"},"401":{"$ref":"#/components/responses/unauthorized"},"404":{"$ref":"#/components/responses/not_found"}}}}}}
```

## Lists all users.

> \*\*API Key Scope\*\*: users / index

```json
{"openapi":"3.0.1","info":{"title":"Nodeum API","version":"2.1.0"},"servers":[{"url":"{url}/api/v2","variables":{"url":{"default":"http://localhost","description":"URL of server"}}}],"security":[{"BasicAuth":[]},{"BearerAuth":[]},{"JWT":[]}],"components":{"securitySchemes":{"BasicAuth":{"type":"http","scheme":"basic","description":"Pass the username and password of a user in the authorization header.\nThis currently gives full access."},"BearerAuth":{"type":"apiKey","description":"Create an API Key associated to user.\nAccess can be restricted with the scope.\nEach API call described below has a scoped mentionned in its description.\n\nFor example :\n\n**API Key Scope**: files / index\n\nThis means that the API key should have a scope with controller as *files*\nand the action as *index*.","name":"Authorization","in":"header"},"JWT":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"responses":{"users_index":{"description":"List of users.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/user_collection"}}}}},"schemas":{"user_collection":{"type":"object","properties":{"count":{"type":"integer","readOnly":true},"users":{"type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/user"}}}},"user":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"user_id":{"type":"integer"},"group_id":{"type":"integer"},"username":{"type":"string"},"password":{"type":"string","description":"Creation and update only"},"email":{"type":"string"},"is_admin":{"type":"boolean"},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true},"expired_at":{"type":"string","format":"date-time","description":"Expiration date of the user account"},"source_type":{"type":"string","enum":["web_app","cli_linux_multi_user","cli_ldap"],"default":"web_app"}}}},"parameters":{"limit":{"name":"limit","in":"query","description":"The number of items to display for pagination.","schema":{"type":"integer"}},"offset":{"name":"offset","in":"query","description":"The number of items to skip for pagination.","schema":{"type":"integer"}}}},"paths":{"/users":{"get":{"summary":"Lists all users.","tags":["users"],"operationId":"index_users","description":"**API Key Scope**: users / index","responses":{"200":{"$ref":"#/components/responses/users_index"}},"parameters":[{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/offset"}]}}}}
```

## Creates a new user.

> \*\*API Key Scope\*\*: users / create

```json
{"openapi":"3.0.1","info":{"title":"Nodeum API","version":"2.1.0"},"servers":[{"url":"{url}/api/v2","variables":{"url":{"default":"http://localhost","description":"URL of server"}}}],"security":[{"BasicAuth":[]},{"BearerAuth":[]},{"JWT":[]}],"components":{"securitySchemes":{"BasicAuth":{"type":"http","scheme":"basic","description":"Pass the username and password of a user in the authorization header.\nThis currently gives full access."},"BearerAuth":{"type":"apiKey","description":"Create an API Key associated to user.\nAccess can be restricted with the scope.\nEach API call described below has a scoped mentionned in its description.\n\nFor example :\n\n**API Key Scope**: files / index\n\nThis means that the API key should have a scope with controller as *files*\nand the action as *index*.","name":"Authorization","in":"header"},"JWT":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"responses":{"users_show":{"description":"A specific user.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/user"}}}},"unprocessable_entity":{"description":"The received resource was not correctly formatted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/model_error"}}}}},"schemas":{"user":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"user_id":{"type":"integer"},"group_id":{"type":"integer"},"username":{"type":"string"},"password":{"type":"string","description":"Creation and update only"},"email":{"type":"string"},"is_admin":{"type":"boolean"},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true},"expired_at":{"type":"string","format":"date-time","description":"Expiration date of the user account"},"source_type":{"type":"string","enum":["web_app","cli_linux_multi_user","cli_ldap"],"default":"web_app"}}},"model_error":{"type":"object","properties":{"details":{"type":"object","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/attribute_error"}},"description":"Parsable objects describing the errors. The key is the invalid attribute name."},"messages":{"type":"array","description":"English description of the errors.","items":{"type":"string"}}}},"attribute_error":{"required":["error"],"type":"object","properties":{"error":{"type":"string"}},"discriminator":{"propertyName":"error"}}},"requestBodies":{"user_body":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/user"}}},"required":true}}},"paths":{"/users":{"post":{"summary":"Creates a new user.","operationId":"create_user","description":"**API Key Scope**: users / create","tags":["users"],"responses":{"201":{"$ref":"#/components/responses/users_show"},"422":{"$ref":"#/components/responses/unprocessable_entity"}},"requestBody":{"$ref":"#/components/requestBodies/user_body"}}}}}
```

## Displays a specific user.

> \*\*API Key Scope\*\*: users / show

```json
{"openapi":"3.0.1","info":{"title":"Nodeum API","version":"2.1.0"},"servers":[{"url":"{url}/api/v2","variables":{"url":{"default":"http://localhost","description":"URL of server"}}}],"security":[{"BasicAuth":[]},{"BearerAuth":[]},{"JWT":[]}],"components":{"securitySchemes":{"BasicAuth":{"type":"http","scheme":"basic","description":"Pass the username and password of a user in the authorization header.\nThis currently gives full access."},"BearerAuth":{"type":"apiKey","description":"Create an API Key associated to user.\nAccess can be restricted with the scope.\nEach API call described below has a scoped mentionned in its description.\n\nFor example :\n\n**API Key Scope**: files / index\n\nThis means that the API key should have a scope with controller as *files*\nand the action as *index*.","name":"Authorization","in":"header"},"JWT":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"responses":{"users_show":{"description":"A specific user.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/user"}}}},"not_found":{"description":"The requested resource was not found. The detailed error will be of type `not_found`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/model_error"}}}}},"schemas":{"user":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"user_id":{"type":"integer"},"group_id":{"type":"integer"},"username":{"type":"string"},"password":{"type":"string","description":"Creation and update only"},"email":{"type":"string"},"is_admin":{"type":"boolean"},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true},"expired_at":{"type":"string","format":"date-time","description":"Expiration date of the user account"},"source_type":{"type":"string","enum":["web_app","cli_linux_multi_user","cli_ldap"],"default":"web_app"}}},"model_error":{"type":"object","properties":{"details":{"type":"object","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/attribute_error"}},"description":"Parsable objects describing the errors. The key is the invalid attribute name."},"messages":{"type":"array","description":"English description of the errors.","items":{"type":"string"}}}},"attribute_error":{"required":["error"],"type":"object","properties":{"error":{"type":"string"}},"discriminator":{"propertyName":"error"}}}},"paths":{"/users/{user_id}":{"get":{"summary":"Displays a specific user.","operationId":"show_user","description":"**API Key Scope**: users / show","tags":["users"],"responses":{"200":{"$ref":"#/components/responses/users_show"},"404":{"$ref":"#/components/responses/not_found"}}}}}}
```

## Updates a specific user.

> \*\*API Key Scope\*\*: users / update

```json
{"openapi":"3.0.1","info":{"title":"Nodeum API","version":"2.1.0"},"servers":[{"url":"{url}/api/v2","variables":{"url":{"default":"http://localhost","description":"URL of server"}}}],"security":[{"BasicAuth":[]},{"BearerAuth":[]},{"JWT":[]}],"components":{"securitySchemes":{"BasicAuth":{"type":"http","scheme":"basic","description":"Pass the username and password of a user in the authorization header.\nThis currently gives full access."},"BearerAuth":{"type":"apiKey","description":"Create an API Key associated to user.\nAccess can be restricted with the scope.\nEach API call described below has a scoped mentionned in its description.\n\nFor example :\n\n**API Key Scope**: files / index\n\nThis means that the API key should have a scope with controller as *files*\nand the action as *index*.","name":"Authorization","in":"header"},"JWT":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"responses":{"users_show":{"description":"A specific user.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/user"}}}},"unprocessable_entity":{"description":"The received resource was not correctly formatted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/model_error"}}}}},"schemas":{"user":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"user_id":{"type":"integer"},"group_id":{"type":"integer"},"username":{"type":"string"},"password":{"type":"string","description":"Creation and update only"},"email":{"type":"string"},"is_admin":{"type":"boolean"},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true},"expired_at":{"type":"string","format":"date-time","description":"Expiration date of the user account"},"source_type":{"type":"string","enum":["web_app","cli_linux_multi_user","cli_ldap"],"default":"web_app"}}},"model_error":{"type":"object","properties":{"details":{"type":"object","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/attribute_error"}},"description":"Parsable objects describing the errors. The key is the invalid attribute name."},"messages":{"type":"array","description":"English description of the errors.","items":{"type":"string"}}}},"attribute_error":{"required":["error"],"type":"object","properties":{"error":{"type":"string"}},"discriminator":{"propertyName":"error"}}},"requestBodies":{"user_body":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/user"}}},"required":true}}},"paths":{"/users/{user_id}":{"put":{"summary":"Updates a specific user.","operationId":"update_user","description":"**API Key Scope**: users / update","tags":["users"],"responses":{"200":{"$ref":"#/components/responses/users_show"},"422":{"$ref":"#/components/responses/unprocessable_entity"}},"requestBody":{"$ref":"#/components/requestBodies/user_body"}}}}}
```

## Destroys a specific user.

> \*\*API Key Scope\*\*: users / destroy

```json
{"openapi":"3.0.1","info":{"title":"Nodeum API","version":"2.1.0"},"servers":[{"url":"{url}/api/v2","variables":{"url":{"default":"http://localhost","description":"URL of server"}}}],"security":[{"BasicAuth":[]},{"BearerAuth":[]},{"JWT":[]}],"components":{"securitySchemes":{"BasicAuth":{"type":"http","scheme":"basic","description":"Pass the username and password of a user in the authorization header.\nThis currently gives full access."},"BearerAuth":{"type":"apiKey","description":"Create an API Key associated to user.\nAccess can be restricted with the scope.\nEach API call described below has a scoped mentionned in its description.\n\nFor example :\n\n**API Key Scope**: files / index\n\nThis means that the API key should have a scope with controller as *files*\nand the action as *index*.","name":"Authorization","in":"header"},"JWT":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/users/{user_id}":{"delete":{"summary":"Destroys a specific user.","operationId":"destroy_user","description":"**API Key Scope**: users / destroy","tags":["users"],"responses":{"204":{"description":"Container destroyed."}}}}}}
```

## List all system users.

> \*\*API Key Scope\*\*: users / systems

```json
{"openapi":"3.0.1","info":{"title":"Nodeum API","version":"2.1.0"},"servers":[{"url":"{url}/api/v2","variables":{"url":{"default":"http://localhost","description":"URL of server"}}}],"security":[{"BasicAuth":[]},{"BearerAuth":[]},{"JWT":[]}],"components":{"securitySchemes":{"BasicAuth":{"type":"http","scheme":"basic","description":"Pass the username and password of a user in the authorization header.\nThis currently gives full access."},"BearerAuth":{"type":"apiKey","description":"Create an API Key associated to user.\nAccess can be restricted with the scope.\nEach API call described below has a scoped mentionned in its description.\n\nFor example :\n\n**API Key Scope**: files / index\n\nThis means that the API key should have a scope with controller as *files*\nand the action as *index*.","name":"Authorization","in":"header"},"JWT":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"responses":{"system_users":{"description":"List of users.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/system_user_collection"}}}}},"schemas":{"system_user_collection":{"type":"object","properties":{"count":{"type":"integer","readOnly":true},"users":{"type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/system_user"}}}},"system_user":{"type":"object","properties":{"name":{"type":"string","readOnly":true},"uid":{"type":"integer","readOnly":true},"gid":{"type":"integer","readOnly":true},"info":{"type":"string","readOnly":true}}}}},"paths":{"/users/-/systems":{"get":{"summary":"List all system users.","operationId":"index_system_users","description":"**API Key Scope**: users / systems","tags":["users"],"responses":{"200":{"$ref":"#/components/responses/system_users"}}}}}}
```

## List all system groups.

> \*\*API Key Scope\*\*: groups / systems

```json
{"openapi":"3.0.1","info":{"title":"Nodeum API","version":"2.1.0"},"servers":[{"url":"{url}/api/v2","variables":{"url":{"default":"http://localhost","description":"URL of server"}}}],"security":[{"BasicAuth":[]},{"BearerAuth":[]},{"JWT":[]}],"components":{"securitySchemes":{"BasicAuth":{"type":"http","scheme":"basic","description":"Pass the username and password of a user in the authorization header.\nThis currently gives full access."},"BearerAuth":{"type":"apiKey","description":"Create an API Key associated to user.\nAccess can be restricted with the scope.\nEach API call described below has a scoped mentionned in its description.\n\nFor example :\n\n**API Key Scope**: files / index\n\nThis means that the API key should have a scope with controller as *files*\nand the action as *index*.","name":"Authorization","in":"header"},"JWT":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"responses":{"system_groups":{"description":"List of user groups.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/system_group_collection"}}}}},"schemas":{"system_group_collection":{"type":"object","properties":{"count":{"type":"integer","readOnly":true},"groups":{"type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/system_group"}}}},"system_group":{"type":"object","properties":{"name":{"type":"string","readOnly":true},"gid":{"type":"integer","readOnly":true},"users":{"type":"array","readOnly":true,"items":{"type":"string"}}}}}},"paths":{"/groups/-/systems":{"get":{"summary":"List all system groups.","operationId":"index_system_groups","description":"**API Key Scope**: groups / systems","tags":["users"],"responses":{"200":{"$ref":"#/components/responses/system_groups"}}}}}}
```
