# Mongoose

You can find out the Mongoose auth APIs public repo [here](https://github.com/crema-git/crema-mongoose.git)

All Auth APIs listed here -

## Register User

<mark style="color:green;">`POST`</mark> `https://www.your-domain.com/api/v1/users`

This API is used for the register user

#### Request Body

| Name                                       | Type   | Description              |
| ------------------------------------------ | ------ | ------------------------ |
| name<mark style="color:red;">\*</mark>     | String | Name of the user         |
| email<mark style="color:red;">\*</mark>    | String | Email of the user        |
| password<mark style="color:red;">\*</mark> | String | Password for the account |

{% tabs %}
{% tab title="200: OK User registered sucessfully" %}

```javascript
{
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7ImlkIjoiNWY0ZjE5ZWNjN2Y5ZGEwMDE3ZDg1YmFkIn0sImlhdCI6MTU5OTAxOTUwMSwiZXhwIjoxNTk5NDUxNTAxfQ.diJyrzPOY-FD7quqhbJ9D5sDdN8Oym40qqfgHoldpdg"
}
```

{% endtab %}

{% tab title="400: Bad Request User registration failed" %}

```javascript
{
    "error": "User already exists"
}
```

{% endtab %}
{% endtabs %}

## Login User

<mark style="color:green;">`POST`</mark> `https://www.your-domain.com/api/v1/auth`

This API is used for the login user

#### Request Body

| Name                                       | Type   | Description             |
| ------------------------------------------ | ------ | ----------------------- |
| email<mark style="color:red;">\*</mark>    | String | Email of the user       |
| password<mark style="color:red;">\*</mark> | String | Password of the account |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7ImlkIjoiNWY0ZjE5ZWNjN2Y5ZGEwMDE3ZDg1YmFkIn0sImlhdCI6MTU5OTA3MDc3MCwiZXhwIjoxNTk5NTAyNzcwfQ.fK3L6ZmU8S7I-i21kJj_0sA212JOPgFaTWeSeAUaORQ"
}
```

{% endtab %}

{% tab title="400: Bad Request " %}

```javascript
{
    "error": "Invalid Credentials"
}
```

{% endtab %}
{% endtabs %}

## Auth User

<mark style="color:blue;">`GET`</mark> `https://www.your-domain.com/api/v1/auth`

This API is used to check the auth token validation

#### Headers

| Name                                           | Type   | Description  |
| ---------------------------------------------- | ------ | ------------ |
| x-auth-token<mark style="color:red;">\*</mark> | String | Bearer token |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    "_id": "5f4f19ecc7f9da0017d85bad",
    "name": "Demo User",
    "email": "demqo@example.com",
    "avatar": "https://gravatar.com/avatar/8f6b538c5a829890d9d72aba5fc4ed25?d=mm&r=pg&s=200",
    "date": "2020-09-02T04:05:00.903Z",
    "__v": 0
}
```

{% endtab %}
{% endtabs %}
