32 API Documentation
Forgejo Actions edited this page 2026-09-11 10:54:10 +00:00

Orion Auth Backend API v1.0

Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

OAuth2/OIDC authentication server with user management, RBAC, MFA, and federation support.

Base URLs:

Authentication

  • API Key (BearerAuth)
    • Parameter Name: Authorization, in: header.

OIDC

Get JSON Web Key Set

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/.well-known/jwks.json \
  -H 'Accept: application/json'

GET https://auth.nhsoul.fr/.well-known/jwks.json HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /.well-known/jwks.json

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline

Response Schema

Get OpenID Connect discovery configuration

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/.well-known/openid-configuration \
  -H 'Accept: application/json'

GET https://auth.nhsoul.fr/.well-known/openid-configuration HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /.well-known/openid-configuration

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline

Response Schema

End session / logout

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/end_session

GET https://auth.nhsoul.fr/end_session HTTP/1.1
Host: auth.nhsoul.fr

GET /end_session

Parameters

Name In Type Required Description
id_token_hint query string false Previously issued ID Token
post_logout_redirect_uri query string false URL to redirect after logout
state query string false Opaque value for the RP
client_id query string false Client ID

Responses

Status Meaning Description Schema
302 Found Redirect to AuthUI logout page None

Get user info claims

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/userinfo \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET https://auth.nhsoul.fr/userinfo HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /userinfo

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
401 Unauthorized Unauthorized Inline

Response Schema

OAuth2

Get OAuth 2.0 authorization server metadata (RFC 8414)

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/.well-known/oauth-authorization-server \
  -H 'Accept: application/json'

GET https://auth.nhsoul.fr/.well-known/oauth-authorization-server HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /.well-known/oauth-authorization-server

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline

Response Schema

Initiate OAuth2 authorization request

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/authorize?client_id=string&redirect_uri=string&response_type=string \
  -H 'Accept: application/json'

GET https://auth.nhsoul.fr/authorize?client_id=string&redirect_uri=string&response_type=string HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /authorize

Parameters

Name In Type Required Description
client_id query string true Client ID
redirect_uri query string true Redirect URI
response_type query string true Response type
scope query string false Requested scopes
state query string false State parameter
nonce query string false Nonce for ID token
code_challenge query string false PKCE code challenge
code_challenge_method query string false PKCE code challenge method

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline

Response Schema

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/authorize/consent \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST https://auth.nhsoul.fr/authorize/consent HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /authorize/consent

Body parameter

{
  "request_id": "string",
  "scopes_granted": [
    "string"
  ]
}
Name In Type Required Description
body body oauth.AuthorizeConsentInput true Consent input
» request_id body string true none
» scopes_granted body [string] true none

Example responses

200 Response

{}
Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline

Submit login credentials for OAuth2 authorization

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/authorize/login \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST https://auth.nhsoul.fr/authorize/login HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /authorize/login

Body parameter

{
  "email": "string",
  "password": "string",
  "remember_me": true,
  "request_id": "string"
}

Parameters

Name In Type Required Description
body body oauth.AuthorizeLoginInput true Login credentials
» email body string true none
» password body string true none
» remember_me body boolean false none
» request_id body string true none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
401 Unauthorized Unauthorized Inline

Response Schema

Submit MFA code for OAuth2 authorization

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/authorize/mfa \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST https://auth.nhsoul.fr/authorize/mfa HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /authorize/mfa

Body parameter

{
  "code": "string",
  "request_id": "string"
}

Parameters

Name In Type Required Description
body body oauth.AuthorizeMFAInput true MFA verification input
» code body string true none
» request_id body string true none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
401 Unauthorized Unauthorized Inline

Response Schema

Submit signup details for OAuth2 authorization (prompt=create)

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/authorize/register \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST https://auth.nhsoul.fr/authorize/register HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /authorize/register

Body parameter

{
  "display_name": "string",
  "email": "string",
  "extra_fields": {
    "property1": null,
    "property2": null
  },
  "password": "string",
  "request_id": "string"
}

Parameters

Name In Type Required Description
body body oauth.AuthorizeRegisterInput true Signup details
» display_name body string false none
» email body string true none
» extra_fields body object false none
»» additionalProperties body any false none
» password body string true none
» request_id body string true none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
409 Conflict Conflict Inline

Response Schema

Approve or deny a device authorization request

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/device/approve \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST https://auth.nhsoul.fr/device/approve HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /device/approve

Body parameter

{}

Parameters

Name In Type Required Description
body body object true Device approval input (user_code, approved, email, password)

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
401 Unauthorized Unauthorized Inline

Response Schema

Verify a device user code

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/device/verify \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST https://auth.nhsoul.fr/device/verify HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /device/verify

Body parameter

{
  "user_code": "string"
}

Parameters

Name In Type Required Description
body body oauth.DeviceVerifyInput true Device verification input
» user_code body string true none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline

Response Schema

Initiate device authorization flow

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/device_authorization \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'Accept: application/json'

POST https://auth.nhsoul.fr/device_authorization HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/x-www-form-urlencoded
Accept: application/json

POST /device_authorization

Body parameter

scope: string

Parameters

Name In Type Required Description
body body object false none
» scope body string false Requested scopes

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
401 Unauthorized Unauthorized Inline

Response Schema

Introspect a token

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/introspect \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'Accept: application/json'

POST https://auth.nhsoul.fr/introspect HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/x-www-form-urlencoded
Accept: application/json

POST /introspect

Body parameter

token: string
token_type_hint: string

Parameters

Name In Type Required Description
body body object true none
» token body string true Token to introspect
» token_type_hint body string false Token type hint

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
401 Unauthorized Unauthorized Inline

Response Schema

Revoke a token

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/revoke \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'Accept: application/json'

POST https://auth.nhsoul.fr/revoke HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/x-www-form-urlencoded
Accept: application/json

POST /revoke

Body parameter

token: string
token_type_hint: string

Parameters

Name In Type Required Description
body body object true none
» token body string true Token to revoke
» token_type_hint body string false Token type hint

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
401 Unauthorized Unauthorized Inline

Response Schema

Exchange credentials for tokens

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/token \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'Accept: application/json'

POST https://auth.nhsoul.fr/token HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/x-www-form-urlencoded
Accept: application/json

POST /token

Body parameter

grant_type: string
code: string
redirect_uri: string
code_verifier: string
refresh_token: string
scope: string

Parameters

Name In Type Required Description
body body object true none
» grant_type body string true Grant type
» code body string false Authorization code
» redirect_uri body string false Redirect URI
» code_verifier body string false PKCE code verifier
» refresh_token body string false Refresh token
» scope body string false Requested scopes

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
401 Unauthorized Unauthorized Inline

Response Schema

Admin - Audit

Query audit logs

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/admin/audit-logs \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET https://auth.nhsoul.fr/api/v1/admin/audit-logs HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/admin/audit-logs

Parameters

Name In Type Required Description
user_id query string false Filter by user ID
action query string false Filter by action
from query string false Start time (RFC3339)
to query string false End time (RFC3339)
page query integer false Page number
per_page query integer false Items per page

Example responses

200 Response

{
  "data": null,
  "page": 0,
  "per_page": 0,
  "total": 0,
  "total_pages": 0
}

Responses

Status Meaning Description Schema
200 OK OK pkg.PaginatedResponse
401 Unauthorized Unauthorized Inline
500 Internal Server Error Internal Server Error Inline

Response Schema

Admin - Clients

List all clients

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/admin/clients \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET https://auth.nhsoul.fr/api/v1/admin/clients HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/admin/clients

Parameters

Name In Type Required Description
page query integer false Page number
per_page query integer false Items per page

Example responses

200 Response

{
  "data": null,
  "page": 0,
  "per_page": 0,
  "total": 0,
  "total_pages": 0
}

Responses

Status Meaning Description Schema
200 OK OK pkg.PaginatedResponse
500 Internal Server Error Internal Server Error Inline

Response Schema

Create a new OAuth client

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/admin/clients \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST https://auth.nhsoul.fr/api/v1/admin/clients HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/admin/clients

Body parameter

{
  "access_token_ttl": 0,
  "backchannel_logout_session_required": true,
  "backchannel_logout_uri": "string",
  "description": "string",
  "frontchannel_logout_session_required": true,
  "frontchannel_logout_uri": "string",
  "grant_types": [
    "string"
  ],
  "id_token_encrypted_response_alg": "string",
  "id_token_encrypted_response_enc": "string",
  "id_token_ttl": 0,
  "is_first_party": true,
  "is_public": true,
  "jwks_uri": "string",
  "name": "string",
  "post_logout_redirect_uris": [
    "string"
  ],
  "redirect_uris": [
    "string"
  ],
  "refresh_token_ttl": 0,
  "request_uris": [
    "string"
  ],
  "require_pkce": true,
  "response_types": [
    "string"
  ],
  "scopes": [
    "string"
  ],
  "sector_identifier_uri": "string",
  "subject_type": "string",
  "token_auth_method": "string",
  "userinfo_encrypted_response_alg": "string",
  "userinfo_encrypted_response_enc": "string",
  "userinfo_signed_response_alg": "string"
}

Parameters

Name In Type Required Description
body body client.CreateInput true Client creation payload
» access_token_ttl body integer false none
» backchannel_logout_session_required body boolean false none
» backchannel_logout_uri body string false none
» description body string false none
» frontchannel_logout_session_required body boolean false none
» frontchannel_logout_uri body string false none
» grant_types body [string] true none
» id_token_encrypted_response_alg body string false JWE encryption (OIDC Core §10.2 / §5.3.2)
» id_token_encrypted_response_enc body string false none
» id_token_ttl body integer false none
» is_first_party body boolean false none
» is_public body boolean false none
» jwks_uri body string false none
» name body string true none
» post_logout_redirect_uris body [string] false Logout (OIDC RP-Initiated / Front-Channel / Back-Channel Logout 1.0)
» redirect_uris body [string] true none
» refresh_token_ttl body integer false none
» request_uris body [string] false none
» require_pkce body boolean false none
» response_types body [string] false none
» scopes body [string] true none
» sector_identifier_uri body string false none
» subject_type body string false OIDC subject + signed UserInfo
» token_auth_method body string false none
» userinfo_encrypted_response_alg body string false none
» userinfo_encrypted_response_enc body string false none
» userinfo_signed_response_alg body string false none

