# API: Auth

---

- [Login](#login)
- [Logout](#logout)
- [Inicia Recuperação de Senha](#password_recovery)
- [Valida Token](#validate_token)
- [Update Password](#update_password)
- [Who am I](#whoami)

<a name="login"></a>
## Login

### Endpoint
|Método|URI|Headers|
|:|:-|:|
|POST|`/auth/login`|Default|

### Body
```json
{
	"username": "admin",
    "password": "admin123"
}
```

### Responses
<larecipe-badge type="success" rounded><i class="fa fa-check" style="margin-right:9px"></i>200 - OK</larecipe-badge>
```json
{
    "user": {
        "id": <id>,
        "empresa_id": <empresa_id>,
        "name": <name>,
        "username": <username>,
        "email": <email>,
        "cpf": <cpf>,
        "email_verified_at": <email_verified_at>,
        "is_active": bool,
        "is_criar": bool,
        "empresa": {
            "id": <id>,
            "cnpj": <cnpj>,
            "razao_social": <razao_social>,
            "nome_fantasia": <nome_fantasia>,
            "email": <email>,
            "logo_file": <logo_file>,
            "is_active": bool,
            "assinatura_contrato_at": <assinatura_contrato_at>,
            "phones": [
                {
                    "number": <number>,
                    "is_mobile": bool,
                    "has_whatsapp": bool
                }
            ]
        },
        "full_address": <full_address>,
        "phones": [
            {
                "number": <number>,
                "is_mobile": bool,
                "has_whatsapp": bool
            }
        ],
        "roles": [<roles>],
        "permissions": [<permissions>]
    },
    "token": <token>
}
```

<larecipe-badge type="danger" rounded><i class="fa fa-lock" style="margin-right:9px"></i>401 - Unauthorized</larecipe-badge>
```json
{
    "message": "Essas credenciais não correspondem aos nossos registros."
}
```

<a name="logout"></a>
## Logout

### Endpoint
| Método|URI|Headers|
|:|:-|:|
|POST| `/auth/logout` | Default |

### Body

```json 
Empty
```

### Responses

<larecipe-badge type="success" rounded><i class="fa fa-check" style="margin-right:9px"></i>200 - OK</larecipe-badge>
```json
{
    "message": "Desconectado com sucesso."
}
```

<larecipe-badge type="danger" rounded><i class="fa fa-lock" style="margin-right:9px"></i>401 - Unauthorized</larecipe-badge>
```json
{
    "message": "Unauthenticated."
}
```

<a name="password_recovery"></a>
## Inicia Recuperação de Senha

### Endpoint
| Método|URI|Headers|
|:|:-|:|
|POST| `/auth/password-recover/start` | Default |

### Body

```json
{
    "username": "admin"
}
```

### Responses

<larecipe-badge type="success" rounded><i class="fa fa-check" style="margin-right:9px"></i>200 - OK</larecipe-badge>
```json
{
    "message": "Um email para recuperação de senha foi enviado.",
    "url": "/api/auth/password-recover/url/{hash}?expires={axpires}&signature={signature}"
}
```

<larecipe-badge type="danger" rounded><i class="fa fa-lock" style="margin-right:9px"></i>401 - Unauthorized</larecipe-badge>
```json
{
    "message": "Usuário CRIAR não pode alterar a senha."
}
```

```json
{
    "message": "Essas credenciais não correspondem aos nossos registros."
}
```

<a name="validate_token"></a>
## Valida Token

### Endpoint
| Método|URI|Headers|
|:|:-|:|
|POST| `/auth/password-recover/url/<recover-hash>?expires=<expires>&signature=<signature>` | Default |

### Body
```json
{
    "token": <recover-token>
}
```

### Responses
<larecipe-badge type="success" rounded><i class="fa fa-check" style="margin-right:9px"></i>200 - OK</larecipe-badge>
```json
{
    "url": "/api/auth/password-recover/update/<token-id>?expires=<expires>&signature=<signature>"
}
```

<larecipe-badge type="warning" rounded><i class="fa fa-exclamation" style="margin-right:9px"></i>422 - Unprocessable Content</larecipe-badge>
```json
{
    "message": "Invalid or expired token."
}
```
<larecipe-badge type="danger" rounded><i class="fa fa-lock" style="margin-right:9px"></i>403 - Forbidden</larecipe-badge>
```json
{
    "message": "Invalid signature."
}
```

<a name="update_password"></a>
## Update Password

### Endpoint
| Método|URI|Headers|
|:|:-|:|
|POST| `/auth/password-recover/url/<recover-hash>?expires=<expires>&signature=<signature>` | Default |

### Body
```json
{
    "password": "12345678",
    "password_confirmation": "12345678"
}
```

### Responses
<larecipe-badge type="success" rounded><i class="fa fa-check" style="margin-right:9px"></i>200 - OK</larecipe-badge>
```json
{
    "message": "Senha atualizada com sucesso!"
}
```

<a name="whoami"></a>
## Who am i

### Endpoint
| Método|URI|Headers|
|:|:-|:|
|POST| `/auth/whoami` | Default |

### Body
```json
Empty
```

### Responses
<larecipe-badge type="success" rounded><i class="fa fa-check" style="margin-right:9px"></i>200 - OK</larecipe-badge>
```json
{
    "id": <id>,
    "empresa_id": <empresa_id>,
    "name": <name>,
    "username": <username>,
    "email": <email>,
    "cpf": <cpf>,
    "email_verified_at": <email_verified_at>,
    "is_active": <is_active>,
    "is_criar": <is_criar>,
    "full_address": <full_address>,
    "phones": [<phones],
    "roles":[<roles>],
    "permissions": [<permissions>]
}
```

<larecipe-badge type="danger" rounded><i class="fa fa-lock" style="margin-right:9px"></i>401 - Unauthorized</larecipe-badge>
```json
{
    "message": "Unauthenticated."
}
```