# Autenticação

Rememberizer fornece vários endpoints de autenticação para gerenciar contas de usuário e sessões. Este documento descreve as APIs de autenticação disponíveis.

## Inscrever-se

{% openapi src="/files/7wfxJNjaZYJgvBWvXvoQ" path="/auth/signup/" method="post" %}
[rememberizer\_openapi.yml](https://606058861-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDrEOD8oYxrWDlC9WhJ3K%2Fuploads%2Fgit-blob-77b6137eeb641262ec8e531c78123c02b825b865%2Frememberizer_openapi.yml?alt=media\&token=85552d2b-b485-42dc-a027-aa2441b8ca9f)
{% endopenapi %}

### Exemplo de Solicitações

{% tabs %}
{% tab title="cURL" %}

```bash
curl -X POST \
  https://api.rememberizer.ai/api/v1/auth/signup/ \
  -H "Content-Type: application/json" \
  -d '{
    "email": "user@example.com",
    "password": "secure_password",
    "name": "John Doe",
    "captcha": "recaptcha_response"
  }'
```

{% hint style="info" %}
Substitua `recaptcha_response` por uma resposta reCAPTCHA real.
{% endhint %}
{% endtab %}

{% tab title="JavaScript" %}

```javascript
const signUp = async () => {
  const response = await fetch('https://api.rememberizer.ai/api/v1/auth/signup/', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      email: 'user@example.com',
      password: 'secure_password',
      name: 'John Doe',
      captcha: 'recaptcha_response'
    })
  });
  
  const data = await response.json();
  console.log(data);
};

signUp();
```

{% hint style="info" %}
Substitua `recaptcha_response` por uma resposta reCAPTCHA real.
{% endhint %}
{% endtab %}

{% tab title="Python" %}

```python
import requests
import json

def sign_up():
    headers = {
        "Content-Type": "application/json"
    }
    
    payload = {
        "email": "user@example.com",
        "password": "secure_password",
        "name": "John Doe",
        "captcha": "recaptcha_response"
    }
    
    response = requests.post(
        "https://api.rememberizer.ai/api/v1/auth/signup/",
        headers=headers,
        data=json.dumps(payload)
    )
    
    data = response.json()
    print(data)

sign_up()
```

{% hint style="info" %}
Substitua `recaptcha_response` por uma resposta reCAPTCHA real.
{% endhint %}
{% endtab %}
{% endtabs %}

## Fazer Login

{% openapi src="/files/7wfxJNjaZYJgvBWvXvoQ" path="/auth/signin/" method="post" %}
[rememberizer\_openapi.yml](https://606058861-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDrEOD8oYxrWDlC9WhJ3K%2Fuploads%2Fgit-blob-77b6137eeb641262ec8e531c78123c02b825b865%2Frememberizer_openapi.yml?alt=media\&token=85552d2b-b485-42dc-a027-aa2441b8ca9f)
{% endopenapi %}

### Exemplos de Requisições

{% tabs %}
{% tab title="cURL" %}

```bash
curl -X POST \
  https://api.rememberizer.ai/api/v1/auth/signin/ \
  -H "Content-Type: application/json" \
  -d '{
    "login": "user@example.com",
    "password": "secure_password",
    "captcha": "recaptcha_response"
  }'
```

{% hint style="info" %}
Substitua `recaptcha_response` por uma resposta reCAPTCHA real.
{% endhint %}
{% endtab %}

{% tab title="JavaScript" %}

```javascript
const signIn = async () => {
  const response = await fetch('https://api.rememberizer.ai/api/v1/auth/signin/', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      login: 'user@example.com',
      password: 'secure_password',
      captcha: 'recaptcha_response'
    })
  });
  
  // Verifique se há cookies de autenticação na resposta
  if (response.status === 204) {
    console.log("Login bem-sucedido!");
  } else {
    console.error("Falha no login!");
  }
};

signIn();
```

{% hint style="info" %}
Substitua `recaptcha_response` por uma resposta reCAPTCHA real.
{% endhint %}
{% endtab %}

{% tab title="Python" %}

```python
import requests
import json

def sign_in():
    headers = {
        "Content-Type": "application/json"
    }
    
    payload = {
        "login": "user@example.com",
        "password": "secure_password",
        "captcha": "recaptcha_response"
    }
    
    response = requests.post(
        "https://api.rememberizer.ai/api/v1/auth/signin/",
        headers=headers,
        data=json.dumps(payload)
    )
    
    if response.status_code == 204:
        print("Login bem-sucedido!")
    else:
        print("Falha no login!")

sign_in()
```

{% hint style="info" %}
Substitua `recaptcha_response` por uma resposta reCAPTCHA real.
{% endhint %}
{% endtab %}
{% endtabs %}

## Verificação de Email

{% openapi src="/files/7wfxJNjaZYJgvBWvXvoQ" path="/auth/verify-email/" method="post" %}
[rememberizer\_openapi.yml](https://606058861-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDrEOD8oYxrWDlC9WhJ3K%2Fuploads%2Fgit-blob-77b6137eeb641262ec8e531c78123c02b825b865%2Frememberizer_openapi.yml?alt=media\&token=85552d2b-b485-42dc-a027-aa2441b8ca9f)
{% endopenapi %}

### Exemplo de Requisições

{% tabs %}
{% tab title="cURL" %}

```bash
curl -X POST \
  https://api.rememberizer.ai/api/v1/auth/verify-email/ \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "verification_code": "123456"
  }'
```

{% hint style="info" %}
Substitua `YOUR_JWT_TOKEN` pelo seu token JWT real e use o código de verificação enviado para o seu e-mail.
{% endhint %}
{% endtab %}

{% tab title="JavaScript" %}

```javascript
const verifyEmail = async () => {
  const response = await fetch('https://api.rememberizer.ai/api/v1/auth/verify-email/', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_JWT_TOKEN',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      verification_code: '123456'
    })
  });
  
  if (response.status === 200) {
    console.log("Verificação de e-mail bem-sucedida!");
  } else {
    console.error("Falha na verificação de e-mail!");
  }
};

verifyEmail();
```

{% hint style="info" %}
Substitua `YOUR_JWT_TOKEN` pelo seu token JWT real e use o código de verificação enviado para o seu e-mail.
{% endhint %}
{% endtab %}

{% tab title="Python" %}

```python
import requests
import json

def verify_email():
    headers = {
        "Authorization": "Bearer YOUR_JWT_TOKEN",
        "Content-Type": "application/json"
    }
    
    payload = {
        "verification_code": "123456"
    }
    
    response = requests.post(
        "https://api.rememberizer.ai/api/v1/auth/verify-email/",
        headers=headers,
        data=json.dumps(payload)
    )
    
    if response.status_code == 200:
        print("Verificação de e-mail bem-sucedida!")
    else:
        print("Falha na verificação de e-mail!")

verify_email()
```

{% hint style="info" %}
Substitua `YOUR_JWT_TOKEN` pelo seu token JWT real e use o código de verificação enviado para o seu e-mail.
{% endhint %}
{% endtab %}
{% endtabs %}

## Gerenciamento de Token

{% openapi src="/files/7wfxJNjaZYJgvBWvXvoQ" path="/auth/custom-refresh/" method="post" %}
[rememberizer\_openapi.yml](https://606058861-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDrEOD8oYxrWDlC9WhJ3K%2Fuploads%2Fgit-blob-77b6137eeb641262ec8e531c78123c02b825b865%2Frememberizer_openapi.yml?alt=media\&token=85552d2b-b485-42dc-a027-aa2441b8ca9f)
{% endopenapi %}

### Exemplo de Requisições

{% tabs %}
{% tab title="cURL" %}

```bash
curl -X POST \
  https://api.rememberizer.ai/api/v1/auth/custom-refresh/ \
  -b "refresh_token=SEU_REFRESH_TOKEN"
```

{% hint style="info" %}
Este endpoint usa cookies para autenticação. O token de atualização deve ser enviado como um cookie.
{% endhint %}
{% endtab %}

{% tab title="JavaScript" %}

```javascript
const refreshToken = async () => {
  const response = await fetch('https://api.rememberizer.ai/api/v1/auth/custom-refresh/', {
    method: 'POST',
    credentials: 'include' // Isso inclui cookies na requisição
  });
  
  if (response.status === 204) {
    console.log("Token atualizado com sucesso!");
  } else {
    console.error("Falha ao atualizar o token!");
  }
};

refreshToken();
```

{% hint style="info" %}
Este endpoint usa cookies para autenticação. Certifique-se de que sua aplicação inclua credenciais na requisição.
{% endhint %}
{% endtab %}

{% tab title="Python" %}

```python
import requests

def refresh_token():
    cookies = {
        "refresh_token": "SEU_REFRESH_TOKEN"
    }
    
    response = requests.post(
        "https://api.rememberizer.ai/api/v1/auth/custom-refresh/",
        cookies=cookies
    )
    
    if response.status_code == 204:
        print("Token atualizado com sucesso!")
    else:
        print("Falha ao atualizar o token!")

refresh_token()
```

{% hint style="info" %}
Substitua `SEU_REFRESH_TOKEN` pelo seu token de atualização real.
{% endhint %}
{% endtab %}
{% endtabs %}

## Sair

{% openapi src="/files/7wfxJNjaZYJgvBWvXvoQ" path="/auth/custom-logout/" method="post" %}
[rememberizer\_openapi.yml](https://606058861-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDrEOD8oYxrWDlC9WhJ3K%2Fuploads%2Fgit-blob-77b6137eeb641262ec8e531c78123c02b825b865%2Frememberizer_openapi.yml?alt=media\&token=85552d2b-b485-42dc-a027-aa2441b8ca9f)
{% endopenapi %}

### Exemplo de Requisições

```bash
curl -X POST \
  https://api.rememberizer.ai/api/v1/auth/custom-logout/
```

{% hint style="info" %}
Este endpoint irá limpar os cookies de autenticação.
{% endhint %}

```javascript
const logout = async () => {
  const response = await fetch('https://api.rememberizer.ai/api/v1/auth/custom-logout/', {
    method: 'POST',
    credentials: 'include' // Isso inclui cookies na requisição
  });
  
  if (response.status === 204) {
    console.log("Logout bem-sucedido!");
  } else {
    console.error("Logout falhou!");
  }
};

logout();
```

{% hint style="info" %}
Este endpoint utiliza cookies para autenticação. Certifique-se de que sua aplicação inclua credenciais na requisição.
{% endhint %}

```python
import requests

def logout():
    session = requests.Session()
    
    response = session.post(
        "https://api.rememberizer.ai/api/v1/auth/custom-logout/"
    )
    
    if response.status_code == 204:
        print("Logout bem-sucedido!")
    else:
        print("Logout falhou!")

logout()
```

{% hint style="info" %}
Este endpoint irá limpar os cookies de autenticação.
{% endhint %}

{% endtabs %


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.rememberizer.ai/pt/recursos-para-desenvolvedores/api-docs/authentication.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
