specifications/API/client-server/v1/login.md

54 lines
2.9 KiB
Markdown

POST /v1/login
---
Authenticates the user, and issues an access token for future requests.
---
## Request
| Name | Type | Description |
| ----------- | ------ | -------------------------------------------------------------------------------------------------------------- |
| identifier | string | User's gorb ID. One of identifier and email **must** be implemented |
| email | string | User's email. One of identifier and email **must** be implemented |
| password | string | **Required**: The user's password (we need to figure out how exactly we're hashing + salting it on the client) |
| device_name | string | Name to help the user identify the device in their session list |
```json
{
"identifier": "radial_4740",
"password": "9r89mhs4czu4",
"device_name": "Laptop"
}
```
---
## Responses
| Status | Description |
| ------ | ---------------------------------------------- |
| 200 | Authentication successful |
| 400 | The post request included poorly formated data |
| 403 | Part of the cridentials are invalid. |
---
### 200
| Name | Type | Description |
| ------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------- |
| access_token | string | **Required**: The access token that will be used for further authentication |
| user_id | string | **Required**: The full gorb ID for the account |
| expires_in | int | How many seconds until the token expires and is invalidated |
| refresh_token | string | The refresh token that will be used to refresh the access token. Required for avoiding users having to log in after access token expiration. |
```json
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJAcmFkaWFsXzQ3NDA6Z29yYi5hcHAiLCJpZGVudGlmaWVyIjoicmFkaWFsXzQ3NDAiLCJpYXQiOjE3NDM4ODgyNDAsImV4cCI6MTc0NTk2MTg0MH0.MZsOfeOm98K2sgtJ3hIDy0iyX27tDJRgW5iSayBJIDM",
"user_id": "@radial_4740:gorb.app",
"expires_in": 86400,
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJAcmFkaWFsXzQ3NDA6Z29yYi5hcHAiLCJpZGVudGlmaWVyIjoicmFkaWFsXzQ3NDAiLCJpYXQiOjE3NDM4ODgyNDAsImV4cCI6MTc0NjQ4MDI0MH0.OvUDelrhELNBhizvAj7wm13YpDLYluI4sPeBmT5sPUg"
}
```