slogan3

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
disclaimerOnPageApi image_legal_disclaimer...

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!