Page cover

SDK Design Principles

SDKs should feel boring in the best way. Behavior should be predictable across languages. Defaults should be safe for production.

API parity is non-negotiable

SDKs are a typed, ergonomic wrapper over the REST surface.

  • No hidden endpoints.

  • No extra "magic" parameters.

  • No undocumented default behavior.

When the API adds new capabilities, SDKs surface them via versioned releases. This keeps upgrades explicit and reviewable.

What parity means in practice

  • Endpoint availability matches the REST API.

  • Request and response fields keep the same meaning.

  • Optional fields stay optional. Missing fields are handled safely.

  • Client-side helpers never change server semantics.

Structured error handling

SDKs map API error responses into language-native error types. This enables reliable branching without parsing raw HTTP.

Expose enough context for debugging:

  • HTTP status.

  • Stable error code.

  • Human-readable message.

  • Optional details payload.

  • Request identifier, when provided by the API.

Retry behavior stays conservative

SDKs only retry when it's safe by default.

  • Transient network failures can be retried.

  • Throttling responses can be retried, typically respecting Retry-After.

  • Server errors can be retried when the request is idempotent.

If an operation is not idempotent, retries can duplicate side effects. SDKs should make this risk visible via configuration.

Configuration and extensibility

SDKs expose the same core knobs across languages. Names can differ. Semantics should not.

Core configuration should include:

  • API key and auth strategy.

  • Base URL / API host (prod vs staging).

  • Timeouts (connect and total).

  • Retry policy (attempts, backoff, jitter).

  • Default headers (user-agent, tracing, request correlation).

  • Optional logging hooks.

Extensibility points

Advanced users should be able to override defaults without forking:

  • Plug in a custom HTTP transport.

  • Add middleware / interceptors for headers and tracing.

  • Customize serialization and response decoding when needed.

Community extensions

Acceso supports community-maintained SDKs and extensions.

Community SDKs can be reviewed for correctness. They are not officially maintained. Consumers should treat compatibility and support as best-effort.

Last updated