# Godkendelse

Rememberizer tilbyder flere autentificerings-endepunkter til at administrere brugerkonti og sessioner. Dette dokument skitserer de tilgængelige autentificerings-API'er.

## Tilmelding

{% openapi src="<https://github.com/skydeckai/rememberizer-docs/blob/production/da/.gitbook/assets/rememberizer_openapi.yml>" path="/auth/signup/" method="post" %}
<https://github.com/skydeckai/rememberizer-docs/blob/production/da/.gitbook/assets/rememberizer_openapi.yml>
{% endopenapi %}

### Eksempelanmodninger

{% 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" %}
Erstat `recaptcha_response` med et faktisk reCAPTCHA-svar.
{% 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" %}
Erstat `recaptcha_response` med et faktisk reCAPTCHA-svar.
{% 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" %}
Erstat `recaptcha_response` med et faktisk reCAPTCHA-svar.
{% endhint %}
{% endtab %}
{% endtabs %}

## Log ind

{% openapi src="<https://github.com/skydeckai/rememberizer-docs/blob/production/da/.gitbook/assets/rememberizer_openapi.yml>" path="/auth/signin/" method="post" %}
<https://github.com/skydeckai/rememberizer-docs/blob/production/da/.gitbook/assets/rememberizer_openapi.yml>
{% endopenapi %}

### Eksempelanmodninger

{% 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" %}
Erstat `recaptcha_response` med et faktisk reCAPTCHA-svar.
{% 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'
    })
  });
  
  // Tjek for autentificeringscookies i svaret
  if (response.status === 204) {
    console.log("Login vellykket!");
  } else {
    console.error("Login mislykkedes!");
  }
};

signIn();
```

{% hint style="info" %}
Erstat `recaptcha_response` med et faktisk reCAPTCHA-svar.
{% 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 vellykket!")
    else:
        print("Login mislykkedes!")

sign_in()
```

{% hint style="info" %}
Erstat `recaptcha_response` med et faktisk reCAPTCHA-svar.
{% endhint %}
{% endtab %}
{% endtabs %}

## E-mail Verifikation

{% openapi src="<https://github.com/skydeckai/rememberizer-docs/blob/production/da/.gitbook/assets/rememberizer_openapi.yml>" path="/auth/verify-email/" method="post" %}
<https://github.com/skydeckai/rememberizer-docs/blob/production/da/.gitbook/assets/rememberizer_openapi.yml>
{% endopenapi %}

### Eksempelanmodninger

{% 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" %}
Erstat `YOUR_JWT_TOKEN` med din faktiske JWT-token og brug den verificeringskode, der er sendt til din 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("E-mailverificering lykkedes!");
  } else {
    console.error("E-mailverificering mislykkedes!");
  }
};

verifyEmail();
```

{% hint style="info" %}
Erstat `YOUR_JWT_TOKEN` med din faktiske JWT-token og brug den verificeringskode, der er sendt til din 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("E-mailverificering lykkedes!")
    else:
        print("E-mailverificering mislykkedes!")

verify_email()
```

{% hint style="info" %}
Erstat `YOUR_JWT_TOKEN` med din faktiske JWT-token og brug den verificeringskode, der er sendt til din e-mail.
{% endhint %}
{% endtab %}
{% endtabs %}

## Tokenhåndtering

{% openapi src="<https://github.com/skydeckai/rememberizer-docs/blob/production/da/.gitbook/assets/rememberizer_openapi.yml>" path="/auth/custom-refresh/" method="post" %}
<https://github.com/skydeckai/rememberizer-docs/blob/production/da/.gitbook/assets/rememberizer_openapi.yml>
{% endopenapi %}

### Eksempelanmodninger

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

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

{% hint style="info" %}
Denne endpoint bruger cookies til autentifikation. Refresh-tokenet skal sendes som en 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' // Dette inkluderer cookies i anmodningen
  });
  
  if (response.status === 204) {
    console.log("Token opdateret med succes!");
  } else {
    console.error("Token opdatering mislykkedes!");
  }
};

refreshToken();
```

{% hint style="info" %}
Denne endpoint bruger cookies til autentifikation. Sørg for, at din applikation inkluderer legitimationsoplysninger i anmodningen.
{% endhint %}
{% endtab %}

{% tab title="Python" %}

```python
import requests

def refresh_token():
    cookies = {
        "refresh_token": "DIN_REFRESH_TOKEN"
    }
    
    response = requests.post(
        "https://api.rememberizer.ai/api/v1/auth/custom-refresh/",
        cookies=cookies
    )
    
    if response.status_code == 204:
        print("Token opdateret med succes!")
    else:
        print("Token opdatering mislykkedes!")

refresh_token()
```

{% hint style="info" %}
Erstat `DIN_REFRESH_TOKEN` med dit faktiske refresh-token.
{% endhint %}
{% endtab %}
{% endtabs %}

## Log ud

{% openapi src="<https://github.com/skydeckai/rememberizer-docs/blob/production/da/.gitbook/assets/rememberizer_openapi.yml>" path="/auth/custom-logout/" method="post" %}
<https://github.com/skydeckai/rememberizer-docs/blob/production/da/.gitbook/assets/rememberizer_openapi.yml>
{% endopenapi %}

### Eksempelanmodninger

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

{% hint style="info" %}
Denne endpoint vil rydde autentificeringscookies.
{% endhint %}

```javascript
const logout = async () => {
  const response = await fetch('https://api.rememberizer.ai/api/v1/auth/custom-logout/', {
    method: 'POST',
    credentials: 'include' // Dette inkluderer cookies i anmodningen
  });
  
  if (response.status === 204) {
    console.log("Logout vellykket!");
  } else {
    console.error("Logout mislykkedes!");
  }
};

logout();
```

{% hint style="info" %}
Denne endpoint bruger cookies til autentificering. Sørg for, at din applikation inkluderer legitimationsoplysninger i anmodningen.
{% 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 vellykket!")
    else:
        print("Logout mislykkedes!")

logout()
```

{% hint style="info" %}
Denne endpoint vil rydde autentificeringscookies.
{% 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/da/udviklerressourcer/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.