Example responses

201 Response

{}

Responses

Status Meaning Description Schema
201 Created Created Inline
400 Bad Request Bad Request Inline
500 Internal Server Error Internal Server Error Inline

Response Schema

Get a client by ID

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/admin/clients/{id} \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET https://auth.nhsoul.fr/api/v1/admin/clients/{id} HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/admin/clients/{id}

Parameters

Name In Type Required Description
id path string true Client ID

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
404 Not Found Not Found Inline

Response Schema

Delete a client

Code samples

# You can also use wget
curl -X DELETE https://auth.nhsoul.fr/api/v1/admin/clients/{id} \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

DELETE https://auth.nhsoul.fr/api/v1/admin/clients/{id} HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

DELETE /api/v1/admin/clients/{id}

Parameters

Name In Type Required Description
id path string true Client ID

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
404 Not Found Not Found Inline

Response Schema

Update a client

Code samples

# You can also use wget
curl -X PATCH https://auth.nhsoul.fr/api/v1/admin/clients/{id} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

PATCH https://auth.nhsoul.fr/api/v1/admin/clients/{id} HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

PATCH /api/v1/admin/clients/{id}

Body parameter

{
  "access_token_ttl": 0,
  "active": true,
  "backchannel_logout_session_required": true,
  "backchannel_logout_uri": "string",
  "description": "string",
  "frontchannel_logout_session_required": true,
  "frontchannel_logout_uri": "string",
  "grant_types": [
    "string"
  ],
  "id_token_encrypted_response_alg": "string",
  "id_token_encrypted_response_enc": "string",
  "id_token_ttl": 0,
  "is_first_party": true,
  "jwks_uri": "string",
  "name": "string",
  "post_logout_redirect_uris": [
    "string"
  ],
  "redirect_uris": [
    "string"
  ],
  "refresh_token_ttl": 0,
  "request_uris": [
    "string"
  ],
  "require_pkce": true,
  "response_types": [
    "string"
  ],
  "scopes": [
    "string"
  ],
  "sector_identifier_uri": "string",
  "subject_type": "string",
  "token_auth_method": "string",
  "userinfo_encrypted_response_alg": "string",
  "userinfo_encrypted_response_enc": "string",
  "userinfo_signed_response_alg": "string"
}

Parameters

Name In Type Required Description
id path string true Client ID
body body client.UpdateInput true Client update payload
» access_token_ttl body integer false none
» active body boolean false none
» backchannel_logout_session_required body boolean false none
» backchannel_logout_uri body string false none
» description body string false none
» frontchannel_logout_session_required body boolean false none
» frontchannel_logout_uri body string false none
» grant_types body [string] false none
» id_token_encrypted_response_alg body string false none
» id_token_encrypted_response_enc body string false none
» id_token_ttl body integer false none
» is_first_party body boolean false none
» jwks_uri body string false none
» name body string false none
» post_logout_redirect_uris body [string] false none
» redirect_uris body [string] false none
» refresh_token_ttl body integer false none
» request_uris body [string] false none
» require_pkce body boolean false none
» response_types body [string] false none
» scopes body [string] false none
» sector_identifier_uri body string false none
» subject_type body string false none
» token_auth_method body string false none
» userinfo_encrypted_response_alg body string false none
» userinfo_encrypted_response_enc body string false none
» userinfo_signed_response_alg body string false none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
404 Not Found Not Found Inline

Response Schema

Rotate a client's HMAC secret (client_secret_jwt)

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/admin/clients/{id}/rotate-hmac-secret \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST https://auth.nhsoul.fr/api/v1/admin/clients/{id}/rotate-hmac-secret HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

POST /api/v1/admin/clients/{id}/rotate-hmac-secret

Parameters

Name In Type Required Description
id path string true Client ID

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
404 Not Found Not Found Inline

Response Schema

Rotate a client's secret

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/admin/clients/{id}/rotate-secret \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST https://auth.nhsoul.fr/api/v1/admin/clients/{id}/rotate-secret HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

POST /api/v1/admin/clients/{id}/rotate-secret

Parameters

Name In Type Required Description
id path string true Client ID

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
404 Not Found Not Found Inline

Response Schema

Admin - Resources

Get resource permissions for a client

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/admin/clients/{id}/resource-permissions \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET https://auth.nhsoul.fr/api/v1/admin/clients/{id}/resource-permissions HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/admin/clients/{id}/resource-permissions

Parameters

Name In Type Required Description
id path string true Client ID

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
500 Internal Server Error Internal Server Error Inline

Response Schema

Set resource permissions for a client

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/admin/clients/{id}/resource-permissions \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST https://auth.nhsoul.fr/api/v1/admin/clients/{id}/resource-permissions HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/admin/clients/{id}/resource-permissions

Body parameter

{
  "permission_ids": [
    "string"
  ]
}

Parameters

Name In Type Required Description
id path string true Client ID
body body resource.SetClientPermissionsInput true Permission IDs
» permission_ids body [string] true none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
500 Internal Server Error Internal Server Error Inline

Response Schema

List all API resources

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/admin/resources \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET https://auth.nhsoul.fr/api/v1/admin/resources HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/admin/resources

Parameters

Name In Type Required Description
page query integer false Page number
per_page query integer false Items per page

Example responses

200 Response

{
  "data": null,
  "page": 0,
  "per_page": 0,
  "total": 0,
  "total_pages": 0
}

Responses

Status Meaning Description Schema
200 OK OK pkg.PaginatedResponse
500 Internal Server Error Internal Server Error Inline

Response Schema

Create a new API resource

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/admin/resources \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST https://auth.nhsoul.fr/api/v1/admin/resources HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/admin/resources

Body parameter

{
  "access_token_ttl": 0,
  "description": "string",
  "identifier": "string",
  "name": "string",
  "signing_alg": "string",
  "token_format": "string"
}

Parameters

Name In Type Required Description
body body resource.CreateInput true Resource creation payload
» access_token_ttl body integer false none
» description body string false none
» identifier body string true none
» name body string true none
» signing_alg body string false none
» token_format body string false none

Example responses

201 Response

{}

Responses

Status Meaning Description Schema
201 Created Created Inline
400 Bad Request Bad Request Inline
409 Conflict Conflict Inline
500 Internal Server Error Internal Server Error Inline

Response Schema

Get a resource by ID

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/admin/resources/{id} \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET https://auth.nhsoul.fr/api/v1/admin/resources/{id} HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/admin/resources/{id}

Parameters

Name In Type Required Description
id path string true Resource ID

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
404 Not Found Not Found Inline

Response Schema

Delete a resource

Code samples

# You can also use wget
curl -X DELETE https://auth.nhsoul.fr/api/v1/admin/resources/{id} \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

DELETE https://auth.nhsoul.fr/api/v1/admin/resources/{id} HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

DELETE /api/v1/admin/resources/{id}

Parameters

Name In Type Required Description
id path string true Resource ID

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
404 Not Found Not Found Inline

Response Schema

Update a resource

Code samples

# You can also use wget
curl -X PATCH https://auth.nhsoul.fr/api/v1/admin/resources/{id} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

PATCH https://auth.nhsoul.fr/api/v1/admin/resources/{id} HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

PATCH /api/v1/admin/resources/{id}

Body parameter

{
  "access_token_ttl": 0,
  "active": true,
  "description": "string",
  "name": "string",
  "signing_alg": "string",
  "token_format": "string"
}

Parameters

Name In Type Required Description
id path string true Resource ID
body body resource.UpdateInput true Resource update payload
» access_token_ttl body integer false none
» active body boolean false none
» description body string false none
» name body string false none
» signing_alg body string false none
» token_format body string false none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
404 Not Found Not Found Inline

Response Schema

Add a permission to a resource

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/admin/resources/{id}/permissions \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST https://auth.nhsoul.fr/api/v1/admin/resources/{id}/permissions HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/admin/resources/{id}/permissions

Body parameter

{
  "description": "string",
  "name": "string"
}

Parameters

Name In Type Required Description
id path string true Resource ID
body body resource.AddPermissionInput true Permission payload
» description body string false none
» name body string true none

Example responses

201 Response

{}

Responses

Status Meaning Description Schema
201 Created Created Inline
400 Bad Request Bad Request Inline
404 Not Found Not Found Inline
500 Internal Server Error Internal Server Error Inline

Response Schema

Remove a permission from a resource

Code samples

# You can also use wget
curl -X DELETE https://auth.nhsoul.fr/api/v1/admin/resources/{id}/permissions/{permId} \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

DELETE https://auth.nhsoul.fr/api/v1/admin/resources/{id}/permissions/{permId} HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

DELETE /api/v1/admin/resources/{id}/permissions/{permId}

Parameters

Name In Type Required Description
id path string true Resource ID
permId path string true Permission ID

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
404 Not Found Not Found Inline

Response Schema

Get resource permissions for a role

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/admin/roles/{id}/resource-permissions \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET https://auth.nhsoul.fr/api/v1/admin/roles/{id}/resource-permissions HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/admin/roles/{id}/resource-permissions

Parameters

Name In Type Required Description
id path string true Role ID

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
500 Internal Server Error Internal Server Error Inline

Response Schema

Set resource permissions for a role

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/admin/roles/{id}/resource-permissions \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST https://auth.nhsoul.fr/api/v1/admin/roles/{id}/resource-permissions HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/admin/roles/{id}/resource-permissions

Body parameter

{
  "permission_ids": [
    "string"
  ]
}

Parameters

Name In Type Required Description
id path string true Role ID
body body resource.SetRolePermissionsInput true Permission IDs
» permission_ids body [string] true none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
500 Internal Server Error Internal Server Error Inline

Response Schema

Admin - Federation

List all federation providers

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/admin/federation \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET https://auth.nhsoul.fr/api/v1/admin/federation HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/admin/federation

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
500 Internal Server Error Internal Server Error Inline

Response Schema

Create a federation provider

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/admin/federation \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST https://auth.nhsoul.fr/api/v1/admin/federation HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/admin/federation

Body parameter

{}

Parameters

Name In Type Required Description
body body federation.CreateProviderInput true Provider creation payload

Example responses

201 Response

{}

Responses

Status Meaning Description Schema
201 Created Created Inline
400 Bad Request Bad Request Inline
500 Internal Server Error Internal Server Error Inline

Response Schema

