| Status | Response Type | Description | 
|---|---|---|
| 200 | LoginMethods | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | Empty response | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | SignupMethods | |
| 500 | Signup disabled. | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | Empty response. User successfully confirmed. | |
| 400 | Invalid JSON body. | |
| 404 | Confirmation code not found. | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | Empty response. Successfully logged in. The X-Escape-Token cookie and header will both be set to a valid Escape Auth Token. | |
| 400 | Invalid JSON body. | |
| 401 | Wrong user and password combination. | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | Empty response. Request received. | |
| 400 | Invalid JSON body. | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | Empty response. Request received. | |
| 400 | Invalid JSON body. | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | User | Payload describes quality of password provided | 
| Status | Response Type | Description | 
|---|---|---|
| 500 | Server error. Probably an error in the communication between the user service and the notification service. | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | User | Signup successful. Returns created user. | 
| 400 | There was a problem with the request. Missing or invalid username; missing or weak password. | |
| 409 | The user already exists. | |
| 500 | Server error. Most likely signup is disabled. | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | Empty response. Successfully logged in. | |
| 302 | Redirect to complete OAuth flow or to use the redirect_url parameter set during login. | |
| 400 | Missing redeem-token parameter. | |
| 404 | Redeem token not found. | |
| 500 | Server side error. Possibly an error in the OAuth flow or session management. | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | Empty response. Successfully logged in. | |
| 302 | Redirect to complete OAuth flow, to use redirect_url parameter or to go to /app/signup if signups are disabled. | |
| 400 | Missing redeem-token parameter. | |
| 404 | Redeem token not found. | |
| 500 | Server side error. Possibly an error in the OAuth flow or session management. | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | User | |
| 400 | User error. User acccount is not managed by the "github" provider, invalid JSON body, username or email invalid. | |
| 404 | User not found. | |
| 500 | Server side error. Possibly an error in the OAuth flow, session management or signups might be disabled altogether. | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | EscapeAuthToken | |
| 400 | Missing redeem-token parameter. | |
| 404 | Redeem token not found. | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | Groups | Groups payload | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | Empty response. | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | The version of the user service | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | GetGroupsServiceAccountsResponse | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | GetGroupsUserResponse | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | ACLUser | |
| 401 | Invalid token. | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | The version of the user service | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | UserPlans | Plans payload | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | Empty response. | |
| 400 | Failed to read JSON body | |
| 409 | A plan with this name already exists | 
| /{plan}/ | 
 string 
 | 
          
          
| Status | Response Type | Description | 
|---|---|---|
| 200 | Empty response. | |
| 400 | Failed to read JSON body | |
| 404 | A plan with this name could not be found | 
| /{plan}/ | 
 string 
 | 
          
          
| Status | Response Type | Description | 
|---|---|---|
| 200 | Empty response. | |
| 404 | A plan with this name could not be found | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | Roles | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | Roles | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | Roles | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | Roles | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | Roles | 
| /{team}/ | 
 string 
 | 
          
          The team name. | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | ServiceAccounts | 
| /{team}/ | 
 string 
 | 
          
          The team this service account is part of. | ||
| /{username}/ | 
 string 
 | 
          
          The username of the new service account | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | Empty response. | 
| /{team}/ | 
 string 
 | 
          
          The team this service account is part of. | ||
| /{username}/ | 
 string 
 | 
          
          The username of the service account | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | EscapeAuthToken | 
| /{team}/ | 
 string 
 | 
          
          The team this service account is part of. | ||
| /{username}/ | 
 string 
 | 
          
          The username of the service account | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | EscapeAuthToken | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | Teams | Teams payload | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | Empty response. | |
| 400 | Invalid request. Most likely caused by a missing or invalid team name. | |
| 401 | The user is not allowed to create plans, because their Plan does not allow it. | |
| 409 | The team name already exists. | 
| /{team}/ | 
 string 
 | 
          
          The team name. | ||
| ?query= | 
 string 
 | 
          
          
| Status | Response Type | Description | 
|---|---|---|
| 200 | Teams | Teams payload | 
| /{team}/ | 
 string 
 | 
          
          The team name. | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | Team | Teams payload | 
| 401 | The user is not logged in and is not allowed to see this team. | |
| 403 | The user is not allowed to see this team. | |
| 404 | The team could not be found or the team is actually an internal Group. | 
| /{team}/ | 
 string 
 | 
          
          The team name. | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | Empty response. | |
| 401 | The user is not logged in and is not allowed to update this team. | |
| 403 | The user is not allowed to update this team. | |
| 404 | The team could not be found or the team is actually an internal Group. | 
| /{team}/ | 
 string 
 | 
          
          The team name. | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | Empty response. | |
| 401 | The user is not logged in and is not allowed to delete this team. | |
| 403 | The user is not allowed to delete this team. | |
| 404 | The team could not be found or the team is actually an internal Group. | 
| /{team}/ | 
 string 
 | 
          
          The team name. | ||
| /{username}/ | 
 string 
 | 
          
          The username to add. | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | Empty response. | |
