Versions #

  • The API is on major version v1, which is part of the path (/v1/gateway/...). Within v1 only backward-compatible changes are made.
  • The SDKs follow SemVer aligned with the API: the SDK’s major version is the API’s major version (1.x talks to v1). They’re all currently on 1.1.0 (changelog).

Backward-compatible changes (may ship without notice) #

  • New operations, modules and webhook events.
  • New fields in responses and in the webhook resource (the event’s version doesn’t change).
  • New optional parameters.
  • New values in response enumerations (statuses, categories).

Write your integration to tolerate them: ignore fields you don’t recognize, don’t validate the event catalog against a closed list, and treat unknown statuses as “pending review”.

Breaking changes #

Removing or renaming fields or operations, making a parameter required, or changing a type requires a new major version (/v2) or, within v1, a deprecation process with a retirement date.

How you find out about a deprecation #

A deprecated operation keeps working, but responds with RFC 8594 headers:

HTTP
Deprecation: true
Sunset: Sat, 31 Oct 2027 23:59:59 GMT
Link: </v1/gateway/...>; rel="successor-version"

All five SDKs detect those headers and log a single warning per operation (not one per call), so you see it in your logs before the retirement date:

SDKWhere the warning appears
Pythoncompense_gateway logger (WARNING level)
JavaScript / TSlogger.warn (defaults to console)
PHPThe PSR-3 logger you pass in logger:; otherwise, a silenced E_USER_DEPRECATED (Laravel and Symfony route it to their deprecations channel)
.NETILogger, category Compense.Sdk
GoWithLogger (defaults to slog.Default())
import logging

logging.basicConfig(level=logging.INFO)
logging.getLogger("compense_gateway").setLevel(logging.WARNING)   # warnings arrive here

Alert on the warnings

Create an alert in your logging platform for Compense deprecation warnings: it’s the cheapest way to avoid finding out about a retirement on the day it happens.

Current deprecations #

WhatSinceReplacement
Paths without a version prefix, /gateway/...v1/v1/gateway/... (the SDKs already use the new ones)
Python SDK 1.0: fx.quote/convert(from_currency=, to_currency=)1.1.0sell_currency=, buy_currency=
Python SDK 1.0: test_clocks.create(name=), test_clocks.advance(by_seconds=)1.1.0create(frozen_time=), advance(delta_seconds=)
Python SDK 1.0: sandbox.trigger_webhook1.1.0webhooks.endpoints.send_test
Python SDK 1.0: sandbox.simulate.wallet_transfer_advance / credit_disburse_advance1.1.0simulate.wallet_transfer / simulate.credit_disbursement

The old Python SDK names keep working with a DeprecationWarning until 2.0.

The JavaScript, PHP, .NET and Go SDKs started at 1.1.0 and only include the contract names.