Get a single federation provider

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/admin/federation/{id} \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET https://auth.nhsoul.fr/api/v1/admin/federation/{id} HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/admin/federation/{id}

Parameters

Name In Type Required Description
id path string true Provider ID

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
404 Not Found Not Found Inline

Response Schema

Delete a federation provider

Code samples

# You can also use wget
curl -X DELETE https://auth.nhsoul.fr/api/v1/admin/federation/{id} \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

DELETE https://auth.nhsoul.fr/api/v1/admin/federation/{id} HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

DELETE /api/v1/admin/federation/{id}

Parameters

Name In Type Required Description
id path string true Provider ID

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
404 Not Found Not Found Inline

Response Schema

Update a federation provider

Code samples

# You can also use wget
curl -X PATCH https://auth.nhsoul.fr/api/v1/admin/federation/{id} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

PATCH https://auth.nhsoul.fr/api/v1/admin/federation/{id} HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

PATCH /api/v1/admin/federation/{id}

Body parameter

{}

Parameters

Name In Type Required Description
id path string true Provider ID
body body federation.UpdateProviderInput true Provider update payload

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
404 Not Found Not Found Inline

Response Schema

Admin - Invitations

List invitations

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/admin/invitations \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET https://auth.nhsoul.fr/api/v1/admin/invitations HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/admin/invitations

Parameters

Name In Type Required Description
page query integer false Page number
per_page query integer false Items per page

Example responses

200 Response

{
  "data": null,
  "page": 0,
  "per_page": 0,
  "total": 0,
  "total_pages": 0
}

Responses

Status Meaning Description Schema
200 OK OK pkg.PaginatedResponse
500 Internal Server Error Internal Server Error Inline

Response Schema

Create an invitation

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/admin/invitations \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST https://auth.nhsoul.fr/api/v1/admin/invitations HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/admin/invitations

Body parameter

{
  "email": "string",
  "role_ids": [
    "string"
  ]
}

Parameters

Name In Type Required Description
body body invitation.CreateInput true Invitation creation payload
» email body string true none
» role_ids body [string] false none

Example responses

201 Response

{}

Responses

Status Meaning Description Schema
201 Created Created Inline
400 Bad Request Bad Request Inline
401 Unauthorized Unauthorized Inline
500 Internal Server Error Internal Server Error Inline

Response Schema

Delete an invitation

Code samples

# You can also use wget
curl -X DELETE https://auth.nhsoul.fr/api/v1/admin/invitations/{id} \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

DELETE https://auth.nhsoul.fr/api/v1/admin/invitations/{id} HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

DELETE /api/v1/admin/invitations/{id}

Parameters

Name In Type Required Description
id path string true Invitation ID

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
404 Not Found Not Found Inline

Response Schema

Admin - Keys

List signing keys

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/admin/keys \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET https://auth.nhsoul.fr/api/v1/admin/keys HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/admin/keys

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
401 Unauthorized Unauthorized Inline

Response Schema

Rotate the signing key

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/admin/keys/rotate \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST https://auth.nhsoul.fr/api/v1/admin/keys/rotate HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

POST /api/v1/admin/keys/rotate

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
401 Unauthorized Unauthorized Inline
500 Internal Server Error Internal Server Error Inline

Response Schema

Admin - Password Policy

Get the active password policy (admin)

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/admin/password-policy \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET https://auth.nhsoul.fr/api/v1/admin/password-policy HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/admin/password-policy

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline

Response Schema

Replace the password policy

Code samples

# You can also use wget
curl -X PATCH https://auth.nhsoul.fr/api/v1/admin/password-policy \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

PATCH https://auth.nhsoul.fr/api/v1/admin/password-policy HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

PATCH /api/v1/admin/password-policy

Body parameter

{
  "max_length": 0,
  "min_length": 0,
  "min_score": 0,
  "require_digit": true,
  "require_lowercase": true,
  "require_symbol": true,
  "require_uppercase": true
}

Parameters

Name In Type Required Description
body body password.Policy true Full policy
» max_length body integer false none
» min_length body integer false none
» min_score body integer false none
» require_digit body boolean false none
» require_lowercase body boolean false none
» require_symbol body boolean false none
» require_uppercase body boolean false none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline

Response Schema

Admin - RBAC

List all permissions

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/admin/permissions \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET https://auth.nhsoul.fr/api/v1/admin/permissions HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/admin/permissions

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
500 Internal Server Error Internal Server Error Inline

Response Schema

List all roles

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/admin/roles \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET https://auth.nhsoul.fr/api/v1/admin/roles HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/admin/roles

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
500 Internal Server Error Internal Server Error Inline

Response Schema

Create a new role

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/admin/roles \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST https://auth.nhsoul.fr/api/v1/admin/roles HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/admin/roles

Body parameter

{
  "description": "string",
  "name": "string"
}

Parameters

Name In Type Required Description
body body rbac.CreateRoleInput true Role creation payload
» description body string false none
» name body string true none

Example responses

201 Response

{}

Responses

Status Meaning Description Schema
201 Created Created Inline
400 Bad Request Bad Request Inline
500 Internal Server Error Internal Server Error Inline

Response Schema

Get a role by ID

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/admin/roles/{id} \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET https://auth.nhsoul.fr/api/v1/admin/roles/{id} HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/admin/roles/{id}

Parameters

Name In Type Required Description
id path string true Role ID

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
404 Not Found Not Found Inline

Response Schema

Delete a role

Code samples

# You can also use wget
curl -X DELETE https://auth.nhsoul.fr/api/v1/admin/roles/{id} \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

DELETE https://auth.nhsoul.fr/api/v1/admin/roles/{id} HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

DELETE /api/v1/admin/roles/{id}

Parameters

Name In Type Required Description
id path string true Role ID

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
404 Not Found Not Found Inline

Response Schema

Update a role

Code samples

# You can also use wget
curl -X PATCH https://auth.nhsoul.fr/api/v1/admin/roles/{id} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

PATCH https://auth.nhsoul.fr/api/v1/admin/roles/{id} HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

PATCH /api/v1/admin/roles/{id}

Body parameter

{
  "description": "string",
  "name": "string"
}

Parameters

Name In Type Required Description
id path string true Role ID
body body rbac.UpdateRoleInput true Role update payload
» description body string false none
» name body string false none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
404 Not Found Not Found Inline

Response Schema

Set permissions for a role

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/admin/roles/{id}/permissions \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST https://auth.nhsoul.fr/api/v1/admin/roles/{id}/permissions HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/admin/roles/{id}/permissions

Body parameter

{
  "permission_ids": [
    "string"
  ]
}

Parameters

Name In Type Required Description
id path string true Role ID
body body rbac.SetPermissionsInput true Permissions payload
» permission_ids body [string] true none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
404 Not Found Not Found Inline

Response Schema

Get roles assigned to a user

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/admin/users/{id}/roles \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET https://auth.nhsoul.fr/api/v1/admin/users/{id}/roles HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/admin/users/{id}/roles

Parameters

Name In Type Required Description
id path string true User ID

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
500 Internal Server Error Internal Server Error Inline

Response Schema

Assign a role to a user

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/admin/users/{id}/roles \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST https://auth.nhsoul.fr/api/v1/admin/users/{id}/roles HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/admin/users/{id}/roles

Body parameter

{
  "role_id": "string"
}

Parameters

Name In Type Required Description
id path string true User ID
body body rbac.AssignRoleInput true Role assignment payload
» role_id body string true none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
500 Internal Server Error Internal Server Error Inline

Response Schema

Remove a role from a user

Code samples

# You can also use wget
curl -X DELETE https://auth.nhsoul.fr/api/v1/admin/users/{id}/roles/{roleId} \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

DELETE https://auth.nhsoul.fr/api/v1/admin/users/{id}/roles/{roleId} HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

DELETE /api/v1/admin/users/{id}/roles/{roleId}

Parameters

Name In Type Required Description
id path string true User ID
roleId path string true Role ID

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
404 Not Found Not Found Inline

Response Schema

Admin - Policies

List all policies

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/admin/policies \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET https://auth.nhsoul.fr/api/v1/admin/policies HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/admin/policies

Parameters

Name In Type Required Description
type query string false Filter by policy type

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
500 Internal Server Error Internal Server Error Inline

Response Schema

Create a new policy

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/admin/policies \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST https://auth.nhsoul.fr/api/v1/admin/policies HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/admin/policies

Body parameter

{
  "active": true,
  "description": "string",
  "name": "string",
  "priority": 0,
  "rego": "string",
  "type": "token_issuance"
}

Parameters

Name In Type Required Description
body body policy.CreatePolicyInput true Policy creation payload
» active body boolean false none
» description body string false none
» name body string true none
» priority body integer false none
» rego body string true none
» type body string true none

Enumerated Values

Parameter Value
» type token_issuance
» type login
» type client_auth
» type admin_api
» type consent
» type refresh
» type introspect
» type device_approval
» type mfa
» type account_action
» type custom

Example responses

201 Response

{}

Responses

Status Meaning Description Schema
201 Created Created Inline
400 Bad Request Bad Request Inline
409 Conflict Conflict Inline

Response Schema

Re-evaluate a past denial against current policies

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/admin/policies/replay \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST https://auth.nhsoul.fr/api/v1/admin/policies/replay HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/admin/policies/replay

Body parameter

{}

Parameters

Name In Type Required Description
body body object true Replay payload {audit_log_id}

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
404 Not Found Not Found Inline

Response Schema

Per-type input/modify field catalog for autocomplete

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/admin/policies/schemas \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET https://auth.nhsoul.fr/api/v1/admin/policies/schemas HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/admin/policies/schemas

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline

Response Schema

Aggregated stats on policy denials

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/admin/policies/stats \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET https://auth.nhsoul.fr/api/v1/admin/policies/stats HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/admin/policies/stats

Parameters

Name In Type Required Description
days query integer false Window size in days (default 7)
limit query integer false Top-N + recent items cap (default 10)

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline

Response Schema

Test a Rego policy with sample input

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/admin/policies/test \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST https://auth.nhsoul.fr/api/v1/admin/policies/test HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/admin/policies/test

Body parameter

{
  "input": {
    "property1": null,
    "property2": null
  },
  "rego": "string"
}

Parameters

Name In Type Required Description
body body policy.TestPolicyInput true Test payload
» input body object true none
»» additionalProperties body any false none
» rego body string true none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline

Response Schema

Validate Rego syntax

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/admin/policies/validate \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST https://auth.nhsoul.fr/api/v1/admin/policies/validate HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/admin/policies/validate

Body parameter

{
  "property1": "string",
  "property2": "string"
}

Parameters

Name In Type Required Description
body body object true Rego code
» additionalProperties body string false none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline

Response Schema

Get a policy by ID

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/admin/policies/{id} \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET https://auth.nhsoul.fr/api/v1/admin/policies/{id} HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/admin/policies/{id}

Parameters

Name In Type Required Description
id path string true Policy ID

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
404 Not Found Not Found Inline

Response Schema

Delete a policy

Code samples

# You can also use wget
curl -X DELETE https://auth.nhsoul.fr/api/v1/admin/policies/{id} \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

DELETE https://auth.nhsoul.fr/api/v1/admin/policies/{id} HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

DELETE /api/v1/admin/policies/{id}

Parameters

Name In Type Required Description
id path string true Policy ID

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
404 Not Found Not Found Inline

Response Schema

Update a policy

Code samples

# You can also use wget
curl -X PATCH https://auth.nhsoul.fr/api/v1/admin/policies/{id} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

PATCH https://auth.nhsoul.fr/api/v1/admin/policies/{id} HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

PATCH /api/v1/admin/policies/{id}

Body parameter

{
  "active": true,
  "description": "string",
  "name": "string",
  "priority": 0,
  "rego": "string"
}

Parameters

Name In Type Required Description
id path string true Policy ID
body body policy.UpdatePolicyInput true Policy update payload
» active body boolean false none
» description body string false none
» name body string false none
» priority body integer false none
» rego body string false none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
404 Not Found Not Found Inline

Response Schema

Admin - Settings

Get all application settings

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/admin/settings \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET https://auth.nhsoul.fr/api/v1/admin/settings HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/admin/settings

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
500 Internal Server Error Internal Server Error Inline

Response Schema

Update application settings

Code samples

# You can also use wget
curl -X PATCH https://auth.nhsoul.fr/api/v1/admin/settings \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

PATCH https://auth.nhsoul.fr/api/v1/admin/settings HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

PATCH /api/v1/admin/settings

Body parameter

{
  "default_access_token_ttl": 0,
  "default_id_token_ttl": 0,
  "default_post_register_redirect_url": "string",
  "default_refresh_token_ttl": 0,
  "default_session_extended_ttl": 0,
  "default_session_ttl": 0,
  "invitations_default_role": "string",
  "registration_email_verification_required": true,
  "registration_enabled": true
}

Parameters

Name In Type Required Description
body body invitation.UpdateSettingsInput true Settings update payload
» default_access_token_ttl body integer false none
» default_id_token_ttl body integer false none
» default_post_register_redirect_url body string false none
» default_refresh_token_ttl body integer false none
» default_session_extended_ttl body integer false none
» default_session_ttl body integer false none
» invitations_default_role body string false none
» registration_email_verification_required body boolean false none
» registration_enabled body boolean false none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
500 Internal Server Error Internal Server Error Inline

Response Schema

Admin - Users

List all users

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/admin/users \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET https://auth.nhsoul.fr/api/v1/admin/users HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/admin/users

Parameters

Name In Type Required Description
page query integer false Page number
per_page query integer false Items per page

Example responses

200 Response

{
  "data": null,
  "page": 0,
  "per_page": 0,
  "total": 0,
  "total_pages": 0
}

Responses

Status Meaning Description Schema
200 OK OK pkg.PaginatedResponse
401 Unauthorized Unauthorized pkg.AppError
500 Internal Server Error Internal Server Error pkg.AppError

Get a user by ID

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/admin/users/{id} \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET https://auth.nhsoul.fr/api/v1/admin/users/{id} HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/admin/users/{id}

Parameters

Name In Type Required Description
id path string true User ID (UUID)

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request pkg.AppError
401 Unauthorized Unauthorized pkg.AppError
404 Not Found Not Found pkg.AppError

Response Schema

Delete a user by ID

Code samples

# You can also use wget
curl -X DELETE https://auth.nhsoul.fr/api/v1/admin/users/{id} \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

DELETE https://auth.nhsoul.fr/api/v1/admin/users/{id} HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

DELETE /api/v1/admin/users/{id}

Parameters

Name In Type Required Description
id path string true User ID (UUID)

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request pkg.AppError
401 Unauthorized Unauthorized pkg.AppError
404 Not Found Not Found pkg.AppError

Response Schema

Update a user by ID

Code samples

# You can also use wget
curl -X PATCH https://auth.nhsoul.fr/api/v1/admin/users/{id} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

PATCH https://auth.nhsoul.fr/api/v1/admin/users/{id} HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

PATCH /api/v1/admin/users/{id}

Body parameter

{
  "active": true,
  "display_name": "string",
  "email": "string",
  "email_verified": true
}

Parameters

Name In Type Required Description
id path string true User ID (UUID)
body body user.AdminUpdateInput true Fields to update
» active body boolean false none
» display_name body string false none
» email body string false none
» email_verified body boolean false none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request pkg.AppError
401 Unauthorized Unauthorized pkg.AppError
404 Not Found Not Found pkg.AppError

Response Schema

Send a password reset email to the target user

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/admin/users/{id}/reset-password \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST https://auth.nhsoul.fr/api/v1/admin/users/{id}/reset-password HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

POST /api/v1/admin/users/{id}/reset-password

Parameters

Name In Type Required Description
id path string true User ID (UUID)

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request pkg.AppError
401 Unauthorized Unauthorized pkg.AppError
404 Not Found Not Found pkg.AppError

Response Schema

Federation

Finalise a federation signup by setting the local password

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/auth/federation/complete-signup \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST https://auth.nhsoul.fr/api/v1/auth/federation/complete-signup HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/auth/federation/complete-signup

Body parameter

{
  "display_name": "string",
  "extra_fields": {
    "property1": null,
    "property2": null
  },
  "password": "string",
  "token": "string"
}

Parameters

Name In Type Required Description
body body federation.CompleteSignupHTTPInput true Pending signup token + chosen password
» display_name body string false none
» extra_fields body object false none
»» additionalProperties body any false none
» password body string true none
» token body string true none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline

Response Schema

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/auth/federation/confirm-link \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST https://auth.nhsoul.fr/api/v1/auth/federation/confirm-link HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/auth/federation/confirm-link

Body parameter

{
  "password": "string",
  "token": "string"
}
Name In Type Required Description
body body federation.ConfirmLinkInput true Pending link token + local password
» password body string true none
» token body string true none

Example responses

200 Response

{}
Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
401 Unauthorized Unauthorized Inline

Read-only view of a pending federation signup

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/auth/federation/pending-signup?token=string \
  -H 'Accept: application/json'

GET https://auth.nhsoul.fr/api/v1/auth/federation/pending-signup?token=string HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/auth/federation/pending-signup

Parameters

Name In Type Required Description
token query string true Pending signup token from /complete-account redirect

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline

Response Schema

Initiate social login via a federation provider

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/auth/federation/{provider} \
  -H 'Accept: */*'

GET https://auth.nhsoul.fr/api/v1/auth/federation/{provider} HTTP/1.1
Host: auth.nhsoul.fr
Accept: */*

GET /api/v1/auth/federation/{provider}

Parameters

Name In Type Required Description
provider path string true Provider name
return_to query string false Absolute URL to redirect to after success
oauth_request_id query string false Continuation: in-progress OrionAuth authorize request ID
invitation_token query string false Pre-bind a social signup to an invitation

Example responses

400 Response

Responses

Status Meaning Description Schema
302 Found Found None
400 Bad Request Bad Request Inline
404 Not Found Not Found Inline

Response Schema

Handle federation provider callback

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/auth/federation/{provider}/callback?code=string&state=string \
  -H 'Accept: */*'