| 400 | There was a problem with the request. Most like the permission was missing or invalid. | |
| 401 | The user is not logged in and is not allowed to configure this team. | |
| 403 | The user is not allowed to configure this team. | |
| 404 | The team could not be found or the team is actually an internal Group. | 
| /{team}/ | 
 string 
 | 
          
          The team name. | ||
| /{username}/ | 
 string 
 | 
          
          The username to add. | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | Empty response. | |
| 400 | There was a problem with the request. Most like the permission was missing or invalid. | |
| 401 | The user is not logged in and is not allowed to configure this team. | |
| 403 | The user is not allowed to configure this team. | |
| 404 | The team could not be found or the team is actually an internal Group. | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | Users | Users payload | 
| Status | Response Type | Description | 
|---|---|---|
| 200 | User | User payload | 
| ?query= | 
 string 
 | 
          
          
| Status | Response Type | Description | 
|---|---|---|
| 200 | 
 object 
 | 
          User payload | 
| /{user_id}/ | 
 string 
 | 
          
          
| Status | Response Type | Description | 
|---|---|---|
| 200 | Empty response. | 
| /{username}/ | 
 string 
 | 
          
          
| Status | Response Type | Description | 
|---|---|---|
| 200 | User | User payload | 
| /{username}/ | 
 string 
 | 
          
          
| Status | Response Type | Description | 
|---|---|---|
| 200 | Empty response. | 
| /{username}/ | 
 string 
 | 
          
          
| Status | Response Type | Description | 
|---|---|---|
| 200 | Empty response. | 
| /{username}/ | 
 string 
 | 
          
          
| Status | Response Type | Description | 
|---|---|---|
| 200 | Empty response. | 
| /{username}/ | 
 string 
 | 
          
          
| Status | Response Type | Description | 
|---|---|---|
| 200 | User | User's avatar image | 
| /{username}/ | 
 string 
 | 
          
          
| Status | Response Type | Description | 
|---|---|---|
| 200 | Empty response. | 
| /{username}/ | 
 string 
 | 
          
          
| Status | Response Type | Description | 
|---|---|---|
| 200 | Empty response. | 
| /{username}/ | 
 string 
 | 
          
          
| Status | Response Type | Description | 
|---|---|---|
| 200 | Empty response. | 
| Field | Type | Description | Example | |
|---|---|---|---|---|
| roles | 
 array 
 | 
                      The roles to assign | ||
| username | 
 string 
 | 
                      Username of user to recieve roles | 
| Field | Type | Description | Example | |
|---|---|---|---|---|
| group | 
 string 
 | 
                      The group to add the user to. If the group doesn't exist it will get created. | ||
| user_id | 
 string 
 | 
                      The user ID of the user to add. | 
| Field | Type | Description | Example | |
|---|---|---|---|---|
| redeem-token | 
 string 
 | 
                      Only set for OAuth2 logins. Use this as the redeem code for the redeem URL. | ||
| redeem-url | 
 string 
 | 
                      Only set for OAuth2 logins. The command line client uses this endpoint to fetch a valid Escape Auth Token after the User completes an successfully authenticates with an OAuth provider. | ||
| type | 
 enum 
 | 
                      The type of method (one of "secret-token", "oauth") | 
                           "secret-token" 
                          "oauth" 
                       | 
                    |
| url | 
 string 
 | 
                      The URL to use if this method were to be used. | 
| Field | Type | Description | Example | |
|---|---|---|---|---|
| group | 
 string 
 | 
                      Group | ||
| roles | 
 array 
 | 
                      Roles | ||
| username | 
 string 
 | 
                      Username | 
| Field | Type | Description | Example | |
|---|---|---|---|---|
| code | 
 string 
 | 
                      The email confirmation code. | 
| Field | Type | Description | Example | |
|---|---|---|---|---|
| 
 string 
 | 
                      The email address | |||
| secret_token | 
 string 
 | 
                      The password | ||
| username | 
 string 
 | 
                      Deprecated field which is only used in place of the email field if the email field is empty. Is treated as an email address though. | 
| Field | Type | Description | Example | |
|---|---|---|---|---|
| 
 string 
 | 
                      The email address | |||
| password | 
 string 
 | 
                      The password | ||
| username | 
 string 
 | 
                      The desired username | 
"4d5cc8fe-1bf5-40c7-8ce2-9b30b81784c9"
| Field | Type | Description | Example | |
|---|---|---|---|---|
| groups | GroupNames | 
{
    "description": "Internal group managed by EscapeKit.", 
    "is_internal": true, 
    "name": "my-group"
}
              | Field | Type | Description | Example | |
|---|---|---|---|---|
| description | 
 string 
 | 
                      The group's description (optional) | ||
| is_internal | 
 bool 
 | 
                      Internal groups are groups that are automatically created for e.g. the Inventory and State services when you create a project. They are "machine managed" and not visible to end users on their Teams page. | ||
| logo | 
 string 
 | 
                      The group's logo | ||
