# Auth

{% hint style="info" %}
**Requirement** You are required to show empowered by RE:DREAMER if you used our protocol in any part of your product.
{% endhint %}

![empowered white](https://404850448-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdDk4AHKGlMLAZPnf2hJ6%2Fuploads%2Fgit-blob-a3abbbcf5d962d5d3e023b94ddb4605b9d5f8ab9%2Fempowered_white.png?alt=media) ![empowered black](https://404850448-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdDk4AHKGlMLAZPnf2hJ6%2Fuploads%2Fgit-blob-62d97745c570b2d5b1e2b8a045587597af1e9b3d%2Fempowered_black.png?alt=media)

## Domain

* Mainnet: `mainnet-api.redreamer.io`
* Testnet: `testnet-api.redreamer.io`

## GET /api/v1/auth/nonce

Get a nonce by given address.

### Request Parameters

* \[Required] `address`: the address of user.

### Response

#### 200

```json
{
   "nonce": "72452fa3-dbc6-44ae-8108-1dfb7edc1582"
}
```

#### 400, 500

```json
{
	"code": "ERROR_CODE"
}
```

#### Error Code

*

## POST /api/v1/auth/login

Login to get JWT.

### Request Body

```json
{
    "address": "0xb88b0776c6147d4da3056a16b20c2ddbdfb37275",
    "signature": "0x8217b11a64c4f8ee2ef01cd46fea87bf5ea65a4c6907e303f6c11d5e5fd2441a6e5daf05e8a98af42efafd6824010d7dd6bdfe9bb35c128636f1db9ded35ddda1c"
}
```

* `signature`: using `${address} ${nonce}` to sign message.

### Response

#### 200

```json
{
   "refresh_token": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiMHg4NWI3Y2ExNjFjMzExZDlhNWYwMDc3ZDUwNDhjYWRmYWNlODlhMjY3IiwiZXhwIjoxNjUwNDMzNzY4LCJpYXQiOjE2NTAzNDczNjgsImlzcyI6InJlZHJlYW1lciIsInNjb3BlcyI6IiJ9.sMMuM0bCJjHs7DedWZd8w-2BWzovuBuCxgZwMW20TIwKSkrkue2T-9ecgW-8_TCsGoleiQa6DSDbQKq3_kQmjA",
   "token": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiMHg4NWI3Y2ExNjFjMzExZDlhNWYwMDc3ZDUwNDhjYWRmYWNlODlhMjY3IiwiZXhwIjoxNjUwMzUwOTY4LCJpYXQiOjE2NTAzNDczNjgsImlzcyI6InJlZHJlYW1lciIsInNjb3BlcyI6IiJ9.WWjCMbpWkpbzQulgqOQz5JqnC1lTEFG2_CTeFW21A8q7AKeEI_l2_ptqiG7lpcOCmojFW_3Zi3VAimO1k214cw"
}
```

* `token`: It will be expired after 1 hour.
* `refresh_token`: If token is expired, you can use this to refresh without signature.

#### 400, 500

```json
{
	"code": "ERROR_CODE"
}
```

#### Error Code

*

## POST /api/v1/auth/refresh

Refresh JWT.

### Request Body

```json
{
	"refresh_token": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiMHg4NWI3Y2ExNjFjMzExZDlhNWYwMDc3ZDUwNDhjYWRmYWNlODlhMjY3IiwiZXhwIjoxNjUwNDMzNzY4LCJpYXQiOjE2NTAzNDczNjgsImlzcyI6InJlZHJlYW1lciIsInNjb3BlcyI6IiJ9.sMMuM0bCJjHs7DedWZd8w-2BWzovuBuCxgZwMW20TIwKSkrkue2T-9ecgW-8_TCsGoleiQa6DSDbQKq3_kQmjA"
}
```

### Response

#### 200

```json
{
   "refresh_token": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiMHg4NWI3Y2ExNjFjMzExZDlhNWYwMDc3ZDUwNDhjYWRmYWNlODlhMjY3IiwiZXhwIjoxNjUwNDMzNzY4LCJpYXQiOjE2NTAzNDczNjgsImlzcyI6InJlZHJlYW1lciIsInNjb3BlcyI6IiJ9.sMMuM0bCJjHs7DedWZd8w-2BWzovuBuCxgZwMW20TIwKSkrkue2T-9ecgW-8_TCsGoleiQa6DSDbQKq3_kQmjA",
   "token": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiMHg4NWI3Y2ExNjFjMzExZDlhNWYwMDc3ZDUwNDhjYWRmYWNlODlhMjY3IiwiZXhwIjoxNjUwMzUwOTY4LCJpYXQiOjE2NTAzNDczNjgsImlzcyI6InJlZHJlYW1lciIsInNjb3BlcyI6IiJ9.WWjCMbpWkpbzQulgqOQz5JqnC1lTEFG2_CTeFW21A8q7AKeEI_l2_ptqiG7lpcOCmojFW_3Zi3VAimO1k214cw"
}
```

* `token`: It will be expired after 1 hour.
* `refresh_token`: If token is expired, you can use this to refresh without signature.

#### 400, 500

```json
{
	"code": "ERROR_CODE"
}
```

#### Error Code

*

### Information

Posted: **Apr 20, 2022**