GET https://auth.nhsoul.fr/api/v1/auth/federation/{provider}/callback?code=string&state=string HTTP/1.1
Host: auth.nhsoul.fr
Accept: */*

GET /api/v1/auth/federation/{provider}/callback

Parameters

Name In Type Required Description
provider path string true Provider name
code query string true Authorization code from provider
state query string true State previously generated by InitSocialLogin

Example responses

400 Response

Responses

Status Meaning Description Schema
302 Found Found None
400 Bad Request Bad Request Inline
500 Internal Server Error Internal Server Error Inline

Response Schema

List linked federation accounts for the current user

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/me/linked-accounts \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET https://auth.nhsoul.fr/api/v1/me/linked-accounts HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/me/linked-accounts

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
401 Unauthorized Unauthorized Inline
500 Internal Server Error Internal Server Error Inline

Response Schema

Get a single linked federation account

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/me/linked-accounts/{id} \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET https://auth.nhsoul.fr/api/v1/me/linked-accounts/{id} HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/me/linked-accounts/{id}

Parameters

Name In Type Required Description
id path string true Linked account ID

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
401 Unauthorized Unauthorized Inline
404 Not Found Not Found Inline

Response Schema

Code samples

# You can also use wget
curl -X DELETE https://auth.nhsoul.fr/api/v1/me/linked-accounts/{id} \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

DELETE https://auth.nhsoul.fr/api/v1/me/linked-accounts/{id} HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

DELETE /api/v1/me/linked-accounts/{id}

Name In Type Required Description
id path string true Linked account ID

Example responses

200 Response

{}
Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
401 Unauthorized Unauthorized Inline

Start linking a federation account to the current user

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/me/linked-accounts/{provider}/begin-link \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST https://auth.nhsoul.fr/api/v1/me/linked-accounts/{provider}/begin-link HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/me/linked-accounts/{provider}/begin-link

Body parameter

{
  "return_to": "string"
}

Parameters

Name In Type Required Description
provider path string true Provider name
body body federation.BeginLinkAccountInput false Optional return_to
» return_to body string false ReturnTo is the URL the AuthUI wants the user to land on after the

Detailed descriptions

» return_to: ReturnTo is the URL the AuthUI wants the user to land on after the provider callback completes (must be same-origin with the AuthUI base). Defaults to AuthUI /linked-accounts when empty.

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
401 Unauthorized Unauthorized Inline
403 Forbidden Forbidden Inline
404 Not Found Not Found Inline

Response Schema

Auth

Request a password reset email

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/auth/forgot-password \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST https://auth.nhsoul.fr/api/v1/auth/forgot-password HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/auth/forgot-password

Body parameter

{
  "email": "string"
}

Parameters

Name In Type Required Description
body body user.ForgotPasswordInput true Email address
» email body string true none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request pkg.AppError

Response Schema

Authenticate a user

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/auth/login \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST https://auth.nhsoul.fr/api/v1/auth/login HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/auth/login

Body parameter

{
  "email": "string",
  "password": "string"
}

Parameters

Name In Type Required Description
body body user.LoginInput true Login credentials
» email body string true none
» password body string true none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request pkg.AppError
401 Unauthorized Unauthorized pkg.AppError

Response Schema

Register a new user

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/auth/register \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST https://auth.nhsoul.fr/api/v1/auth/register HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/auth/register

Body parameter

{
  "display_name": "string",
  "email": "string",
  "extra_fields": {
    "property1": null,
    "property2": null
  },
  "password": "string"
}

Parameters

Name In Type Required Description
body body user.RegisterInput true Registration payload
» display_name body string false none
» email body string true none
» extra_fields body object false none
»» additionalProperties body any false none
» password body string true none

Example responses

201 Response

{}

Responses

Status Meaning Description Schema
201 Created Created Inline
400 Bad Request Bad Request pkg.AppError
403 Forbidden Forbidden pkg.AppError
409 Conflict Conflict pkg.AppError

Response Schema

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/auth/resend-verification \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST https://auth.nhsoul.fr/api/v1/auth/resend-verification HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/auth/resend-verification

Anti-enumeration: always returns 200 even when the email is unknown or already verified.

Body parameter

{
  "email": "string",
  "oauth_request_id": "string"
}
Name In Type Required Description
body body user.ResendVerificationInput true Email + optional oauth_request_id
» email body string true none
» oauth_request_id body string false none

Example responses

200 Response

{}
Status Meaning Description Schema
200 OK OK Inline

Reset password using a token

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/auth/reset-password \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST https://auth.nhsoul.fr/api/v1/auth/reset-password HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/auth/reset-password

Body parameter

{
  "new_password": "string",
  "token": "string"
}

Parameters

Name In Type Required Description
body body user.ResetPasswordInput true Reset token and new password
» new_password body string true none
» token body string true none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request pkg.AppError

Response Schema

Consume a verification action token (one-click)

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/auth/verify-email?token=string \
  -H 'Accept: text/html'

GET https://auth.nhsoul.fr/api/v1/auth/verify-email?token=string HTTP/1.1
Host: auth.nhsoul.fr
Accept: text/html

GET /api/v1/auth/verify-email

Parameters

Name In Type Required Description
token query string true Action token (JWT)

Example responses

302 Response

"string"

Responses

Status Meaning Description Schema
302 Found Redirect to AuthUI error page string

Verify email address using a token

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/auth/verify-email \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST https://auth.nhsoul.fr/api/v1/auth/verify-email HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/auth/verify-email

Body parameter

{
  "token": "string"
}

Parameters

Name In Type Required Description
body body user.VerifyEmailInput true Verification token
» token body string true none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request pkg.AppError

Response Schema

Invitations

Resolve an invitation token without consuming it

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/auth/invitations/lookup?token=string \
  -H 'Accept: application/json'

GET https://auth.nhsoul.fr/api/v1/auth/invitations/lookup?token=string HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/auth/invitations/lookup

Parameters

Name In Type Required Description
token query string true Raw invitation token

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline
404 Not Found Not Found Inline

Response Schema

Register a new user with an invitation code

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/auth/register/invite \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST https://auth.nhsoul.fr/api/v1/auth/register/invite HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/auth/register/invite

Body parameter

{
  "display_name": "string",
  "password": "string",
  "token": "string"
}

Parameters

Name In Type Required Description
body body invitation.RegisterInviteInput true Registration payload
» display_name body string false none
» password body string true none
» token body string true none

Example responses

201 Response

{}

Responses

Status Meaning Description Schema
201 Created Created Inline
400 Bad Request Bad Request Inline
500 Internal Server Error Internal Server Error Inline

Response Schema

Get public registration settings

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/auth/settings \
  -H 'Accept: application/json'

GET https://auth.nhsoul.fr/api/v1/auth/settings HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/auth/settings

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline

Response Schema

M2M - Users

List users (paginated)

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/m2m/users \
  -H 'Accept: application/json'

GET https://auth.nhsoul.fr/api/v1/m2m/users HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/m2m/users

Parameters

Name In Type Required Description
page query integer false Page (default 1)
per_page query integer false Per page (default 20, max 100)

Example responses

200 Response

{
  "data": null,
  "page": 0,
  "per_page": 0,
  "total": 0,
  "total_pages": 0
}

Responses

Status Meaning Description Schema
200 OK OK pkg.PaginatedResponse

Create a user

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/m2m/users \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST https://auth.nhsoul.fr/api/v1/m2m/users HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/m2m/users

Body parameter

{
  "active": true,
  "avatar_url": "string",
  "display_name": "string",
  "email": "string",
  "email_verified": true,
  "metadata": {
    "address": {
      "country": "string",
      "formatted": "string",
      "locality": "string",
      "postal_code": "string",
      "region": "string",
      "street_address": "string"
    },
    "birthdate": "string",
    "family_name": "string",
    "gender": "string",
    "given_name": "string",
    "locale": "string",
    "middle_name": "string",
    "nickname": "string",
    "phone_number_verified": true,
    "preferred_username": "string",
    "profile": "string",
    "website": "string",
    "zoneinfo": "string"
  },
  "password": "string",
  "phone": "string",
  "role_ids": [
    "string"
  ]
}

Parameters

Name In Type Required Description
body body m2m.CreateUserInput true User to create
» active body boolean false none
» avatar_url body string false none
» display_name body string false none
» email body string true none
» email_verified body boolean false none
» metadata body model.ProfileMetadata false none
»» address body model.AddressClaim false none
»»» country body string false none
»»» formatted body string false none
»»» locality body string false none
»»» postal_code body string false none
»»» region body string false none
»»» street_address body string false none
»» birthdate body string false none
»» family_name body string false none
»» gender body string false none
»» given_name body string false none
»» locale body string false none
»» middle_name body string false none
»» nickname body string false none
»» phone_number_verified body boolean false none
»» preferred_username body string false none
»» profile body string false none
»» website body string false none
»» zoneinfo body string false none
» password body string false none
» phone body string false none
» role_ids body [string] false none

Example responses

201 Response

{
  "generated_password": "string",
  "user": {
    "property1": null,
    "property2": null
  }
}

Responses

Status Meaning Description Schema
201 Created Created m2m.CreateUserResult

Get a user by id

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/m2m/users/{id} \
  -H 'Accept: application/json'

GET https://auth.nhsoul.fr/api/v1/m2m/users/{id} HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/m2m/users/{id}

Parameters

Name In Type Required Description
id path string true User id

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline

Response Schema

Delete a user

Code samples

# You can also use wget
curl -X DELETE https://auth.nhsoul.fr/api/v1/m2m/users/{id} \
  -H 'Accept: */*'

DELETE https://auth.nhsoul.fr/api/v1/m2m/users/{id} HTTP/1.1
Host: auth.nhsoul.fr
Accept: */*

DELETE /api/v1/m2m/users/{id}

Parameters

Name In Type Required Description
id path string true User id

Example responses

200 Response

Responses

Status Meaning Description Schema
200 OK OK Inline

Response Schema

Update a user (any field except id)

Code samples

# You can also use wget
curl -X PATCH https://auth.nhsoul.fr/api/v1/m2m/users/{id} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

PATCH https://auth.nhsoul.fr/api/v1/m2m/users/{id} HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

PATCH /api/v1/m2m/users/{id}

Body parameter

{
  "active": true,
  "avatar_url": "string",
  "display_name": "string",
  "email": "string",
  "email_verified": true,
  "metadata": {
    "address": {
      "country": "string",
      "formatted": "string",
      "locality": "string",
      "postal_code": "string",
      "region": "string",
      "street_address": "string"
    },
    "birthdate": "string",
    "family_name": "string",
    "gender": "string",
    "given_name": "string",
    "locale": "string",
    "middle_name": "string",
    "nickname": "string",
    "phone_number_verified": true,
    "preferred_username": "string",
    "profile": "string",
    "website": "string",
    "zoneinfo": "string"
  },
  "phone": "string"
}

Parameters

Name In Type Required Description
id path string true User id
body body m2m.UpdateUserInput true Fields to update
» active body boolean false none
» avatar_url body string false none
» display_name body string false none
» email body string false none
» email_verified body boolean false none
» metadata body model.ProfileMetadata false none
»» address body model.AddressClaim false none
»»» country body string false none
»»» formatted body string false none
»»» locality body string false none
»»» postal_code body string false none
»»» region body string false none
»»» street_address body string false none
»» birthdate body string false none
»» family_name body string false none
»» gender body string false none
»» given_name body string false none
»» locale body string false none
»» middle_name body string false none
»» nickname body string false none
»» phone_number_verified body boolean false none
»» preferred_username body string false none
»» profile body string false none
»» website body string false none
»» zoneinfo body string false none
» phone body string false none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline

Response Schema

Force-disable TOTP MFA for a user

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/m2m/users/{id}/mfa/reset \
  -H 'Accept: */*'

POST https://auth.nhsoul.fr/api/v1/m2m/users/{id}/mfa/reset HTTP/1.1
Host: auth.nhsoul.fr
Accept: */*

POST /api/v1/m2m/users/{id}/mfa/reset

Parameters

Name In Type Required Description
id path string true User id

Example responses

200 Response

Responses

Status Meaning Description Schema
200 OK OK Inline

Response Schema

Set a user's password (no current-password check)

Code samples

# You can also use wget
curl -X PUT https://auth.nhsoul.fr/api/v1/m2m/users/{id}/password \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

PUT https://auth.nhsoul.fr/api/v1/m2m/users/{id}/password HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

PUT /api/v1/m2m/users/{id}/password

Body parameter

{
  "password": "string"
}

Parameters

Name In Type Required Description
id path string true User id
body body m2m.SetPasswordInput true New password
» password body string true none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline

Response Schema

Clear lock-out (failed_login_attempts + locked_until)

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/m2m/users/{id}/unlock \
  -H 'Accept: */*'