| name | 
 string 
 | 
                      The group name | ||
| role | 
 string 
 | 
                      User's role within the group. | 
"my-group"
| Field | Type | Description | Example | |
|---|---|---|---|---|
| name | 
 string 
 | 
                      The group name. | my-group | 
| Field | Type | Description | Example | |
|---|---|---|---|---|
| group | 
 string 
 | 
                      The group name. | my-group | 
[
    {
        "description": "Internal group managed by EscapeKit.", 
        "is_internal": true, 
        "name": "my-group"
    }, 
    {
        "description": "A team managed by some user.", 
        "is_internal": false, 
        "name": "my-team"
    }
]
              | Field | Type | Description | Example | |
|---|---|---|---|---|
| 
 string 
 | 
                      The email address | |||
| username | 
 string 
 | 
                      The desired username | 
| Field | Type | Description | Example | |
|---|---|---|---|---|
| password | 
 string 
 | 
                      The password | ||
| password_reset_token | 
 string 
 | 
                      The password reset token | 
| Field | Type | Description | Example | |
|---|---|---|---|---|
| 
 string 
 | 
                      The email address | 
| Field | Type | Description | Example | |
|---|---|---|---|---|
| permission | 
 enum 
 | 
                      A permission. One of read, write, owner. | 
                           "read" 
                          "write" 
                          "owner" 
                       | 
                    
| Field | Type | Description | Example | |
|---|---|---|---|---|
| groups | GroupNames | |||
| user_id | 
 string 
 | 
                      The user ID of the user to add. | 
| Field | Type | Description | Example | |
|---|---|---|---|---|
| name | 
 string 
 | 
                      |||
| team | 
 string 
 | 
                      
| Field | Type | Description | Example | |
|---|---|---|---|---|
| username | 
 string 
 | 
                      Username of user to delete softly | 
| Field | Type | Description | Example | |
|---|---|---|---|---|
| description | 
 string 
 | 
                      The Team's description | ||
| logo | 
 string 
 | 
                      The Team's logo | ||
| members | 
{ string : 
UserPermission
}
 | 
                      The team's members and their permission. | ||
| name | 
 string 
 | 
                      The Team name. | ||
| permission | 
 string 
 | 
                      The requesting user's permission on this Team. | 
| Field | Type | Description | Example | |
|---|---|---|---|---|
| description | 
 string 
 | 
                      The Team's description | ||
| logo | 
 string 
 | 
                      The Team's logo | ||
| name | 
 string 
 | 
                      The Team name. | 
| Field | Type | Description | Example | |
|---|---|---|---|---|
| activated | 
 bool 
 | 
                      Whether the user is activated or not. | ||
| avatar_uri | 
 string 
 | 
                      URI representation of an image stored. | ||
| avatar_url | 
 string 
 | 
                      A URL to a user's avatar. | ||
| description | 
 string 
 | 
                      An optional user's descritpion | ||
| 
 string 
 | 
                      The user's email address. | |||
| first_name | 
 string 
 | 
                      The user's first name. | ||
| groups | Groups | |||
| id | 
 string 
 | 
                      The user ID. | ||
| is_confirmed | 
 bool 
 | 
                      Whether the user has confirmed their email or not. | ||
| last_name | 
 string 
 | 
                      The user's last name. | ||
| plan | UserPlan | |||
| provider | 
 enum 
 | 
                      The authentication provider. | 
                           "email" 
                          "github" 
                          "service-account" 
                       | 
                    |
| provider_id | 
 string 
 | 
                      The user's ID for the authentication provider. | ||
| username | 
 string 
 | 
                      The username. | 
| Field | Type | Description | Example | |
|---|---|---|---|---|
| image_uri | 
 string 
 | 
                      The string representation of the image. | 
| Field | Type | Description | Example | |
|---|---|---|---|---|
| id | 
 string 
 | 
                      The User's ID. | ||
| permission | 
 string 
 | 
                      The User's permission on the resource. | ||
| username | 
 string 
 | 
                      The User's name | 
| Field | Type | Description | Example | |
|---|---|---|---|---|
| can_create_state_project | 
 bool 
 | 
                      Is the user allowed to create State projects? | ||
| can_create_team | 
 bool 
 | 
                      Is the user allowed to create Teams? | ||
| can_manage_project_acl | 
 bool 
 | 
                      Is the user allowed to modify ACLs on Inventory projects? | ||
| can_manage_project_hooks | 
 bool 
 | 
                      Is the user allowed to modify hooks on Inventory projects? | ||
| name | 
 string 
 | 
                      The name of the plan. | ||
| project_limit | 
 int 
 | 
                      The number of projects the user is allowed to create. | 
| Field | Type | Description | Example | |
|---|---|---|---|---|
| name | 
 string 
 | 
                      The name of the plan. | 
| Field | Type | Description | Example | |
|---|---|---|---|---|
| default_plan | 
 string 
 | 
                      The default plan. | ||
| plans | 
{ string : 
UserPlan
}
 | 
                      A map with UserPlans keyed by the plan's name. |