lemon.markets · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the lemon.markets Brokerage API

10 actions 10 updates documentation extends openapi/lemonmarkets-brokerage-openapi.json
Generated by API Evangelist Written by API Evangelist tooling for lemon.markets's API. It is a proposal applied on top of the contract, not a document lemon.markets publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-slugx-apievangelist-artifactsx-spec-provenancecontactlicensesecurityx-auth-notedescription

Targets 6

$.info
$.servers
$
$.components.securitySchemes.bearerAuth
$.paths['/accounts/{account_id}/orders'].post
$.paths['/businesses/{business_id}/submit_document'].post

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the lemon.markets Brokerage API
  version: 1.0.0
extends: openapi/lemonmarkets-brokerage-openapi.json
x-generated: '2026-07-19'
x-method: generated
x-source: >-
  Enhancements derived from the lemon.markets developer hub (idempotency, webhooks, sandbox
  and changelog guides) plus this repo's artifacts. The harvested spec itself is never mutated.

actions:
# ---- provenance + catalog metadata ----
- target: $.info
  update:
    x-apievangelist-slug: lemonmarkets
    x-apievangelist-artifacts:
      conventions: conventions/lemonmarkets-conventions.yml
      errors: errors/lemonmarkets-problem-types.yml
      lifecycle: lifecycle/lemonmarkets-lifecycle.yml
      authentication: authentication/lemonmarkets-authentication.yml
      webhooks: asyncapi/lemonmarkets-brokerage-webhooks.yml
      sandbox: sandbox/lemonmarkets-sandbox.yml
      data_model: data-model/lemonmarkets-data-model.yml
      changelog: changelog/lemonmarkets-changelog.yml
    x-spec-provenance: >-
      Assembled from the 96 per-operation OpenAPI 3.1.0 documents published on
      developer.lemon.markets/reference. Content is verbatim from the provider; only the
      merge is ours.
    contact:
      name: lemon.markets
      url: https://www.lemon.markets/en-de/contact
    license:
      name: Proprietary — invite-only partner API
      url: https://www.lemon.markets/en-de/terms-of-use

# ---- production server, absent from the published fragments ----
- target: $.servers
  update:
  - url: https://api.lemon.markets/v1
    description: >-
      Production. Not listed in the published reference fragments; host verified live by
      DNS + HTTP probe (apps-prod-live ALB, eu-central-1; 403 without credentials).
    x-verified: dns+http-probe 2026-07-19

# ---- make the documented auth requirement machine-enforceable ----
- target: $
  update:
    security:
    - bearerAuth: []
    x-auth-note: >-
      The published spec declares components.securitySchemes.bearerAuth but applies no
      global or per-operation security[] requirement. This overlay applies it globally so
      tooling can enforce what the documentation states.

- target: $.components.securitySchemes.bearerAuth
  update:
    description: >-
      Static partner API key sent as `Authorization: Bearer <your-api-key>`. Sandbox and
      production keys are distinct and non-interchangeable. Access is invite-only.
    x-key-issuance: invite-only, issued by lemon.markets to onboarded partners

# ---- cross-cutting conventions ----
- target: $.info
  update:
    x-conventions:
      pagination:
        style: cursor
        params: [cursor, limit]
        response_fields: [data, pagination.next_cursor]
      error_envelope:
        format: custom-json
        schema: ErrorResponse
        rfc9457: false
      idempotency:
        header: Idempotency-Key
        standard: draft-ietf-httpapi-idempotency-key-header
        retention: 24h
        max_length: 100
        operations: [create_order]
      data_privacy_headers:
        - LMG-Data-Privacy-Access-Principal
        - LMG-Data-Privacy-Access-Justification
      versioning:
        scheme: uri-path
        current: v1
      rate_limits:
        documented: false

# ---- webhook/event surface, not modelled in the spec ----
- target: $.info
  update:
    x-events:
      model: webhooks
      registration_operation: create_webhook
      poll_operation: list_events
      event_count: 85
      signature: signature_secret returned at registration
      ack_deadline_seconds: 10
      delivery: at-least-once, ordering not guaranteed
      catalog: asyncapi/lemonmarkets-brokerage-webhooks.yml

# ---- sandbox test values ----
- target: $.info
  update:
    x-sandbox:
      base_url: https://sandbox.api.lemon.markets/v1
      trading_halt_isins:
        XF0000000046: buy-side halt
        XF0000000053: sell-side halt
        XF0000000061: both-sides halt
      yield_isins:
        XF0000000012: success — 0.30% monthly, 3.60% annualized
        XF0000000020: 404 no yield data
        XF0000000038: 400 non-distributing profit model
      catalog: sandbox/lemonmarkets-sandbox.yml

# ---- idempotency guidance on the one operation that supports it ----
- target: $.paths['/accounts/{account_id}/orders'].post
  update:
    x-idempotent: true
    x-idempotency-key-header: Idempotency-Key
    x-retry-guidance: >-
      Retry 5XX responses with exponential backoff reusing the same Idempotency-Key; the
      cached 201 is returned instead of creating a duplicate order. A replay with a changed
      payload returns 422.

# ---- deprecation, announced in the changelog ----
- target: $.paths['/businesses/{business_id}/submit_document'].post
  update:
    deprecated: true
    x-deprecated-on: '2026-06-24'
    x-replacement-operation: submit_document_upload
    x-deprecation-notice: https://developer.lemon.markets/changelog/2026-06-24

# ---- regulatory context ----
- target: $.info
  update:
    x-regulatory:
      regulator: BaFin
      regime: Wertpapierinstitutsgesetz (WpIG)
      authorizations:
      - principal broking
      - investment broking
      - portfolio management
      - safekeeping and administration of financial instruments
      source: https://www.lemon.markets/