Current version
v1. All endpoints live underhttps://api.novatrade24.com/v1/.... The
spec document is openapi-integration-v1.yaml.
Version in URL path
We use URL-path versioning (/v1/) rather than headers. Reasons:
- Cacheable, bookmarkable, copy-pasteable.
- Obvious in logs and error reports.
- Trivially routable at edge.
- Matches Stripe/GitHub/Twilio convention.
Non-breaking vs breaking
Non-breaking (ship in current version, any time)
- New endpoints.
- New optional request fields.
- New response fields.
- New enum values on fields where the schema documents “may add values”.
- New error problem types.
- New webhook event types.
- Increased rate limits.
Breaking (requires new major version)
- Removing endpoints or fields.
- Renaming fields.
- Changing response types.
- Removing enum values.
- Tightening constraints (stricter validation on existing fields).
- Changing auth flow.
- Changing the signature algorithm on webhooks (bumps webhook
schemaVersionin parallel).
v2 on a new URL path (/v2/...).
Deprecation policy
- Breaking changes are announced at least 12 months before removal.
v1remains available for at least 12 months afterv2launches.- Deprecated endpoints return
Deprecation: trueandSunset: <date>headers (RFC 8594) on every response during the overlap period. - Changelog entries flag deprecated features explicitly.
Schema version on webhooks
Webhook payloads carry aschemaVersion integer separate from the URL
version. Rationale: we may need to evolve the data payload for a single
event type without a full major bump.
- Register the schema versions you accept via
acceptedSchemaVersionson the webhook endpoint ([1]by default). - When we ship
schemaVersion: 2for an event, we dual-emit for a 6-month deprecation window. - Your endpoint receives the highest supported version.
Client compatibility requirements
Any API client you build or consume must:- Ignore unknown JSON fields. Jackson
NON_NULL+FAIL_ON_UNKNOWN_PROPERTIES=false; Pydantic withextra='ignore'; TypeScript with loose typing on response types. - Accept unknown enum values. Treat them as “opaque string” and log
- continue. Never throw on unknown values for our documented enums.
- Observe response headers.
Deprecation,Sunset,X-RateLimit-*— your monitoring should surface these. - Respect media types. Always
application/jsonfor requests/responses except multipart uploads andapplication/problem+jsonfor errors.
Detecting deprecation in CI
Add to your CI pipeline:Next
Changelog
What changed and when.
Error reference
Problem-type stability guarantees.