Ontwerp een OpenAPI Specificatie voor API Gebruikersbeheer en Rollenbeheer
description
Met deze prompt kun je een duidelijke en gedetailleerde OpenAPI specificatie maken die het gebruikers- en rollenbeheer van je API beschrijft. Dit helpt ontwikkelaars om toegangscontrole beter te begrijpen en te implementeren, wat de veiligheid en het beheer van je API verbetert. Het is specifiek en anders dan bestaande prompts door de focus op gebruikers- en rollenbeheer, een essentieel aspect voor vele API's.
prompt
try_prompt
Help me een OpenAPI specificatie te maken die de gebruikersbeheer- en rollenbeheerfunctionaliteiten van mijn API beschrijft.
API Naam: <voer de naam van mijn API in>
Gebruikersbeheer Functies (bijv. aanmaken, bewerken, verwijderen van gebruikers): <beschrijf de gebruikersbeheerfuncties>
Rollen ... more
generate_helper
...
tags
ai_answers
provider: openai
model: gpt-4.1-nano
openapi: 3.0.3
info:
titel: Voorbeeld API
versie: '1.0.0'
beschrijving: >
API voor gebruikersbeheer en rollenbeheer, inclusief authenticatie via API-sleutel.
servers:
- url: https://api.voorbeeld.com/v1
beschrijving: Productieomgeving
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-KEY
schemas:
Gebruiker:
type: object
eigenschappen:
id:
type: string
description: Unieke identificatie van de gebruiker
naam:
type: string
beschrijving: Naam van de gebruiker
email:
type: string
format: email
beschrijving: E-mail adres van de gebruiker
rol:
type: string
enum: [admin, user, guest]
beschrijving: Rol van de gebruiker
machtigingen:
type: array
items:
type: string
beschrijving: Toegestane acties op basis van rol
Rol:
type: object
eigenschappen:
naam:
type: string
beschrijving: Naam van de rol
machtigingen:
type: array
items:
type: string
beschrijving: Rechten die aan de rol zijn gekoppeld
paths:
/gebruikers:
get:
summary: Lijst van alle gebruikers
security:
- ApiKeyAuth: []
responses:
'200':
description: Een lijst van gebruikers
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Gebruiker'
post:
summary: Een nieuwe gebruiker aanmaken
security:
- ApiKeyAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Gebruiker'
responses:
'201':
description: Gebruiker succesvol aangemaakt
content:
application/json:
schema:
$ref: '#/components/schemas/Gebruiker'
/gebruikers/{id}:
get:
summary: Details van een gebruiker opvragen
security:
- ApiKeyAuth: []
parameters:
- in: path
naam: id
required: true
schema:
type: string
beschrijving: ID van de gebruiker
responses:
'200':
description: Gebruiker details
content:
application/json:
schema:
$ref: '#/components/schemas/Gebruiker'
'404':
description: Gebruiker niet gevonden
put:
summary: Gebruiker bewerken
security:
- ApiKeyAuth: []
parameters:
- in: path
naam: id
required: true
schema:
type: string
beschrijving: ID van de gebruiker
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Gebruiker'
responses:
'200':
description: Gebruiker succesvol bijgewerkt
content:
application/json:
schema:
$ref: '#/components/schemas/Gebruiker'
'404':
description: Gebruiker niet gevonden
delete:
summary: Gebruiker verwijderen
security:
- ApiKeyAuth: []
parameters:
- in: path
naam: id
required: true
schema:
type: string
beschrijving: ID van de gebruiker
responses:
'204':
description: Gebruiker succesvol verwijderd
'404':
description: Gebruiker niet gevonden
/rollen:
get:
summary: Lijst van alle rollen
security:
- ApiKeyAuth: []
responses:
'200':
description: Een lijst van rollen
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Rol'
post:
summary: Nieuwe rol aanmaken
security:
- ApiKeyAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Rol'
responses:
'201':
description: Rol succesvol aangemaakt
content:
application/json:
schema:
$ref: '#/components/schemas/Rol'
/rollen/{naam}:
get:
summary: Details van een rol opvragen
security:
- ApiKeyAuth: []
parameters:
- in: path
naam: naam
required: true
schema:
type: string
beschrijving: Naam van de rol
responses:
'200':
description: Rol details
content:
application/json:
schema:
$ref: '#/components/schemas/Rol'
'404':
description: Rol niet gevonden
put:
summary: Rol bewerken
security:
- ApiKeyAuth: []
parameters:
- in: path
naam: naam
required: true
schema:
type: string
beschrijving: Naam van de rol
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Rol'
responses:
'200':
description: Rol succesvol bijgewerkt
content:
application/json:
schema:
$ref: '#/components/schemas/Rol'
'404':
description: Rol niet gevonden
delete:
summary: Rol verwijderen
security:
- ApiKeyAuth: []
parameters:
- in: path
naam: naam
required: true
schema:
type: string
beschrijving: Naam van de rol
responses:
'204':
description: Rol succesvol verwijderd
'404':
description: Rol niet gevonden
security:
- ApiKeyAuth: []
voorbeeld:
gebruik:
- beveiliging:
- ApiKeyAuth: []
- beschrijving: Gebruik de header "X-API-KEY" voor authenticatie.
rollen:
- beschrijving: Beheer rollen en machtigingen, inclusief toevoegen, bewerken en verwijderen.
gebruikers:
- beschrijving: Beheer gebruikers, inclusief aanmaken, bewerken en verwijderen.
provider: deepseek
model: deepseek-chat
```yaml
openapi: 3.0.3
info:
title: Voorbeeld API
description: API voor gebruikersbeheer en rollenbeheer
version: 1.0.0
servers:
- url: https://api.voorbeeld.com/v1
description: Productie server
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
description: API sleutel voor authenticatie
schemas:
User:
type: object
required:
- id
- username
- email
- role
properties:
id:
type: string
format: uuid
description: Unieke identifier van de gebruiker
username:
type: string
description: Gebruikersnaam
email:
type: string
format: email
description: E-mailadres
role:
type: string
enum: [admin, user, guest]
description: Rol van de gebruiker
createdAt:
type: string
format: date-time
description: Aanmaakdatum
updatedAt:
type: string
format: date-time
description: Laatste wijzigingsdatum
UserCreate:
type: object
required:
- username
- email
- password
- role
properties:
username:
type: string
description: Gebruikersnaam
email:
type: string
format: email
description: E-mailadres
password:
type: string
format: password
description: Wachtwoord
role:
type: string
enum: [admin, user, guest]
description: Rol van de gebruiker
UserUpdate:
type: object
properties:
username:
type: string
description: Gebruikersnaam
email:
type: string
format: email
description: E-mailadres
password:
type: string
format: password
description: Wachtwoord
role:
type: string
enum: [admin, user, guest]
description: Rol van de gebruiker
Error:
type: object
properties:
error:
type: string
description: Foutmelding
code:
type: integer
description: HTTP status code
message:
type: string
description: Beschrijving van de fout
security:
- ApiKeyAuth: []
paths:
/users:
get:
summary: Lijst van alle gebruikers ophalen
description: Haalt een lijst op van alle gebruikers. Alleen admin gebruikers hebben toegang.
tags:
- Gebruikersbeheer
responses:
'200':
description: Succesvolle response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/User'
'401':
description: Niet geautoriseerd
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Verboden - onvoldoende rechten
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
post:
summary: Nieuwe gebruiker aanmaken
description: Maakt een nieuwe gebruiker aan. Alleen admin gebruikers hebben toegang.
tags:
- Gebruikersbeheer
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UserCreate'
responses:
'201':
description: Gebruiker succesvol aangemaakt
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'400':
description: Ongeldige invoer
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Niet geautoriseerd
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Verboden - onvoldoende rechten
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/users/{userId}:
get:
summary: Specifieke gebruiker ophalen
description: Haalt een specifieke gebruiker op op basis van ID
tags:
- Gebruikersbeheer
parameters:
- name: userId
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Succesvolle response
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'401':
description: Niet geautoriseerd
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Gebruiker niet gevonden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
put:
summary: Gebruiker bijwerken
description: Werkt een gebruiker bij op basis van ID. Alleen admin gebruikers hebben toegang.
tags:
- Gebruikersbeheer
parameters:
- name: userId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UserUpdate'
responses:
'200':
description: Gebruiker succesvol bijgewerkt
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'400':
description: Ongeldige invoer
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Niet geautoriseerd
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Verboden - onvoldoende rechten
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Gebruiker niet gevonden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
delete:
summary: Gebruiker verwijderen
description: Verwijdert een gebruiker op basis van ID. Alleen admin gebruikers hebben toegang.
tags:
- Gebruikersbeheer
parameters:
- name: userId
in: path
required: true
schema:
type: string
format: uuid
responses:
'204':
description: Gebruiker succesvol verwijderd
'401':
description: Niet geautoriseerd
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Verboden - onvoldoende rechten
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Gebruiker niet gevonden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/roles:
get:
summary: Beschikbare rollen ophalen
description: Haalt een lijst op van alle beschikbare rollen en hun machtigingen
tags:
- Rollenbeheer
responses:
'200':
description: Succesvolle response
content:
application/json:
schema:
type: object
properties:
roles:
type: array
items:
type: object
properties:
name:
type: string
enum: [admin, user, guest]
description: Naam van de rol
permissions:
type: array
items:
type: string
description: Lijst van machtigingen
description:
type: string
description: Beschrijving van de rol
example:
roles:
- name: admin
permissions: ["users:read", "users:write", "users:delete", "roles:read"]
description: "Beheerder met volledige toegang"
- name: user
permissions: ["users:read", "profile:write"]
description: "Gebruiker met beperkte toegang"
- name: guest
permissions: ["users:read"]
description: "Gast met alleen-lezen rechten"
'401':
description: Niet geautoriseerd
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
```
Deze OpenAPI specificatie beschrijft een complete gebruikers- en rollenbeheer API met de volgende kenmerken:
**Authenticatie:** API sleutel via X-API-Key header
**Rollen en machtigingen:**
- **admin:** Volledige toegang (gebruikers aanmaken, lezen, bijwerken, verwijderen)
- **user:** Beperkte toegang (gebruikers lezen, eigen profiel bijwerken)
- **guest:** Alleen-lezen rechten (gebruikers lezen)
**Functionaliteiten:**
- Gebruikers aanmaken, lezen, bijwerken en verwijderen
- Rollen en bijbehorende machtigingen opvragen
- UUID-based gebruikersidentificatie
- Uitgebreide foutafhandeling
De specificatie is volledig in het Nederlands en volgt de OpenAPI 3.0.3 standaard.

