Ontwikkel uitgebreide API-documentatie voor mijn Statamic-add-on
description
Het maken van uitgebreide API-documentatie helpt de bruikbaarheid en adoptie van uw add-on te verbeteren, waardoor het voor ontwikkelaars gemakkelijker wordt om de functies te integreren en effectief te gebruiken.
prompt
try_prompt
Help me bij het maken van gedetailleerde API-documentatie voor mijn Statamic-add-on die duidelijke voorbeelden bevat van gebruik, eindpunten, aanvraagparameters en antwoordformaten. Mijn add-on functionaliteit is: {{add-on ... more
generate_helper
...
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een voorbeeld van gedetailleerde API-documentatie voor jouw Statamic-add-on die gebruikersauthenticatie en accountbeheer mogelijk maakt. De documentatie bevat eindpunten, aanvraagparameters, voorbeeldverzoeken en -antwoorden, en is gestructureerd in Markdown voor goede leesbaarheid.
---
# API Documentatie voor Gebruikersauthenticatie en Accountbeheer
Deze API stelt ontwikkelaars in staat om gebruikers te laten inloggen en accounts te beheren via jouw Statamic-add-on.
---
## Basisinformatie
- **Basis-URL**: `https://jouwdomein.nl/api`
- **Authenticatie**: Gebruik een Bearer Token in de `Authorization` header voor beveiligde endpoints.
- **Content-Type**: `application/json`
---
## Endpoints overzicht
| Methode | Endpoint | Beschrijving |
|---------|------------------------------|----------------------------------------------|
| POST | `/login` | Gebruiker inloggen |
| POST | `/logout` | Gebruiker uitloggen |
| GET | `/user` | Huidige ingelogde gebruiker ophalen |
| POST | `/register` | Nieuwe gebruiker registreren |
| PUT | `/user` | Gebruikergegevens bijwerken |
| DELETE | `/user` | Gebruiker verwijderen |
---
## 1. Gebruiker inloggen
### `POST /login`
Authenticeer een gebruiker en ontvang een token.
### Aanvraagparameters
| Parameter | Type | Beschrijving | Vereist | Voorbeeld |
|-------------|----------|----------------------------------|---------|------------------------------|
| `email` | string | E-mailadres van de gebruiker | Ja | `gebruiker@example.com` |
| `password` | string | Gebruikers wachtwoord | Ja | `mijnWachtwoord123` |
### Voorbeeld aanvraag
```json
{
"email": "gebruiker@example.com",
"password": "mijnWachtwoord123"
}
```
### Antwoord
**Succesvol**
```json
{
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."
}
```
**Foutmelding (bij onjuiste gegevens)**
```json
{
"error": "Ongeldig e-mailadres of wachtwoord."
}
```
---
## 2. Gebruiker uitloggen
### `POST /logout`
Verloopt de huidige sessie door het token te invalidatie.
### Aanvraagheaders
```plaintext
Authorization: Bearer <jouw_token>
```
### Voorbeeld aanvraag
Geen body vereist.
### Antwoord
```json
{
"message": "Succesvol uitgelogd."
}
```
---
## 3. Huidige gebruiker ophalen
### `GET /user`
Geeft informatie over de ingelogde gebruiker.
### Aanvraagheaders
```plaintext
Authorization: Bearer <jouw_token>
```
### Antwoord
```json
{
"id": 123,
"naam": "Jan Jansen",
"email": "jan@example.com",
"created_at": "2023-01-15T10:00:00Z"
}
```
---
## 4. Nieuwe gebruiker registreren
### `POST /register`
Voegt een nieuwe gebruiker toe.
### Aanvraagparameters
| Parameter | Type | Beschrijving | Vereist | Voorbeeld |
|------------|--------|----------------------------------|---------|------------------------------|
| `naam` | string | Volledige naam van de gebruiker | Ja | `Jan Jansen` |
| `email` | string | E-mailadres | Ja | `jan@example.com` |
| `wachtwoord` | string | Wachtwoord | Ja | `mijnWachtwoord123` |
### Voorbeeld aanvraag
```json
{
"naam": "Jan Jansen",
"email": "jan@example.com",
"wachtwoord": "mijnWachtwoord123"
}
```
### Antwoord
```json
{
"message": "Gebruiker succesvol geregistreerd."
}
```
---
## 5. Gebruikergegevens bijwerken
### `PUT /user`
Wijzigt gegevens van de ingelogde gebruiker.
### Aanvraagheaders
```plaintext
Authorization: Bearer <jouw_token>
```
### Aanvraagparameters (voorbeeld)
| Parameter | Type | Beschrijving | Vereist | Voorbeeld |
|-------------|--------|----------------------------------|---------|------------------------------|
| `naam` | string | Nieuwe naam van de gebruiker | Nee | `Jan Jansen` |
| `email` | string | Nieuw e-mailadres | Nee | `jan@nieuwedomein.nl` |
| `wachtwoord`| string | Nieuw wachtwoord | Nee | `nieuwWachtwoord456` |
### Voorbeeld aanvraag
```json
{
"naam": "Jan Jansen",
"email": "jan@nieuwedomein.nl"
}
```
### Antwoord
```json
{
"message": "Gebruiker succesvol bijgewerkt."
}
```
---
## 6. Gebruiker verwijderen
### `DELETE /user`
Verwijdert de ingelogde gebruiker.
### Aanvraagheaders
```plaintext
Authorization: Bearer <jouw_token>
```
### Antwoord
```json
{
"message": "Gebruiker succesvol verwijderd."
}
```
---
## Foutmeldingen en statuscodes
| Statuscode | Omschrijving | Voorbeeld |
|--------------|--------------------------------------------|------------------------------------------|
| 400 | Ongeldige aanvraagparameters | `{ "error": "Verplichte parameter ontbreekt." }` |
| 401 | Niet geauthenticeerd of verlopen token | `{ "error": "Authenticatie vereist." }` |
| 404 | Gebruiker niet gevonden | `{ "error": "Gebruiker niet gevonden." }` |
| 500 | Serverfout | `{ "error": "Interne serverfout." }` |
---
## Opmerkingen
- Zorg dat je de juiste authenticatieheaders gebruikt bij beveiligde endpoints.
- Bewaar tokens veilig en gebruik HTTPS voor alle communicatie.
---
Als je nog verdere specificaties nodig hebt of extra endpoints wilt toevoegen, laat het gerust weten!
provider: deepseek
model: deepseek-chat
Zeker! Hier is een gedetailleerde API-documentatie voor je Statamic add-on in Markdown-formaat, met duidelijke voorbeelden en een logische opbouw voor ontwikkelaars van alle niveaus.
# Authenticatie & Accountbeheer API Documentatie
## 📋 Inhoudsopgave
1. [Overzicht](#-overzicht)
2. [Basis URL & Headers](#-basis-url--headers)
3. [Authenticatie](#-authenticatie)
4. [Eindpunten](#-eindpunten)
- [Registreren](#registreren)
- [Inloggen](#inloggen)
- [Profiel ophalen](#profiel-ophalen)
- [Profiel bijwerken](#profiel-bijwerken)
- [Wachtwoord wijzigen](#wachtwoord-wijzigen)
- [Uitloggen](#uitloggen)
5. [Foutafhandeling](#-foutafhandeling)
6. [Veelvoorkomende gebruiksvoorbeelden](#-veelvoorkomende-gebruiksvoorbeelden)
## 🎯 Overzicht
Deze API stelt gebruikers in staat om te registreren, in te loggen en hun accountgegevens te beheren binnen het Statamic CMS.
## 🌐 Basis URL & Headers
**Basis URL:**
```
https://jouwdomein.nl/api
```
**Standaard headers:**
```http
Content-Type: application/json
Accept: application/json
```
## 🔐 Authenticatie
De API gebruikt Bearer Token authenticatie. Na succesvol inloggen ontvang je een token dat moet worden meegestuurd in de Authorization header van volgende requests.
**Voorbeeld:**
```http
Authorization: Bearer {jouw_token}
```
## 📡 Eindpunten
### Registreren
**POST** `/auth/register`
Maakt een nieuw gebruikersaccount aan.
**Request Body:**
```json
{
"name": "Jan Jansen",
"email": "jan@voorbeeld.nl",
"password": "veiligwachtwoord123",
"password_confirmation": "veiligwachtwoord123"
}
```
**Succesvol Response (201):**
```json
{
"message": "Account succesvol aangemaakt",
"user": {
"id": 1,
"name": "Jan Jansen",
"email": "jan@voorbeeld.nl",
"created_at": "2024-01-15T10:30:00Z"
},
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."
}
```
---
### Inloggen
**POST** `/auth/login`
Authenticeert een gebruiker en retourneert een toegangstoken.
**Request Body:**
```json
{
"email": "jan@voorbeeld.nl",
"password": "veiligwachtwoord123"
}
```
**Succesvol Response (200):**
```json
{
"message": "Succesvol ingelogd",
"user": {
"id": 1,
"name": "Jan Jansen",
"email": "jan@voorbeeld.nl"
},
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
"token_type": "Bearer",
"expires_in": 3600
}
```
---
### Profiel ophalen
**GET** `/auth/me`
Haalt de gegevens van de ingelogde gebruiker op.
**Headers:**
```http
Authorization: Bearer {jouw_token}
```
**Succesvol Response (200):**
```json
{
"id": 1,
"name": "Jan Jansen",
"email": "jan@voorbeeld.nl",
"email_verified_at": "2024-01-15T11:00:00Z",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
}
```
---
### Profiel bijwerken
**PUT** `/auth/profile`
Werkt de profielgegevens van de ingelogde gebruiker bij.
**Headers:**
```http
Authorization: Bearer {jouw_token}
```
**Request Body:**
```json
{
"name": "Jan van Jansen",
"email": "jan.van.jansen@voorbeeld.nl"
}
```
**Succesvol Response (200):**
```json
{
"message": "Profiel succesvol bijgewerkt",
"user": {
"id": 1,
"name": "Jan van Jansen",
"email": "jan.van.jansen@voorbeeld.nl",
"updated_at": "2024-01-15T14:20:00Z"
}
}
```
---
### Wachtwoord wijzigen
**PUT** `/auth/password`
Wijzigt het wachtwoord van de ingelogde gebruiker.
**Headers:**
```http
Authorization: Bearer {jouw_token}
```
**Request Body:**
```json
{
"current_password": "oudwachtwoord123",
"new_password": "nieuwwachtwoord456",
"new_password_confirmation": "nieuwwachtwoord456"
}
```
**Succesvol Response (200):**
```json
{
"message": "Wachtwoord succesvol gewijzigd"
}
```
---
### Uitloggen
**POST** `/auth/logout`
Meldt de gebruiker af en maakt het token ongeldig.
**Headers:**
```http
Authorization: Bearer {jouw_token}
```
**Succesvol Response (200):**
```json
{
"message": "Succesvol uitgelogd"
}
```
## ❌ Foutafhandeling
Alle foutresponses volgen dit formaat:
```json
{
"message": "Beschrijving van de fout",
"errors": {
"veldnaam": [
"Specifieke foutmelding voor dit veld"
]
}
}
```
**Veelvoorkomende HTTP Status Codes:**
- `400` - Bad Request (Ongeldige data)
- `401` - Unauthorized (Niet geauthenticeerd)
- `403` - Forbidden (Geen rechten)
- `404` - Not Found (Resource niet gevonden)
- `422` - Unprocessable Entity (Validatiefouten)
- `500` - Internal Server Error
**Voorbeeld validatiefout (422):**
```json
{
"message": "De gegeven data was ongeldig.",
"errors": {
"email": [
"Het e-mailadformaat is ongeldig."
],
"password": [
"Het wachtwoord moet minimaal 8 karakters bevatten."
]
}
}
```
## 💡 Veelvoorkomende gebruiksvoorbeelden
### Volledige authenticatie flow (JavaScript):
```javascript
// 1. Registreren
const register = async () => {
const response = await fetch('/api/auth/register', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'Jan Jansen',
email: 'jan@voorbeeld.nl',
password: 'veiligwachtwoord123',
password_confirmation: 'veiligwachtwoord123'
})
});
const data = await response.json();
localStorage.setItem('token', data.access_token);
return data;
};
// 2. Inloggen
const login = async (email, password) => {
const response = await fetch('/api/auth/login', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ email, password })
});
const data = await response.json();
localStorage.setItem('token', data.access_token);
return data;
};
// 3. Profiel ophalen
const getProfile = async () => {
const token = localStorage.getItem('token');
const response = await fetch('/api/auth/me', {
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
}
});
return await response.json();
};
```
### PHP voorbeeld:
```php
<?php
// Inloggen
$data = [
'email' => 'jan@voorbeeld.nl',
'password' => 'veiligwachtwoord123'
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://jouwdomein.nl/api/auth/login');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Accept: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$result = json_decode($response, true);
$token = $result['access_token'];
// Profiel ophalen met token
curl_setopt($ch, CURLOPT_URL, 'https://jouwdomein.nl/api/auth/me');
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Accept: application/json',
'Authorization: Bearer ' . $token
]);
$profileResponse = curl_exec($ch);
$profile = json_decode($profileResponse, true);
curl_close($ch);
?>
```
---
**📝 Opmerking:** Vervang `https://jouwdomein.nl` door je eigen domein en zorg ervoor dat je de juiste CORS-instellingen hebt geconfigureerd voor je frontend applicatie.
Deze documentatie biedt een complete handleiding voor ontwikkelaars om met je Statamic add-on te werken!

