Maak een OpenAPI-specificatie voor API-versiebeheer en compatibiliteit
description
Met deze prompt kun je een OpenAPI-specificatie maken die expliciet versiebeheer en compatibiliteitsregels beschrijft. Dit voorkomt integratieproblemen bij API-updates, zorgt voor duidelijke communicatie naar ontwikkelaars en verbetert de onderhoudbaarheid van je API-documentatie. Het is een unieke aanpak die helpt om toekomstige wijzigingen zonder verwarring te beheren.
prompt
Help me een OpenAPI-specificatie te ontwerpen die duidelijk versiebeheer en compatibiliteitsregels voor mijn API beschrijft.
API-naam: <voer de naam van mijn API in>
Huidige API-versie: <voer de huidige API-versie in>
Gewenste versiebeheerstrategie (bijv. semver, datumgebaseerd): <beschrijf de versiebeheerstrategie>
Compatibiliteitsregels (bijv. a ...
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: >
Deze API volgt semver (Semantic Versioning) voor versiebeheer.
- Major-versies breken compatibiliteit
- Minor-versies voegen functionaliteit toe zonder compatibiliteit te breken
- Patch-versies bevatten bugfixes en kleine verbeteringen
Let op: deprecated endpoints worden gemarkeerd en blijven ondersteund totdat ze worden verwijderd in een toekomstige versie.
contact:
name: Support
email: support@ecommerce.com
servers:
- url: https://api.ecommerce.com/v1
description: Productieomgeving - versie 1.x.x
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-KEY
security:
- ApiKeyAuth: []
paths:
/users:
get:
summary: "Lijst van gebruikers"
description: >
Hiermee haalt u een lijst van gebruikers op.
**Let op:** Dit endpoint is actief en wordt ondersteund. Toekomstige deprecatie wordt aangekondigd via documentatie.
responses:
'200':
description: "Lijst van gebruikers"
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/User'
post:
summary: "Maak een nieuwe gebruiker"
description: >
Hiermee maakt u een nieuwe gebruiker aan.
**Let op:** Dit endpoint wordt ondersteund en kan worden aangepast of gedepricated in toekomstige versies.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/NewUser'
responses:
'201':
description: "Gebruiker aangemaakt"
content:
application/json:
schema:
$ref: '#/components/schemas/User'
# Deprecated endpoint voorbeeld
/old-users:
get:
deprecated: true
summary: "Oud gebruikerslijst (deprecated)"
description: >
Dit endpoint is gedepricated en wordt mogelijk in toekomstige versies verwijderd.
responses:
'200':
description: "Oud gebruikerslijst"
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/User'
/orders:
get:
summary: "Lijst van bestellingen"
description: >
Haalt een lijst van bestellingen op.
**Let op:** Dit endpoint wordt ondersteund en blijft compatibel in toekomstige versies.
responses:
'200':
description: "Lijst van bestellingen"
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Order'
components:
schemas:
User:
type: object
properties:
id:
type: string
description: "Unieke identifier van de gebruiker"
name:
type: string
email:
type: string
required:
- id
- name
- email
NewUser:
type: object
properties:
name:
type: string
email:
type: string
required:
- name
- email
Order:
type: object
properties:
orderId:
type: string
userId:
type: string
amount:
type: number
format: float
required:
- orderId
- userId
- amount
# Notities:
# - De API volgt semver: wijzigingen worden gespecificeerd in nieuwe versies.
# - Deprecated endpoints worden gemarkeerd en blijven in de documentatie, met vermelding dat ze mogelijk worden verwijderd.
# - Authenticatie gebeurt via API Key in header X-API-KEY.
# - Versie 1.0.0 is de huidige stabiele release; toekomstige versies moeten compatibel blijven tenzij een breaking change wordt geïntroduceerd.
provider: deepseek
model: deepseek-chat
Zeker, hier is een OpenAPI 3.0-specificatie in YAML voor jouw E-commerce API met duidelijk versiebeheer en compatibiliteitsregels:
```yaml
openapi: 3.0.0
info:
title: E-commerce API
description: |
API voor e-commerce functionaliteiten.
**Versiebeheer**: Deze API volgt Semantic Versioning (SemVer).
**Compatibiliteit**: We garanderen achterwaartse compatibiliteit voor minor en patch versies.
Endpoints die worden afgeschaft worden gemarkeerd als deprecated en blijven minimaal één major versie beschikbaar.
version: 1.0.0
contact:
name: API Ondersteuning
email: api-support@example.com
license:
name: Proprietary
url: https://example.com/license
servers:
- url: https://api.example.com/v1
description: Productie server - versie 1.0.0
tags:
- name: Gebruikers
description: Beheer van gebruikersaccounts
- name: Bestellingen
description: Beheer van bestellingen
paths:
/users:
get:
tags:
- Gebruikers
summary: Haal gebruikerslijst op
description: Geeft een lijst van alle gebruikers terug
operationId: getUsers
security:
- ApiKeyAuth: []
parameters:
- name: limit
in: query
description: Maximum aantal gebruikers om terug te geven
required: false
schema:
type: integer
default: 100
- name: offset
in: query
description: Aantal gebruikers om over te slaan
required: false
schema:
type: integer
default: 0
responses:
'200':
description: Succesvolle response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/User'
'401':
$ref: '#/components/responses/UnauthorizedError'
'500':
$ref: '#/components/responses/ServerError'
post:
tags:
- Gebruikers
summary: Maak een nieuwe gebruiker aan
description: Creëert een nieuwe gebruiker in het systeem
operationId: createUser
security:
- ApiKeyAuth: []
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':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/UnauthorizedError'
'500':
$ref: '#/components/responses/ServerError'
/orders:
get:
tags:
- Bestellingen
summary: Haal bestellingen op
description: Geeft een lijst van bestellingen terug (mogelijk deprecated in toekomstige versies)
operationId: getOrders
deprecated: false # Kan op true worden gezet bij deprecation
security:
- ApiKeyAuth: []
parameters:
- name: user_id
in: query
description: Filter bestellingen op gebruiker ID
required: false
schema:
type: string
- name: status
in: query
description: Filter bestellingen op status
required: false
schema:
type: string
enum: [pending, processing, completed, cancelled]
responses:
'200':
description: Succesvolle response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Order'
'401':
$ref: '#/components/responses/UnauthorizedError'
'500':
$ref: '#/components/responses/ServerError'
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
description: Jouw API key voor authenticatie
schemas:
User:
type: object
properties:
id:
type: string
format: uuid
description: Unieke identifier van de gebruiker
email:
type: string
format: email
description: E-mailadres van de gebruiker
name:
type: string
description: Volledige naam van de gebruiker
created_at:
type: string
format: date-time
description: Aanmaakdatum van de gebruiker
required:
- id
- email
- name
- created_at
UserCreate:
type: object
properties:
email:
type: string
format: email
description: E-mailadres van de gebruiker
name:
type: string
description: Volledige naam van de gebruiker
password:
type: string
format: password
description: Wachtwoord van de gebruiker
required:
- email
- name
- password
Order:
type: object
properties:
id:
type: string
format: uuid
description: Unieke identifier van de bestelling
user_id:
type: string
format: uuid
description: ID van de gebruiker
total_amount:
type: number
format: float
description: Totaalbedrag van de bestelling
status:
type: string
enum: [pending, processing, completed, cancelled]
description: Status van de bestelling
created_at:
type: string
format: date-time
description: Aanmaakdatum van de bestelling
required:
- id
- user_id
- total_amount
- status
- created_at
responses:
UnauthorizedError:
description: Ongeautoriseerde toegang - API key ontbreekt of is ongeldig
BadRequestError:
description: Ongeldig verzoek - ontbrekende of incorrecte parameters
ServerError:
description: Interne serverfout - probeer het later opnieuw
externalDocs:
description: API Documentatie en Versiebeleid
url: https://developer.example.com/api-docs
```
**Belangrijke versiebeheer en compatibiliteitskenmerken:**
1. **Semantic Versioning**: Duidelijk aangegeven in de beschrijving
2. **Versie in URL**: `/v1` in server URL voor versiescheiding
3. **Deprecation marking**: `deprecated: true/false` voor endpoints
4. **Achterwaartse compatibiliteit**: Beschreven in API beschrijving
5. **Version header**: Optioneel toe te voegen voor versie-negotiation
6. **Change management**: Documentatie link voor versiebeleid
Je kunt de `deprecated: true` vlag gebruiken wanneer je endpoints wilt afschaffen, en ze minimaal één major versie beschikbaar houden zoals aangegeven in je compatibiliteitsregels.