Maak een OpenAPI Specificatie voor Geavanceerde API Rate Limiting
description
Met deze prompt kun je een OpenAPI specificatie maken die geavanceerde rate limiting beschrijft, waardoor je API beter beschermd is tegen overbelasting en misbruik. Dit voorkomt downtime en verbetert de gebruikerservaring door duidelijke limieten en acties te definiëren. Het helpt ontwikkelaars om efficiënte en veilige API's te bouwen zonder onduidelijkheden over toegestane verzoekfrequenties.
prompt
Help mij een OpenAPI specificatie te maken die geavanceerde rate limiting bevat voor mijn API.
API Naam: <voer de naam van mijn API in>
Rate Limiting Strategieën (bijv. fixed window, sliding window, token bucket): <beschrijf de gewenste rate limiting methodes>
Limieten per Endpoint: <geef limieten voor specifieke endpoints> ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
openapi: 3.0.3
info:
title: E-commerce API
version: 1.0.0
description: >
API voor e-commerce toepassingen met geavanceerde rate limiting.
De rate limiting gebruikt een fixed window strategie.
- Endpoint /users: 50 verzoeken per minuut.
- Bij overschrijding wordt een 429 Too Many Requests geretourneerd.
- Authenticatie wordt verzorgd via OAuth2.
servers:
- url: https://api.example.com
components:
securitySchemes:
OAuth2Security:
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://auth.example.com/oauth/authorize
tokenUrl: https://auth.example.com/oauth/token
scopes:
read: Reading access
write: Writing access
parameters:
RateLimitInfo:
name: X-RateLimit-Limit
in: header
description: Het maximum aantal verzoeken toegestaan binnen de window.
schema:
type: integer
example: 50
RateRemainingInfo:
name: X-RateLimit-Remaining
in: header
description: Het aantal resterende verzoeken binnen de window.
schema:
type: integer
example: 10
RateResetInfo:
name: X-RateLimit-Reset
in: header
description: Unix-tijdstip waarop de rate limit window wordt gereset.
schema:
type: integer
example: 1697049600
security:
- OAuth2Security: []
paths:
/users:
get:
summary: Get gebruikersinformatie
description: >
Deze endpoint heeft een limiet van 50 verzoeken per minuut, gebaseerd op een fixed window strategie.
Bij overschrijding wordt een 429 Too Many Requests geretourneerd.
security:
- OAuth2Security: [read]
responses:
'200':
description: Succesvolle respons met gebruikersgegevens.
headers:
X-RateLimit-Limit:
$ref: '#/components/parameters/RateLimitInfo'
X-RateLimit-Remaining:
$ref: '#/components/parameters/RateRemainingInfo'
X-RateLimit-Reset:
$ref: '#/components/parameters/RateResetInfo'
content:
application/json:
schema:
type: array
items:
type: object
properties:
id:
type: integer
name:
type: string
'429':
description: Te veel verzoeken - rate limit overschreden.
headers:
X-RateLimit-Limit:
$ref: '#/components/parameters/RateLimitInfo'
X-RateLimit-Remaining:
$ref: '#/components/parameters/RateRemainingInfo'
X-RateLimit-Reset:
$ref: '#/components/parameters/RateResetInfo'
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: "Rate limit exceeded. Please try again later."
# Opmerking:
# - De server-side implementatie moet de fixed window rate limiting logica toepassen.
# - Bij overschrijding wordt standaard een 429 statuscode teruggestuurd.
# - De headers X-RateLimit-Limit, X-RateLimit-Remaining en X-RateLimit-Reset geven inzicht in de limieten en het reset-uur.
# - Authenticatie via OAuth2 is vereist voor alle endpoints.
```
provider: deepseek
model: deepseek-chat
Zeker, hier is een OpenAPI 3.0 specificatie in YAML voor je E-commerce API met gevraagde rate limiting regels:
```yaml
openapi: 3.0.0
info:
title: E-commerce API
description: API voor e-commerce platform met geavanceerde rate limiting
version: 1.0.0
contact:
name: API Ondersteuning
email: support@ecommerce-api.nl
servers:
- url: https://api.ecommerce.nl/v1
description: Productieserver
components:
securitySchemes:
OAuth2:
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://api.ecommerce.nl/oauth/authorize
tokenUrl: https://api.ecommerce.nl/oauth/token
scopes:
users.read: Lees toegang tot gebruikersgegevens
users.write: Schrijftoegang tot gebruikersgegevens
parameters:
RateLimit-Limit:
in: header
name: X-RateLimit-Limit
description: Aantal verzoeken toegestaan per tijdvenster
schema:
type: integer
example: 50
RateLimit-Remaining:
in: header
name: X-RateLimit-Remaining
description: Resterende verzoeken in huidig tijdvenster
schema:
type: integer
example: 42
RateLimit-Reset:
in: header
name: X-RateLimit-Reset
description: Tijdstip waarop het rate limit venster reset (Unix timestamp)
schema:
type: integer
example: 1627833600
responses:
TooManyRequests:
description: Te veel verzoeken - Rate limit overschreden
headers:
X-RateLimit-Limit:
$ref: '#/components/parameters/RateLimit-Limit'
X-RateLimit-Remaining:
$ref: '#/components/parameters/RateLimit-Remaining'
X-RateLimit-Reset:
$ref: '#/components/parameters/RateLimit-Reset'
Retry-After:
description: Aantal seconden wachten voordat opnieuw te proberen
schema:
type: integer
example: 30
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: "Rate limit exceeded"
message:
type: string
example: "U heeft de maximale hoeveelheid verzoeken overschreden. Probeer het over 30 seconden opnieuw."
security:
- OAuth2:
- users.read
- users.write
paths:
/users:
get:
summary: Haal gebruikersgegevens op
description: |
Endpoint voor het ophalen van gebruikersgegevens.
**Rate Limiting:**
- Maximum 50 verzoeken per minuut
- Fixed window strategie
- Bij overschrijding: HTTP 429 statuscode
tags:
- Users
security:
- OAuth2: [users.read]
responses:
'200':
description: Succesvol gebruikersgegevens opgehaald
headers:
X-RateLimit-Limit:
$ref: '#/components/parameters/RateLimit-Limit'
X-RateLimit-Remaining:
$ref: '#/components/parameters/RateLimit-Remaining'
X-RateLimit-Reset:
$ref: '#/components/parameters/RateLimit-Reset'
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/User'
'429':
$ref: '#/components/responses/TooManyRequests'
'401':
description: Niet geautoriseerd
'403':
description: Verboden - Onvoldoende rechten
components:
schemas:
User:
type: object
properties:
id:
type: integer
format: int64
name:
type: string
email:
type: string
format: email
required:
- id
- name
- email
x-rate-limit-policies:
fixed_window:
type: fixed_window
limit: 50
window: 1m
algorithm: fixed_window
on_exceeded:
response_status: 429
headers:
Retry-After: 60
```
Deze specificatie bevat:
1. **Fixed window rate limiting** voor het `/users` endpoint (50 verzoeken per minuut)
2. **HTTP 429 statuscode** bij overschrijding met Retry-After header
3. **OAuth2 authenticatie** met authorization code flow
4. **Rate limit headers** (X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset)
5. **Gedetailleerde documentatie** van de rate limiting regels in de endpoint beschrijving
6. **Aangepaste extensie** (`x-rate-limit-policies`) voor extra duidelijkheid over het rate limiting beleid
De specificatie is volledig in het Nederlands en voldoet aan alle gestelde eisen.