POST https://auth.nhsoul.fr/api/v1/m2m/users/{id}/unlock HTTP/1.1
Host: auth.nhsoul.fr
Accept: */*

POST /api/v1/m2m/users/{id}/unlock

Parameters

Name In Type Required Description
id path string true User id

Example responses

200 Response

Responses

Status Meaning Description Schema
200 OK OK Inline

Response Schema

Profile

Get the current user's profile

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/me \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET https://auth.nhsoul.fr/api/v1/me HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/me

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
401 Unauthorized Unauthorized pkg.AppError
404 Not Found Not Found pkg.AppError

Response Schema

Update the current user's profile

Code samples

# You can also use wget
curl -X PATCH https://auth.nhsoul.fr/api/v1/me \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

PATCH https://auth.nhsoul.fr/api/v1/me HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

PATCH /api/v1/me

Body parameter

{
  "avatar_url": "string",
  "display_name": "string",
  "metadata": {
    "address": {
      "country": "string",
      "formatted": "string",
      "locality": "string",
      "postal_code": "string",
      "region": "string",
      "street_address": "string"
    },
    "birthdate": "string",
    "family_name": "string",
    "gender": "string",
    "given_name": "string",
    "locale": "string",
    "middle_name": "string",
    "nickname": "string",
    "phone_number_verified": true,
    "preferred_username": "string",
    "profile": "string",
    "website": "string",
    "zoneinfo": "string"
  },
  "phone": "string"
}

Parameters

Name In Type Required Description
body body user.UpdateProfileInput true Profile fields to update
» avatar_url body string false none
» display_name body string false none
» metadata body model.ProfileMetadata false none
»» address body model.AddressClaim false none
»»» country body string false none
»»» formatted body string false none
»»» locality body string false none
»»» postal_code body string false none
»»» region body string false none
»»» street_address body string false none
»» birthdate body string false none
»» family_name body string false none
»» gender body string false none
»» given_name body string false none
»» locale body string false none
»» middle_name body string false none
»» nickname body string false none
»» phone_number_verified body boolean false none
»» preferred_username body string false none
»» profile body string false none
»» website body string false none
»» zoneinfo body string false none
» phone body string false none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request pkg.AppError
401 Unauthorized Unauthorized pkg.AppError

Response Schema

Resend the verification email for the authenticated user

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/me/resend-verification \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST https://auth.nhsoul.fr/api/v1/me/resend-verification HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

POST /api/v1/me/resend-verification

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request pkg.AppError
401 Unauthorized Unauthorized pkg.AppError

Response Schema

Account

Schedule own account deletion with grace period (step-up required)

Code samples

# You can also use wget
curl -X DELETE https://auth.nhsoul.fr/api/v1/me \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

DELETE https://auth.nhsoul.fr/api/v1/me HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

DELETE /api/v1/me

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline

Response Schema

Cancel a pending account deletion using the emailed token

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/me/account/cancel-deletion \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST https://auth.nhsoul.fr/api/v1/me/account/cancel-deletion HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/me/account/cancel-deletion

Body parameter

{
  "token": "string"
}

Parameters

Name In Type Required Description
body body account.CancelDeletionInput true token
» token body string true none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline

Response Schema

Request an email address change (step-up required)

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/me/account/email/change-request \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST https://auth.nhsoul.fr/api/v1/me/account/email/change-request HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/me/account/email/change-request

Body parameter

{
  "new_email": "string"
}

Parameters

Name In Type Required Description
body body account.ChangeEmailRequestInput true new email
» new_email body string true none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline

Response Schema

Confirm a pending email change with the token from the email

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/me/account/email/confirm \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST https://auth.nhsoul.fr/api/v1/me/account/email/confirm HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/me/account/email/confirm

Body parameter

{
  "token": "string"
}

Parameters

Name In Type Required Description
body body account.ConfirmEmailChangeInput true token
» token body string true none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline

Response Schema

List own passkeys

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/me/passkeys \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET https://auth.nhsoul.fr/api/v1/me/passkeys HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/me/passkeys

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline

Response Schema

Begin usernameless passkey login (public)

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/me/passkeys/login/begin \
  -H 'Accept: application/json'

POST https://auth.nhsoul.fr/api/v1/me/passkeys/login/begin HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

POST /api/v1/me/passkeys/login/begin

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK challenge_id (uuid) + options (PublicKeyCredentialRequestOptions JSON) Inline

Response Schema

Finish usernameless passkey login (public). Returns the user and passkey; caller is responsible for issuing a session.

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/me/passkeys/login/finish \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST https://auth.nhsoul.fr/api/v1/me/passkeys/login/finish HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/me/passkeys/login/finish

Body parameter

{
  "challenge_id": "string",
  "response": [
    0
  ]
}

Parameters

Name In Type Required Description
body body passkey.FinishLoginInput true challenge id + raw response
» challenge_id body string true none
» response body [integer] true none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline

Response Schema

Start a passkey-based reauth challenge

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/me/passkeys/reauth/begin \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST https://auth.nhsoul.fr/api/v1/me/passkeys/reauth/begin HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

POST /api/v1/me/passkeys/reauth/begin

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK challenge_id (uuid) + options (PublicKeyCredentialRequestOptions JSON) Inline

Response Schema

Start passkey registration

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/me/passkeys/register/begin \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST https://auth.nhsoul.fr/api/v1/me/passkeys/register/begin HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

POST /api/v1/me/passkeys/register/begin

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK challenge_id (uuid) + options (PublicKeyCredentialCreationOptions JSON) Inline

Response Schema

Finish passkey registration

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/me/passkeys/register/finish \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST https://auth.nhsoul.fr/api/v1/me/passkeys/register/finish HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/me/passkeys/register/finish

Body parameter

{
  "challenge_id": "string",
  "name": "string",
  "response": [
    0
  ]
}

Parameters

Name In Type Required Description
body body passkey.FinishRegistrationInput true challenge id + raw response
» challenge_id body string true none
» name body string false none
» response body [integer] true raw PublicKeyCredential JSON

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline

Response Schema

Delete a passkey (step-up required)

Code samples

# You can also use wget
curl -X DELETE https://auth.nhsoul.fr/api/v1/me/passkeys/{id} \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

DELETE https://auth.nhsoul.fr/api/v1/me/passkeys/{id} HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

DELETE /api/v1/me/passkeys/{id}

Parameters

Name In Type Required Description
id path string true Passkey ID

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline

Response Schema

Rename a passkey

Code samples

# You can also use wget
curl -X PATCH https://auth.nhsoul.fr/api/v1/me/passkeys/{id} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

PATCH https://auth.nhsoul.fr/api/v1/me/passkeys/{id} HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

PATCH /api/v1/me/passkeys/{id}

Body parameter

{
  "name": "string"
}

Parameters

Name In Type Required Description
id path string true Passkey ID
body body passkey.RenameInput true new name
» name body string true none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline

Response Schema

Change own password (step-up required)

Code samples

# You can also use wget
curl -X PUT https://auth.nhsoul.fr/api/v1/me/password \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

PUT https://auth.nhsoul.fr/api/v1/me/password HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

PUT /api/v1/me/password

Body parameter

{
  "current_password": "string",
  "new_password": "string"
}

Parameters

Name In Type Required Description
body body user.ChangePasswordInput true current + new password
» current_password body string true none
» new_password body string true none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline

Response Schema

Issue a short-lived step-up reauthentication token

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/me/reauth \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST https://auth.nhsoul.fr/api/v1/me/reauth HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/me/reauth

Validates a fresh credential (password, TOTP, backup code, or passkey assertion) and returns a single-use reauth token to use as X-Reauth-Token on sensitive endpoints.

Body parameter

{
  "code": "string",
  "method": "string",
  "passkey_challenge_id": "string",
  "passkey_response": [
    0
  ],
  "password": "string"
}

Parameters

Name In Type Required Description
body body reauth.IssueRequest true Credential payload
» code body string false TOTP or backup code
» method body string true none
» passkey_challenge_id body string false none
» passkey_response body [integer] false raw assertion JSON
» password body string false none

Example responses

200 Response

{
  "expires_at": "string",
  "method": "string",
  "reauth_token": "string"
}

Responses

Status Meaning Description Schema
200 OK OK reauth.IssueResponse
400 Bad Request Bad Request pkg.AppError
401 Unauthorized Unauthorized pkg.AppError

Finalise federation onboarding by setting the initial local password

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/me/set-password \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST https://auth.nhsoul.fr/api/v1/me/set-password HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/me/set-password

Body parameter

{
  "password": "string"
}

Parameters

Name In Type Required Description
body body account.SetInitialPasswordInput true new password
» password body string true none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request Inline

Response Schema

MFA

Regenerate MFA backup codes

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/me/mfa/backup-codes \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST https://auth.nhsoul.fr/api/v1/me/mfa/backup-codes HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/me/mfa/backup-codes

Body parameter

{
  "code": "string"
}

Parameters

Name In Type Required Description
body body mfa.BackupCodesInput true TOTP code for confirmation
» code body string true none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request pkg.AppError
401 Unauthorized Unauthorized pkg.AppError

Response Schema

Disable TOTP-based MFA

Code samples

# You can also use wget
curl -X DELETE https://auth.nhsoul.fr/api/v1/me/mfa/totp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

DELETE https://auth.nhsoul.fr/api/v1/me/mfa/totp HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

DELETE /api/v1/me/mfa/totp

Body parameter

{
  "code": "string"
}

Parameters

Name In Type Required Description
body body mfa.DisableInput true TOTP code for confirmation
» code body string true none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request pkg.AppError
401 Unauthorized Unauthorized pkg.AppError

Response Schema

Enroll in TOTP-based MFA

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/me/mfa/totp/enroll \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST https://auth.nhsoul.fr/api/v1/me/mfa/totp/enroll HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

POST /api/v1/me/mfa/totp/enroll

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
401 Unauthorized Unauthorized pkg.AppError
409 Conflict Conflict pkg.AppError

Response Schema

Verify TOTP code to activate MFA

Code samples

# You can also use wget
curl -X POST https://auth.nhsoul.fr/api/v1/me/mfa/totp/verify \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST https://auth.nhsoul.fr/api/v1/me/mfa/totp/verify HTTP/1.1
Host: auth.nhsoul.fr
Content-Type: application/json
Accept: application/json

POST /api/v1/me/mfa/totp/verify

Body parameter

{
  "code": "string"
}

Parameters

Name In Type Required Description
body body mfa.VerifyInput true TOTP code
» code body string true none

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request pkg.AppError
401 Unauthorized Unauthorized pkg.AppError

Response Schema

Sessions

List active sessions for the current user

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/me/sessions \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET https://auth.nhsoul.fr/api/v1/me/sessions HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/me/sessions

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
401 Unauthorized Unauthorized pkg.AppError
500 Internal Server Error Internal Server Error pkg.AppError

Response Schema

Revoke all sessions except the current one

Code samples

# You can also use wget
curl -X DELETE https://auth.nhsoul.fr/api/v1/me/sessions \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

DELETE https://auth.nhsoul.fr/api/v1/me/sessions HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

DELETE /api/v1/me/sessions

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
401 Unauthorized Unauthorized pkg.AppError
500 Internal Server Error Internal Server Error pkg.AppError

Response Schema

Revoke a specific session

Code samples

# You can also use wget
curl -X DELETE https://auth.nhsoul.fr/api/v1/me/sessions/{id} \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

DELETE https://auth.nhsoul.fr/api/v1/me/sessions/{id} HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

DELETE /api/v1/me/sessions/{id}

Parameters

Name In Type Required Description
id path string true Session ID (UUID)

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline
400 Bad Request Bad Request pkg.AppError
401 Unauthorized Unauthorized pkg.AppError
404 Not Found Not Found pkg.AppError

Response Schema

Password Policy

Get the active password policy

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/api/v1/password-policy \
  -H 'Accept: application/json'

GET https://auth.nhsoul.fr/api/v1/password-policy HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /api/v1/password-policy

Example responses

200 Response

{}

Responses

Status Meaning Description Schema
200 OK OK Inline

Response Schema

Health

Health check

Code samples

# You can also use wget
curl -X GET https://auth.nhsoul.fr/health \
  -H 'Accept: application/json'

GET https://auth.nhsoul.fr/health HTTP/1.1
Host: auth.nhsoul.fr
Accept: application/json

GET /health

Example responses

200 Response

{
  "property1": "string",
  "property2": "string"
}

Responses

Status Meaning Description Schema
200 OK OK Inline

Response Schema

Status Code 200

Name Type Required Restrictions Description
» additionalProperties string false none none

Schemas

account.CancelDeletionInput

{
  "token": "string"
}

Properties

Name Type Required Restrictions Description
token string true none none

account.ChangeEmailRequestInput

{
  "new_email": "string"
}

Properties

Name Type Required Restrictions Description
new_email string true none none

account.ConfirmEmailChangeInput

{
  "token": "string"
}

Properties

Name Type Required Restrictions Description
token string true none none

account.SetInitialPasswordInput

{
  "password": "string"
}

Properties

Name Type Required Restrictions Description
password string true none none

client.CreateInput

{
  "access_token_ttl": 0,
  "backchannel_logout_session_required": true,
  "backchannel_logout_uri": "string",
  "description": "string",
  "frontchannel_logout_session_required": true,
  "frontchannel_logout_uri": "string",
  "grant_types": [
    "string"
  ],
  "id_token_encrypted_response_alg": "string",
  "id_token_encrypted_response_enc": "string",
  "id_token_ttl": 0,
  "is_first_party": true,
  "is_public": true,
  "jwks_uri": "string",
  "name": "string",
  "post_logout_redirect_uris": [
    "string"
  ],
  "redirect_uris": [
    "string"
  ],
  "refresh_token_ttl": 0,
  "request_uris": [
    "string"
  ],
  "require_pkce": true,
  "response_types": [
    "string"
  ],
  "scopes": [
    "string"
  ],
  "sector_identifier_uri": "string",
  "subject_type": "string",
  "token_auth_method": "string",
  "userinfo_encrypted_response_alg": "string",
  "userinfo_encrypted_response_enc": "string",
  "userinfo_signed_response_alg": "string"
}

Properties

Name Type Required Restrictions Description
access_token_ttl integer false none none
backchannel_logout_session_required boolean false none none
backchannel_logout_uri string false none none
description string false none none
frontchannel_logout_session_required boolean false none none
frontchannel_logout_uri string false none none
grant_types [string] true none none
id_token_encrypted_response_alg string false none JWE encryption (OIDC Core §10.2 / §5.3.2)
id_token_encrypted_response_enc string false none none
id_token_ttl integer false none none
is_first_party boolean false none none
is_public boolean false none none
jwks_uri string false none none
name string true none none
post_logout_redirect_uris [string] false none Logout (OIDC RP-Initiated / Front-Channel / Back-Channel Logout 1.0)
redirect_uris [string] true none none
refresh_token_ttl integer false none none
request_uris [string] false none none
require_pkce boolean false none none
response_types [string] false none none
scopes [string] true none none
sector_identifier_uri string false none none
subject_type string false none OIDC subject + signed UserInfo
token_auth_method string false none none
userinfo_encrypted_response_alg string false none none
userinfo_encrypted_response_enc string false none none
userinfo_signed_response_alg string false none none

client.UpdateInput

{
  "access_token_ttl": 0,
  "active": true,
  "backchannel_logout_session_required": true,
  "backchannel_logout_uri": "string",
  "description": "string",
  "frontchannel_logout_session_required": true,
  "frontchannel_logout_uri": "string",
  "grant_types": [
    "string"
  ],
  "id_token_encrypted_response_alg": "string",
  "id_token_encrypted_response_enc": "string",
  "id_token_ttl": 0,
  "is_first_party": true,
  "jwks_uri": "string",
  "name": "string",
  "post_logout_redirect_uris": [
    "string"
  ],
  "redirect_uris": [
    "string"
  ],
  "refresh_token_ttl": 0,
  "request_uris": [
    "string"
  ],
  "require_pkce": true,
  "response_types": [
    "string"
  ],
  "scopes": [
    "string"
  ],
  "sector_identifier_uri": "string",
  "subject_type": "string",
  "token_auth_method": "string",
  "userinfo_encrypted_response_alg": "string",
  "userinfo_encrypted_response_enc": "string",
  "userinfo_signed_response_alg": "string"
}

Properties

Name Type Required Restrictions Description
access_token_ttl integer false none none
active boolean false none none
backchannel_logout_session_required boolean false none none
backchannel_logout_uri string false none none
description string false none none
frontchannel_logout_session_required boolean false none none
frontchannel_logout_uri string false none none
grant_types [string] false none none
id_token_encrypted_response_alg string false none none
id_token_encrypted_response_enc string false none none
id_token_ttl integer false none none
is_first_party boolean false none none
jwks_uri string false none none
name string false none none
post_logout_redirect_uris [string] false none none
redirect_uris [string] false none none
refresh_token_ttl integer false none none
request_uris [string] false none none
require_pkce boolean false none none
response_types [string] false none none
scopes [string] false none none
sector_identifier_uri string false none none
subject_type string false none none
token_auth_method string false none none
userinfo_encrypted_response_alg string false none none
userinfo_encrypted_response_enc string false none none
userinfo_signed_response_alg string false none none

federation.BeginLinkAccountInput

{
  "return_to": "string"
}

Properties

Name Type Required Restrictions Description
return_to string false none ReturnTo is the URL the AuthUI wants the user to land on after the
provider callback completes (must be same-origin with the AuthUI base).
Defaults to AuthUI /linked-accounts when empty.

federation.CompleteSignupHTTPInput

{
  "display_name": "string",
  "extra_fields": {
    "property1": null,
    "property2": null
  },
  "password": "string",
  "token": "string"
}

Properties

Name Type Required Restrictions Description
display_name string false none none
extra_fields object false none none
» additionalProperties any false none none
password string true none none
token string true none none

federation.ConfirmLinkInput

{
  "password": "string",
  "token": "string"
}

Properties

Name Type Required Restrictions Description
password string true none none
token string true none none

federation.CreateProviderInput

{}

Properties

None

federation.UpdateProviderInput

{}

Properties

None

invitation.CreateInput

{
  "email": "string",
  "role_ids": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
email string true none none
role_ids [string] false none none

invitation.RegisterInviteInput

{
  "display_name": "string",
  "password": "string",
  "token": "string"
}

Properties

Name Type Required Restrictions Description
display_name string false none none
password string true none none
token string true none none

invitation.UpdateSettingsInput

{
  "default_access_token_ttl": 0,
  "default_id_token_ttl": 0,
  "default_post_register_redirect_url": "string",
  "default_refresh_token_ttl": 0,
  "default_session_extended_ttl": 0,
  "default_session_ttl": 0,
  "invitations_default_role": "string",
  "registration_email_verification_required": true,
  "registration_enabled": true
}

Properties

Name Type Required Restrictions Description
default_access_token_ttl integer false none none
default_id_token_ttl integer false none none
default_post_register_redirect_url string false none none
default_refresh_token_ttl integer false none none
default_session_extended_ttl integer false none none
default_session_ttl integer false none none
invitations_default_role string false none none
registration_email_verification_required boolean false none none
registration_enabled boolean false none none

m2m.CreateUserInput

{
  "active": true,
  "avatar_url": "string",
  "display_name": "string",
  "email": "string",
  "email_verified": true,
  "metadata": {
    "address": {
      "country": "string",
      "formatted": "string",
      "locality": "string",
      "postal_code": "string",
      "region": "string",
      "street_address": "string"
    },
    "birthdate": "string",
    "family_name": "string",
    "gender": "string",
    "given_name": "string",
    "locale": "string",
    "middle_name": "string",
    "nickname": "string",
    "phone_number_verified": true,
    "preferred_username": "string",
    "profile": "string",
    "website": "string",
    "zoneinfo": "string"
  },
  "password": "string",
  "phone": "string",
  "role_ids": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
active boolean false none none
avatar_url string false none none
display_name string false none none
email string true none none
email_verified boolean false none none
metadata model.ProfileMetadata false none none
password string false none none
phone string false none none
role_ids [string] false none none

m2m.CreateUserResult

{
  "generated_password": "string",
  "user": {
    "property1": null,
    "property2": null
  }
}

Properties

Name Type Required Restrictions Description
generated_password string false none none
user object false none none
» additionalProperties any false none none

m2m.SetPasswordInput

{
  "password": "string"
}

Properties

Name Type Required Restrictions Description
password string true none none

m2m.UpdateUserInput

{
  "active": true,
  "avatar_url": "string",
  "display_name": "string",
  "email": "string",
  "email_verified": true,
  "metadata": {
    "address": {
      "country": "string",
      "formatted": "string",
      "locality": "string",
      "postal_code": "string",
      "region": "string",
      "street_address": "string"
    },
    "birthdate": "string",
    "family_name": "string",
    "gender": "string",
    "given_name": "string",
    "locale": "string",
    "middle_name": "string",
    "nickname": "string",
    "phone_number_verified": true,
    "preferred_username": "string",
    "profile": "string",
    "website": "string",
    "zoneinfo": "string"
  },
  "phone": "string"
}

Properties

Name Type Required Restrictions Description
active boolean false none none
avatar_url string false none none
display_name string false none none
email string false none none
email_verified boolean false none none
metadata model.ProfileMetadata false none none
phone string false none none

mfa.BackupCodesInput

{
  "code": "string"
}

Properties

Name Type Required Restrictions Description
code string true none none

mfa.DisableInput

{
  "code": "string"
}

Properties

Name Type Required Restrictions Description
code string true none none

mfa.VerifyInput

{
  "code": "string"
}

Properties

Name Type Required Restrictions Description
code string true none none

model.AddressClaim

{
  "country": "string",
  "formatted": "string",
  "locality": "string",
  "postal_code": "string",
  "region": "string",
  "street_address": "string"
}

Properties

Name Type Required Restrictions Description
country string false none none
formatted string false none none
locality string false none none
postal_code string false none none
region string false none none
street_address string false none none

model.ProfileMetadata

{
  "address": {
    "country": "string",
    "formatted": "string",
    "locality": "string",
    "postal_code": "string",
    "region": "string",
    "street_address": "string"
  },
  "birthdate": "string",
  "family_name": "string",
  "gender": "string",
  "given_name": "string",
  "locale": "string",
  "middle_name": "string",
  "nickname": "string",
  "phone_number_verified": true,
  "preferred_username": "string",
  "profile": "string",
  "website": "string",
  "zoneinfo": "string"
}

Properties

Name Type Required Restrictions Description
address model.AddressClaim false none none
birthdate string false none none
family_name string false none none
gender string false none none
given_name string false none none
locale string false none none
middle_name string false none none
nickname string false none none
phone_number_verified boolean false none none
preferred_username string false none none
profile string false none none
website string false none none
zoneinfo string false none none

oauth.AuthorizeConsentInput

{
  "request_id": "string",
  "scopes_granted": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
request_id string true none none
scopes_granted [string] true none none

oauth.AuthorizeLoginInput

{
  "email": "string",
  "password": "string",
  "remember_me": true,
  "request_id": "string"
}

Properties

Name Type Required Restrictions Description
email string true none none
password string true none none
remember_me boolean false none none
request_id string true none none

oauth.AuthorizeMFAInput

{
  "code": "string",
  "request_id": "string"
}

Properties

Name Type Required Restrictions Description
code string true none none
request_id string true none none

oauth.AuthorizeRegisterInput

{
  "display_name": "string",
  "email": "string",
  "extra_fields": {
    "property1": null,
    "property2": null
  },
  "password": "string",
  "request_id": "string"
}

Properties

Name Type Required Restrictions Description
display_name string false none none
email string true none none
extra_fields object false none none
» additionalProperties any false none none
password string true none none
request_id string true none none

oauth.DeviceVerifyInput

{
  "user_code": "string"
}

Properties

Name Type Required Restrictions Description
user_code string true none none

passkey.FinishLoginInput

{
  "challenge_id": "string",
  "response": [
    0
  ]
}

Properties

Name Type Required Restrictions Description
challenge_id string true none none
response [integer] true none none

passkey.FinishRegistrationInput

{
  "challenge_id": "string",
  "name": "string",
  "response": [
    0
  ]
}

Properties

Name Type Required Restrictions Description
challenge_id string true none none
name string false none none
response [integer] true none raw PublicKeyCredential JSON

passkey.RenameInput

{
  "name": "string"
}

Properties

Name Type Required Restrictions Description
name string true none none

password.Policy

{
  "max_length": 0,
  "min_length": 0,
  "min_score": 0,
  "require_digit": true,
  "require_lowercase": true,
  "require_symbol": true,
  "require_uppercase": true
}

Properties

Name Type Required Restrictions Description
max_length integer false none none
min_length integer false none none
min_score integer false none none
require_digit boolean false none none
require_lowercase boolean false none none
require_symbol boolean false none none
require_uppercase boolean false none none

pkg.AppError

{
  "code": "string",
  "message": "string"
}

Properties

Name Type Required Restrictions Description
code string false none none
message string false none none

pkg.PaginatedResponse

{
  "data": null,
  "page": 0,
  "per_page": 0,
  "total": 0,
  "total_pages": 0
}

Properties

Name Type Required Restrictions Description
data any false none none
page integer false none none
per_page integer false none none
total integer false none none
total_pages integer false none none

policy.CreatePolicyInput

{
  "active": true,
  "description": "string",
  "name": "string",
  "priority": 0,
  "rego": "string",
  "type": "token_issuance"
}

Properties

Name Type Required Restrictions Description
active boolean false none none
description string false none none
name string true none none
priority integer false none none
rego string true none none
type string true none none

Enumerated Values

Property Value
type token_issuance
type login
type client_auth
type admin_api
type consent
type refresh
type introspect
type device_approval
type mfa
type account_action
type custom

policy.TestPolicyInput

{
  "input": {
    "property1": null,
    "property2": null
  },
  "rego": "string"
}

Properties

Name Type Required Restrictions Description
input object true none none
» additionalProperties any false none none
rego string true none none

policy.UpdatePolicyInput

{
  "active": true,
  "description": "string",
  "name": "string",
  "priority": 0,
  "rego": "string"
}

Properties

Name Type Required Restrictions Description
active boolean false none none
description string false none none
name string false none none
priority integer false none none
rego string false none none

rbac.AssignRoleInput

{
  "role_id": "string"
}

Properties

Name Type Required Restrictions Description
role_id string true none none

rbac.CreateRoleInput

{
  "description": "string",
  "name": "string"
}

Properties

Name Type Required Restrictions Description
description string false none none
name string true none none

rbac.SetPermissionsInput

{
  "permission_ids": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
permission_ids [string] true none none

rbac.UpdateRoleInput

{
  "description": "string",
  "name": "string"
}

Properties

Name Type Required Restrictions Description
description string false none none
name string false none none

reauth.IssueRequest

{
  "code": "string",
  "method": "string",
  "passkey_challenge_id": "string",
  "passkey_response": [
    0
  ],
  "password": "string"
}

Properties

Name Type Required Restrictions Description
code string false none TOTP or backup code
method string true none none
passkey_challenge_id string false none none
passkey_response [integer] false none raw assertion JSON
password string false none none

reauth.IssueResponse

{
  "expires_at": "string",
  "method": "string",
  "reauth_token": "string"
}

Properties

Name Type Required Restrictions Description
expires_at string false none none
method string false none none
reauth_token string false none none

resource.AddPermissionInput

{
  "description": "string",
  "name": "string"
}

Properties

Name Type Required Restrictions Description
description string false none none
name string true none none

resource.CreateInput

{
  "access_token_ttl": 0,
  "description": "string",
  "identifier": "string",
  "name": "string",
  "signing_alg": "string",
  "token_format": "string"
}

Properties

Name Type Required Restrictions Description
access_token_ttl integer false none none
description string false none none
identifier string true none none
name string true none none
signing_alg string false none none
token_format string false none none

resource.SetClientPermissionsInput

{
  "permission_ids": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
permission_ids [string] true none none

resource.SetRolePermissionsInput

{
  "permission_ids": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
permission_ids [string] true none none

resource.UpdateInput

{
  "access_token_ttl": 0,
  "active": true,
  "description": "string",
  "name": "string",
  "signing_alg": "string",
  "token_format": "string"
}

Properties

Name Type Required Restrictions Description
access_token_ttl integer false none none
active boolean false none none
description string false none none
name string false none none
signing_alg string false none none
token_format string false none none

user.AdminUpdateInput

{
  "active": true,
  "display_name": "string",
  "email": "string",
  "email_verified": true
}

Properties

Name Type Required Restrictions Description
active boolean false none none
display_name string false none none
email string false none none
email_verified boolean false none none

user.ChangePasswordInput

{
  "current_password": "string",
  "new_password": "string"
}

Properties

Name Type Required Restrictions Description
current_password string true none none
new_password string true none none

user.ForgotPasswordInput

{
  "email": "string"
}

Properties

Name Type Required Restrictions Description
email string true none none

user.LoginInput

{
  "email": "string",
  "password": "string"
}

Properties

Name Type Required Restrictions Description
email string true none none
password string true none none

user.RegisterInput

{
  "display_name": "string",
  "email": "string",
  "extra_fields": {
    "property1": null,
    "property2": null
  },
  "password": "string"
}

Properties

Name Type Required Restrictions Description
display_name string false none none
email string true none none
extra_fields object false none none
» additionalProperties any false none none
password string true none none

user.ResendVerificationInput

{
  "email": "string",
  "oauth_request_id": "string"
}

Properties

Name Type Required Restrictions Description
email string true none none
oauth_request_id string false none none

user.ResetPasswordInput

{
  "new_password": "string",
  "token": "string"
}

Properties

Name Type Required Restrictions Description
new_password string true none none
token string true none none

user.UpdateProfileInput

{
  "avatar_url": "string",
  "display_name": "string",
  "metadata": {
    "address": {
      "country": "string",
      "formatted": "string",
      "locality": "string",
      "postal_code": "string",
      "region": "string",
      "street_address": "string"
    },
    "birthdate": "string",
    "family_name": "string",
    "gender": "string",
    "given_name": "string",
    "locale": "string",
    "middle_name": "string",
    "nickname": "string",
    "phone_number_verified": true,
    "preferred_username": "string",
    "profile": "string",
    "website": "string",
    "zoneinfo": "string"
  },
  "phone": "string"
}

Properties

Name Type Required Restrictions Description
avatar_url string false none none
display_name string false none none
metadata model.ProfileMetadata false none none
phone string false none none

user.VerifyEmailInput

{
  "token": "string"
}

Properties

Name Type Required Restrictions Description
token string true none none