generated: '2026-07-19' method: searched source: https://developer.lendkey.com/default/documentation/os-treasury-management-prod sources: - https://developer.lendkey.com/default/documentation/integration-api - https://developer.lendkey.com/default/documentation/os-treasury-management-prod - https://developer.lendkey.com/default/documentation/esign-kotlin-prod - https://developer.lendkey.com/default/documentation/loan-origination-partner-integration-prod - openapi/lendkey-integration-openapi.yml - openapi/lendkey-treasury-management-openapi.yml - openapi/lendkey-esign-openapi.yml - openapi/lendkey-partner-integration-internal-openapi.yml summary: >- LendKey fronts its APIs with a Kong Gateway. Every documented API uses the OAuth2 client-credentials grant to mint a bearer token at a per-route /oauth2/token endpoint, then expects Authorization: Bearer on each call. Kong strips the route prefix and injects backend credentials, so consumers never handle the OutSystems or Kubernetes service credentials directly. Two distinct response envelopes are in use: the Spring Boot Integration API returns HAL (application/hal+json) with a timestamp/status/message/subErrors error object, while the Kong-fronted Treasury Management, E-Sign and Partner Integration APIs return a flat JSON envelope keyed on isSuccess / statusCode / errors. gateway: product: Kong Gateway behavior: - Validates the OAuth2 access token before routing. - Strips the environment route prefix (e.g. /TreasuryMgmtQa) from the path. - Injects backend authentication headers (X-Auth-Key, X-Auth-AppId) for the OutSystems-backed Treasury Management service. - Route names are case-insensitive (/TreasuryMgmt, /treasurymgmt, /TREASURYMGMT). source: https://developer.lendkey.com/default/documentation/os-treasury-management-prod authentication: style: oauth2-client-credentials token_endpoint_pattern: "/oauth2/token" grant_type: client_credentials credential_source: Kong Developer Portal (client_id / client_secret) request_header: "Authorization: Bearer " token_lifetime_seconds: 7200 token_lifetime_note: >- Treasury Management, E-Sign and Partner Integration document a 2-hour (7200s) token. The Integration API documents a 60-minute token and takes HTTP Basic (base64 clientId:clientSecret) on the Authorization header of the token call rather than form-encoded client_id/client_secret. integration_api_token_note: >- POST /v1/oauth2/token with Authorization: "Basic " and a form-encoded grant_type=client_credentials body. artifact: authentication/lendkey-authentication.yml idempotency: supported: false evidence: >- No Idempotency-Key header, idempotency parameter, or retry-safety guidance appears in any of the four published OpenAPI documents or the portal docs. Write operations do carry caller-supplied external identifiers (externalID, paymentId, externalId, application_uuid) which act as natural keys but are not documented as idempotency keys. caller_supplied_keys: - field: externalID operation: createLoan api: treasury-management - field: externalID operation: createDisbursement api: treasury-management - field: paymentId operation: createPayment api: treasury-management - field: application_uuid operation: createApplicationContract api: esign pagination: style: hal supported_on: Integration API (application/hal+json responses only) response_fields: envelope: page fields: - number - size - totalElements - totalPages links: _links (link objects with an href) note: >- A HAL page/link component pair is defined in the Integration API schema set. The Kong-fronted Treasury Management, E-Sign and Partner Integration APIs return unpaginated arrays or single objects and document no paging parameters. versioning: scheme: uri-path current: v1 detail: >- Integration API, Treasury Management and Partner Integration operations are namespaced under /v1/. The E-Sign API is unversioned in-path and carries info.version 0.1. Environments are selected by host and Kong route prefix, not by a version header. artifact: lifecycle/lendkey-lifecycle.yml error_envelopes: - name: kong-json used_by: [treasury-management, esign, partner-integration-internal] media_type: application/json shape: isSuccess: boolean (false on error) statusCode: integer (mirrors the HTTP status) error: string errors: array of strings partial_success: >- Treasury Management write operations can return HTTP 207 Multi-Status with a responseDetails[] array carrying per-item errors[], so a 2xx does not guarantee every item in the batch succeeded — always inspect isSuccess and responseDetails[].errors. - name: hal-problem used_by: [integration] media_type: application/hal+json shape: id: uuid correlating the error occurrence status: string (e.g. BAD_REQUEST, NOT_FOUND, "403") message: string debugMessage: string (nullable) timestamp: string subErrors: array of {object, field, rejectedValue, message} artifact: errors/lendkey-problem-types.yml request_tracing: request_id_header: null correlation: >- No request-id or correlation header is documented. The Integration API error body carries an `id` UUID per error occurrence, which is the only correlator published. The Partner Integration Internal API exists specifically to log request/response pairs and accepts X-Organization-Id, requestSource and requestedBy headers for attribution. attribution_headers: - name: X-Organization-Id api: partner-integration-internal description: UUID of the organization on whose behalf the request was created. - name: requestSource api: partner-integration-internal description: >- Source name in the convention sourcetype_productname_sourcename, where sourcetype is INT (internal) or EXT (external), e.g. INT_HIL_MERCHANT_PORTAL. - name: requestedBy api: partner-integration-internal description: Email address of the user sending the request. rate_limiting: documented: false signaling_headers: [] note: >- No rate-limit headers, quotas or Retry-After guidance are published. Kong Gateway is capable of rate limiting but LendKey documents no consumer-facing limits. media_types: - application/json - application/hal+json - application/x-www-form-urlencoded field_expansion: supported: false sparse_fieldsets: supported: false metadata: supported: false note: >- No generic metadata bag. Extensibility is via caller-supplied external identifiers and the searchableValues '###'-delimited string on request logs. cross_links: authentication: authentication/lendkey-authentication.yml scopes: scopes/lendkey-scopes.yml errors: errors/lendkey-problem-types.yml lifecycle: lifecycle/lendkey-lifecycle.yml sandbox: sandbox/lendkey-sandbox.yml conformance: conformance/lendkey-conformance.yml