Genereer een OpenAPI Specificatie voor Geautomatiseerde API Mocking met Geavanceerde Scenariosimulatie
description
Met deze prompt kan de gebruiker een OpenAPI specificatie genereren die geavanceerde mocking scenario's ondersteunt, wat het mogelijk maakt om complexe tests uit te voeren zonder een werkende backend. Dit voorkomt integratiefouten vroegtijdig en versnelt de ontwikkelingscyclus. Het biedt meer flexibiliteit dan standaard mockserver generatie omdat het specifieke testcases en foutscenario's kan simuleren.
prompt
Help me een OpenAPI specificatie te maken die geavanceerde mocking scenarios ondersteunt, zoals foutafhandeling, vertragingen, en dynamische responsaanpassing.
API Naam: <voer de naam van mijn API in>
Mocking Scenario's (bijv. foutcodes, time ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
openapi: 3.0.3
info:
titel: Winkelwagen API
versie: '1.0.0'
servers:
- url: https://api.example.com/winkelwagen
description: Productie server
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
responses:
SuccessResponse:
description: Succesvolle respons
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: "Winkelwagen succesvol opgehaald"
data:
type: object
description: "Dynamische winkelwagen data"
properties:
items:
type: array
items:
type: object
properties:
product_id:
type: string
example: "12345"
naam:
type: string
example: "Productnaam"
hoeveelheid:
type: integer
example: 2
prijs:
type: number
format: float
example: 19.99
ServerErrorResponse:
description: Interne server fout
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: "Interne serverfout"
TimeoutResponse:
description: Timeout respons
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: "Request timeout"
paths:
/:
get:
summary: Haal winkelwagen op
security:
- ApiKeyAuth: []
responses:
'200':
description: Succesvolle respons met winkelwagen data
content:
application/json:
schema:
$ref: '#/components/responses/SuccessResponse'
examples:
default:
value:
message: "Winkelwagen succesvol opgehaald"
data:
items:
- product_id: "12345"
naam: "Product A"
hoeveelheid: 2
prijs: 19.99
'500':
description: Interne serverfout met vertraging
content:
application/json:
schema:
$ref: '#/components/responses/ServerErrorResponse'
headers:
Retry-After:
description: Tijd in seconden voordat je opnieuw probeert
schema:
type: integer
example: 2
examples:
default:
value:
error: "Interne serverfout"
x-mock:
scenario: error_with_delay
delay: 2s
response: 500
'timeout':
description: Scenario van time-out
content:
application/json:
schema:
$ref: '#/components/responses/TimeoutResponse'
x-mock:
scenario: timeout
timeout: true
x-mock-scenarios:
- name: error_with_delay
description: Mock voor 500 fout met 2 seconden vertraging
responses:
'500':
delay: 2000 # in milliseconden
body:
error: "Interne serverfout"
- name: timeout
description: Mock voor time-out scenario
responses:
'timeout':
timeout: true
# Opmerking: Sommige mock-tools ondersteunen custom x-parameters voor scenario's, vertragingen en time-outs.
# Pas deze indien nodig aan op basis van de gebruikte mocking tool.
provider: deepseek
model: deepseek-chat
```yaml
openapi: 3.0.3
info:
title: Winkelwagen API
description: API voor het beheren van winkelwagens met geavanceerde mocking ondersteuning
version: 1.0.0
contact:
name: API Support
email: support@winkelwagenapi.nl
servers:
- url: https://api.winkelwagen.nl/v1
description: Productieserver
- url: https://mock.winkelwagen.nl/v1
description: Mock server met geavanceerde scenarios
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
description: API key voor authenticatie
schemas:
Winkelwagen:
type: object
properties:
id:
type: string
format: uuid
example: "123e4567-e89b-12d3-a456-426614174000"
gebruikerId:
type: string
example: "gebruiker-123"
items:
type: array
items:
$ref: '#/components/schemas/WinkelwagenItem'
totaalPrijs:
type: number
format: float
example: 99.99
aangemaaktOp:
type: string
format: date-time
bijgewerktOp:
type: string
format: date-time
WinkelwagenItem:
type: object
properties:
productId:
type: string
example: "prod-456"
naam:
type: string
example: "Smartphone"
hoeveelheid:
type: integer
minimum: 1
example: 2
eenheidsprijs:
type: number
format: float
example: 499.99
FoutResponse:
type: object
properties:
error:
type: object
properties:
code:
type: string
example: "INTERNAL_ERROR"
message:
type: string
example: "Er is een interne serverfout opgetreden"
timestamp:
type: string
format: date-time
security:
- ApiKeyAuth: []
paths:
/winkelwagens:
get:
summary: Haal alle winkelwagens op
description: |
Mocking scenarios:
- 200 OK: Standaard succesvolle response
- 500 Internal Server Error: Met 2 seconden vertraging
- Time-out: Simuleert een time-out scenario
responses:
'200':
description: Succesvolle response
headers:
X-Request-ID:
schema:
type: string
content:
application/json:
schema:
type: object
properties:
winkelwagens:
type: array
items:
$ref: '#/components/schemas/Winkelwagen'
paginering:
type: object
properties:
pagina:
type: integer
totaal:
type: integer
x-mock-examples:
- name: "Standaard succes"
description: "Normale 200 OK response"
statusCode: 200
- name: "Vertraagde fout"
description: "500 error met 2s vertraging"
statusCode: 500
delay: 2000
- name: "Time-out scenario"
description: "Simuleert time-out"
statusCode: 504
delay: 10000
'500':
description: Interne serverfout
content:
application/json:
schema:
$ref: '#/components/schemas/FoutResponse'
examples:
vertraagdeFout:
summary: Vertraagde interne fout
value:
error:
code: "INTERNAL_ERROR"
message: "Er is een interne serverfout opgetreden. Probeer het later opnieuw."
timestamp: "2024-01-15T10:30:00Z"
x-mock-delay: 2000
post:
summary: Maak een nieuwe winkelwagen aan
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- gebruikerId
properties:
gebruikerId:
type: string
example: "gebruiker-123"
initieleItems:
type: array
items:
$ref: '#/components/schemas/WinkelwagenItem'
responses:
'201':
description: Winkelwagen succesvol aangemaakt
content:
application/json:
schema:
$ref: '#/components/schemas/Winkelwagen'
'400':
description: Ongeldige aanvraag
'500':
description: Interne serverfout
x-mock-scenarios:
- name: "Vertraagde 500 fout"
condition: "random(0.2)" # 20% kans op deze response
statusCode: 500
delay: 2000
response:
error:
code: "CREATION_FAILED"
message: "Kon winkelwagen niet aanmaken"
/winkelwagens/{winkelwagenId}:
parameters:
- name: winkelwagenId
in: path
required: true
schema:
type: string
format: uuid
get:
summary: Haal specifieke winkelwagen op
responses:
'200':
description: Winkelwagen gevonden
content:
application/json:
schema:
$ref: '#/components/schemas/Winkelwagen'
examples:
dynamischeData:
summary: Dynamische response met variabele data
value:
id: "{{$randomUUID}}"
gebruikerId: "gebruiker-{{$randomInt 100 999}}"
items:
- productId: "prod-{{$randomInt 1 100}}"
naam: "Product {{$randomInt 1 50}}"
hoeveelheid: "{{$randomInt 1 5}}"
eenheidsprijs: "{{$randomFloat 10 500 2}}"
totaalPrijs: "{{$randomFloat 50 1000 2}}"
aangemaaktOp: "{{$datetime 'yyyy-MM-ddTHH:mm:ss' 'UTC'}}"
bijgewerktOp: "{{$datetime 'yyyy-MM-ddTHH:mm:ss' 'UTC'}}"
'404':
description: Winkelwagen niet gevonden
'500':
description: Interne serverfout
x-mock-scenarios:
- name: "Vertraagde serverfout"
condition: "header.X-Force-Error == 'true'"
statusCode: 500
delay: 2000
put:
summary: Werk winkelwagen bij
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Winkelwagen'
responses:
'200':
description: Winkelwagen succesvol bijgewerkt
content:
application/json:
schema:
$ref: '#/components/schemas/Winkelwagen'
'500':
description: Interne serverfout
x-mock-scenarios:
- name: "Time-out bij update"
condition: "body.items.length > 10" # Time-out bij grote updates
statusCode: 504
delay: 5000
delete:
summary: Verwijder winkelwagen
responses:
'204':
description: Winkelwagen succesvol verwijderd
'500':
description: Interne serverfout
x-mock-scenarios:
- name: "Vertraagde verwijderfout"
condition: "random(0.1)" # 10% kans op fout
statusCode: 500
delay: 2000
/winkelwagens/{winkelwagenId}/items:
parameters:
- name: winkelwagenId
in: path
required: true
schema:
type: string
format: uuid
post:
summary: Voeg item toe aan winkelwagen
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WinkelwagenItem'
responses:
'201':
description: Item succesvol toegevoegd
content:
application/json:
schema:
$ref: '#/components/schemas/Winkelwagen'
'500':
description: Interne serverfout
x-mock-scenarios:
- name: "Vertraagde toevoegfout"
condition: "body.hoeveelheid > 10" # Fout bij grote hoeveelheden
statusCode: 500
delay: 2000
x-mock-config:
globalDelay:
min: 100
max: 1000
scenarios:
- name: "happy-path"
description: "Standaard succesvolle responses"
default: true
- name: "error-scenario"
description: "Simuleert foutscenarios met vertragingen"
parameters:
errorRate: 0.3
delay: 2000
- name: "timeout-scenario"
description: "Simuleert time-out scenarios"
parameters:
timeoutRate: 0.1
timeoutDelay: 10000
```