# Autenticazione

Rememberizer fornisce diversi endpoint di autenticazione per gestire gli account utente e le sessioni. Questo documento descrive le API di autenticazione disponibili.

## Iscriviti

{% openapi src="/files/TgprWtaxn0x1jf4BJIMN" path="/auth/signup/" method="post" %}
[rememberizer\_openapi.yml](https://2549770777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F57qWu8jBt3M3SWmz6Y83%2Fuploads%2Fgit-blob-4f45581f68048634d677b5e3d260a677eeb0242f%2Frememberizer_openapi.yml?alt=media\&token=7f673453-89b5-4d08-beab-3fb44863de41)
{% endopenapi %}

### Esempi di Richieste

{% 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" %}
Sostituisci `recaptcha_response` con una risposta reCAPTCHA effettiva.
{% 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" %}
Sostituisci `recaptcha_response` con una risposta reCAPTCHA effettiva.
{% 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" %}
Sostituisci `recaptcha_response` con una risposta reCAPTCHA effettiva.
{% endhint %}
{% endtab %}
{% endtabs %}

## Accedi

{% openapi src="/files/TgprWtaxn0x1jf4BJIMN" path="/auth/signin/" method="post" %}
[rememberizer\_openapi.yml](https://2549770777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F57qWu8jBt3M3SWmz6Y83%2Fuploads%2Fgit-blob-4f45581f68048634d677b5e3d260a677eeb0242f%2Frememberizer_openapi.yml?alt=media\&token=7f673453-89b5-4d08-beab-3fb44863de41)
{% endopenapi %}

### Esempi di Richieste

{% 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" %}
Sostituisci `recaptcha_response` con una risposta reCAPTCHA effettiva.
{% 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'
    })
  });
  
  // Controlla i cookie di autenticazione nella risposta
  if (response.status === 204) {
    console.log("Accesso riuscito!");
  } else {
    console.error("Accesso fallito!");
  }
};

signIn();
```

{% hint style="info" %}
Sostituisci `recaptcha_response` con una risposta reCAPTCHA effettiva.
{% 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("Accesso riuscito!")
    else:
        print("Accesso fallito!")

sign_in()
```

{% hint style="info" %}
Sostituisci `recaptcha_response` con una risposta reCAPTCHA effettiva.
{% endhint %}
{% endtab %}
{% endtabs %}

## Verifica Email

{% openapi src="/files/TgprWtaxn0x1jf4BJIMN" path="/auth/verify-email/" method="post" %}
[rememberizer\_openapi.yml](https://2549770777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F57qWu8jBt3M3SWmz6Y83%2Fuploads%2Fgit-blob-4f45581f68048634d677b5e3d260a677eeb0242f%2Frememberizer_openapi.yml?alt=media\&token=7f673453-89b5-4d08-beab-3fb44863de41)
{% endopenapi %}

### Esempi di Richieste

{% 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" %}
Sostituisci `YOUR_JWT_TOKEN` con il tuo token JWT effettivo e utilizza il codice di verifica inviato alla tua email.
{% 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 email riuscita!");
  } else {
    console.error("Verifica email fallita!");
  }
};

verifyEmail();
```

{% hint style="info" %}
Sostituisci `YOUR_JWT_TOKEN` con il tuo token JWT effettivo e utilizza il codice di verifica inviato alla tua email.
{% 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 email riuscita!")
    else:
        print("Verifica email fallita!")

verify_email()
```

{% hint style="info" %}
Sostituisci `YOUR_JWT_TOKEN` con il tuo token JWT effettivo e utilizza il codice di verifica inviato alla tua email.
{% endhint %}
{% endtab %}
{% endtabs %}

## Gestione dei Token

{% openapi src="/files/TgprWtaxn0x1jf4BJIMN" path="/auth/custom-refresh/" method="post" %}
[rememberizer\_openapi.yml](https://2549770777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F57qWu8jBt3M3SWmz6Y83%2Fuploads%2Fgit-blob-4f45581f68048634d677b5e3d260a677eeb0242f%2Frememberizer_openapi.yml?alt=media\&token=7f673453-89b5-4d08-beab-3fb44863de41)
{% endopenapi %}

### Esempi di Richieste

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

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

{% hint style="info" %}
Questo endpoint utilizza i cookie per l'autenticazione. Il token di aggiornamento deve essere inviato come un 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' // Questo include i cookie nella richiesta
  });
  
  if (response.status === 204) {
    console.log("Token aggiornato con successo!");
  } else {
    console.error("Aggiornamento del token fallito!");
  }
};

refreshToken();
```

{% hint style="info" %}
Questo endpoint utilizza i cookie per l'autenticazione. Assicurati che la tua applicazione includa le credenziali nella richiesta.
{% endhint %}
{% endtab %}

{% tab title="Python" %}

```python
import requests

def refresh_token():
    cookies = {
        "refresh_token": "YOUR_REFRESH_TOKEN"
    }
    
    response = requests.post(
        "https://api.rememberizer.ai/api/v1/auth/custom-refresh/",
        cookies=cookies
    )
    
    if response.status_code == 204:
        print("Token aggiornato con successo!")
    else:
        print("Aggiornamento del token fallito!")

refresh_token()
```

{% hint style="info" %}
Sostituisci `YOUR_REFRESH_TOKEN` con il tuo effettivo token di aggiornamento.
{% endhint %}
{% endtab %}
{% endtabs %}

## Disconnettersi

{% openapi src="/files/TgprWtaxn0x1jf4BJIMN" path="/auth/custom-logout/" method="post" %}
[rememberizer\_openapi.yml](https://2549770777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F57qWu8jBt3M3SWmz6Y83%2Fuploads%2Fgit-blob-4f45581f68048634d677b5e3d260a677eeb0242f%2Frememberizer_openapi.yml?alt=media\&token=7f673453-89b5-4d08-beab-3fb44863de41)
{% endopenapi %}

### Esempi di Richieste

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

{% hint style="info" %}
Questo endpoint cancellerà i cookie di autenticazione.
{% endhint %}

```javascript
const logout = async () => {
  const response = await fetch('https://api.rememberizer.ai/api/v1/auth/custom-logout/', {
    method: 'POST',
    credentials: 'include' // Questo include i cookie nella richiesta
  });
  
  if (response.status === 204) {
    console.log("Logout riuscito!");
  } else {
    console.error("Logout fallito!");
  }
};

logout();
```

{% hint style="info" %}
Questo endpoint utilizza i cookie per l'autenticazione. Assicurati che la tua applicazione includa le credenziali nella richiesta.
{% 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 riuscito!")
    else:
        print("Logout fallito!")

logout()
```

{% hint style="info" %}
Questo endpoint cancellerà i cookie di autenticazione.
{% 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/it/risorse-per-sviluppatori/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.
