Good Leap

GoodLeap (formerly Loanpal) is a fintech platform providing point-of-sale financing for sustainable home improvements — solar and battery storage, efficient heating and cooling, roofing and ventilation, water conservation, and energy-efficient windows. Its Developer API (v2, POS financing) lets approved partners originate and manage home-improvement loans through the full lifecycle: authentication and elevation, offers and payment calculation, loan submission, status and timeline tracking, case (stipulation) management, document upload via pre-signed URLs, project and milestone management, change orders, notes, tags, and user management. Authentication is JWT bearer; partner credentials from developer.goodleap.com are required. This profile was surfaced as a portfolio company of Ribbit Capital and enriched from GoodLeap's public developer surface (developer portal + public Postman collection).

Good Leap publishes 1 API on the APIs.io network: GoodLeap Developer API. Tagged areas include Company, Fintech, Financing, Lending, and Solar.

Good Leap’s developer surface includes documentation, API reference, engineering blog, support, authentication, sandbox, and 18 more developer resources.

37.9/100 thin Agent 58/100 agent ready Full breakdown ↓
scored 2026-07-20 · rubric v0.4
1 APIs 0 Features
CompanyFintechFinancingLendingSolarHome ImprovementSustainabilityPoint of SaleLoansPayments

API Rating

API Evangelist API Evangelist Rating How this is scored →
scored 2026-07-20 · rubric v0.4
Composite quality — 37.9/100 · thin
Contract Quality 12.8 / 25
Developer Ergonomics 13.5 / 20
Commercial Clarity 4.2 / 20
Operational Transparency 1.4 / 13
Governance 0.0 / 12
Discoverability 6.0 / 10
Agent readiness — 58/100 · agent ready
Machine-Readable Contract 18 / 18
Agentic Access Contract 15 / 15
MCP Server 12 / 12
Machine-Readable Auth 10 / 10
Idempotency 0 / 9
Stable Error Semantics 0 / 8
Request/Response Examples 0 / 7
Rate-Limit Signaling 0 / 7
Typed Event Surface 0 / 6
Agent Skills 5 / 5
Well-Known Catalog 0 / 4
Consent & Bot Identity 0 / 3
Improve this rating by publishing the missing artifacts — every area above can be raised, and the full rubric is at apis.io/rating/. This rating is computed from github.com/api-evangelist/good-leap: open an issue to ask a question, or submit a pull request to add artifacts. Want it done for you? Prioritized profiling — $2,500 →

APIs

GoodLeap Developer API

REST + JSON POS-financing API for approved partners to originate and manage sustainable home-improvement loans through their lifecycle. JWT bearer auth; v2 under /posfinancing/r...

Collections

Arazzo Workflows

_Index

ARAZZO

Originate and track a GoodLeap loan

Authenticate, submit a loan application, then track its status and next actions.

ARAZZO

Resources

Get Started 2

Portal, sign-up, and the first successful call

Documentation 3

Reference material describing how the API behaves

Agent Surfaces 4

MCP servers, agent skills, and machine-readable catalogs

Design & Contract 5

Pagination, idempotency, versioning, errors, and events

Build 1

SDKs, sample code, and the tooling you integrate with

Access & Security 4

Authentication, authorization, and security posture

Operate 1

Status, limits, changes, and where to get help

Commercial 2

Pricing, plans, and the legal terms of use

Company 2

The organization behind the API

Source (apis.yml)

apis.yml Raw ↑
info:
  _postman_id: 302c98bf-6378-4e45-94c8-12fe90a6d548
  name: GoodLeap - Developer API
  description: "The Developer API is designed for partners to originate  \nand manage loans through their lifecycle.\n\nTo\
    \ use this library you must first be gratned credentials and access to developer.goodleap.com."
  schema: https://schema.getpostman.com/json/collection/v2.0.0/collection.json
item:
- name: Version 2.0
  item:
  - name: Authorization & Elevation Management
    item:
    - name: Connected Organizations List
      id: 0dead4b4-2c95-4193-aa89-9d94d3fd9c6e
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: basic
          basic:
            username: '{{basicAuthUsername}}'
            password: '{{basicAuthPassword}}'
        method: GET
        header:
        - key: Accept
          value: application/json
        url: '{{baseUrl}}/posfinancing/rest/v2/auth/organizations'
        description: Get a list of connected organizations.
      response: []
    - name: Generate JWT Token
      id: a5f6d8ab-a8b4-4f4b-a689-45a5e7579eab
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: basic
          basic:
            username: '{{basicAuthUsername}}'
            password: '{{basicAuthPassword}}'
        method: POST
        header:
        - key: Content-Type
          value: application/json
        - key: Accept
          value: application/json
        body:
          mode: raw
          raw: "{\n  \"organizationId\": \"<string>\"\n}"
          options:
            raw:
              headerFamily: json
              language: json
        url: '{{baseUrl}}/posfinancing/rest/v2/auth/token'
        description: Returns an elevated access token with Guest claims from an input host organization.
      response: []
    - name: Refresh JWT Token
      id: caba0813-8b5c-4e2e-991f-1bb69bc1af6f
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: basic
          basic:
            username: '{{basicAuthUsername}}'
            password: '{{basicAuthPassword}}'
        method: POST
        header:
        - key: Content-Type
          value: application/json
        - key: Accept
          value: application/json
        body:
          mode: raw
          raw: "{\n  \"refreshToken\": \"<string>\"\n}"
          options:
            raw:
              headerFamily: json
              language: json
        url: '{{baseUrl}}/posfinancing/rest/v2/auth/token/refresh'
        description: Create a refreshed elevated jwt token with Guest claims from a host organization.
      response: []
    - name: Connected Parties
      id: e952bc9d-8b6b-4b15-9365-701ff0ac4c22
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: basic
          basic:
            username: '{{basicAuthUsername}}'
            password: '{{basicAuthPassword}}'
        method: GET
        header:
        - key: Accept
          value: application/json
        url: '{{baseUrl}}/posfinancing/rest/v2/parties'
        description: Get a list of connected parties.
      response: []
    id: 9a2e4f04-2595-4c16-905b-b28dd5e1dba5
  - name: States & Channels
    item:
    - name: Channels by States
      id: 06a24e58-2504-44f2-9c5d-62a27cc45ef4
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: basic
          basic:
            username: '{{basicAuthUsername}}'
            password: '{{basicAuthPassword}}'
        method: GET
        header:
        - key: Accept
          value: application/json
        url:
          raw: '{{baseUrl}}/posfinancing/rest/v2/states'
          host:
          - '{{baseUrl}}'
          path:
          - posfinancing
          - rest
          - v2
          - states
          query:
          - key: channels
            value: <string>
            disabled: true
          - key: channels
            value: <string>
            disabled: true
        description: "Get a collection of valid states for the client. \nUseful when searching for offers that are available\
          \ to an applicant in their state."
      response: []
    - name: States by Channels
      id: f411ddd9-6064-4c5a-a257-417c6bac037c
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: basic
          basic:
            username: '{{basicAuthUsername}}'
            password: '{{basicAuthPassword}}'
        method: GET
        header:
        - key: Accept
          value: application/json
        url:
          raw: '{{baseUrl}}/posfinancing/rest/v2/channels'
          host:
          - '{{baseUrl}}'
          path:
          - posfinancing
          - rest
          - v2
          - channels
          query:
          - key: states
            value: MT
            disabled: true
          - key: states
            value: MA
            disabled: true
        description: "Get a collection of valid channels for the client. \nUseful when searching for offers that are available\
          \ to an applicant given a channel under which the client\nwishes to operate."
      response: []
    id: 54d88b4f-5dd3-4e2f-9236-14111a13cda1
  - name: Promotions
    item:
    - name: Promotions
      id: 514af217-c82e-42de-b1d0-a19d1217593f
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: basic
          basic:
            username: '{{basicAuthUsername}}'
            password: '{{basicAuthPassword}}'
        method: GET
        header:
        - key: Accept
          value: application/json
        url:
          raw: '{{baseUrl}}/posfinancing/rest/v2/promotions'
          host:
          - '{{baseUrl}}'
          path:
          - posfinancing
          - rest
          - v2
          - promotions
          query:
          - key: categoryId
            value: <uuid>
            disabled: true
          - key: offerId
            value: <string>
            disabled: true
        description: Returns a collection of promotions to use when getting offers.
      response: []
    id: 78d97ea6-4f5d-4fd3-81a2-561596e80253
  - name: Install Categories & Loan Limitations
    item:
    - name: Install Categories
      id: ecd6b020-f296-42b8-b407-4842869c9985
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: basic
          basic:
            username: '{{basicAuthUsername}}'
            password: '{{basicAuthPassword}}'
        method: GET
        header:
        - key: Accept
          value: application/json
        url: '{{baseUrl}}/posfinancing/rest/v2/categories'
        description: Returns a collection of categories.
      response: []
    - name: All Loan min/max values for states and categories
      id: 72924723-d6be-4ef8-a654-2a3510fe8b22
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: basic
          basic:
            username: '{{basicAuthUsername}}'
            password: '{{basicAuthPassword}}'
        method: GET
        header:
        - key: Accept
          value: application/json
        url:
          raw: '{{baseUrl}}/posfinancing/rest/v2/categories/all/limitations'
          host:
          - '{{baseUrl}}'
          path:
          - posfinancing
          - rest
          - v2
          - categories
          - all
          - limitations
          query:
          - key: states
            value: NH
            disabled: true
          - key: states
            value: AL
            disabled: true
        description: Get categories limitations
      response: []
    - name: Loan min/max values by category ID
      id: 8406dceb-337d-49b7-8035-666ecb7b03a9
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: basic
          basic:
            username: '{{basicAuthUsername}}'
            password: '{{basicAuthPassword}}'
        method: GET
        header:
        - key: Accept
          value: application/json
        url:
          raw: '{{baseUrl}}/posfinancing/rest/v2/categories/:id/limitations'
          host:
          - '{{baseUrl}}'
          path:
          - posfinancing
          - rest
          - v2
          - categories
          - :id
          - limitations
          query:
          - key: states
            value: NH
            disabled: true
          - key: states
            value: AL
            disabled: true
          variable:
          - id: c844ccbf-e004-427f-9221-8ab261199dd4
            key: id
            value: <string>
        description: Get category limitations
      response: []
    id: 3606dd21-508f-4d50-93b2-94a9d3ee24a3
  - name: Offers
    item:
    - name: Offers
      id: f6fda08c-7662-4b0c-9f2f-faf9e66d2894
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: basic
          basic:
            username: '{{basicAuthUsername}}'
            password: '{{basicAuthPassword}}'
        method: GET
        header:
        - key: Accept
          value: application/json
        url:
          raw: '{{baseUrl}}/posfinancing/rest/v2/offers'
          host:
          - '{{baseUrl}}'
          path:
          - posfinancing
          - rest
          - v2
          - offers
          query:
          - key: channels
            value: <string>
            disabled: true
          - key: channels
            value: <string>
            disabled: true
          - key: states
            value: OH
            disabled: true
          - key: states
            value: MA
            disabled: true
          - key: categoryId
            value: <uuid>
            disabled: true
          - key: promotionIds
            value: <uuid>
            disabled: true
          - key: loanId
            value: ''
            disabled: true
        description: Returns a collection of Offers.
      response: []
    id: f3df10e2-7f00-41e2-8e53-9bdb222e60c7
  - name: Calculate Payments
    item:
    - name: Current ITC Percentage
      id: 07196e37-2126-4b14-adc2-02e56b347f1f
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: basic
          basic:
            username: '{{basicAuthUsername}}'
            password: '{{basicAuthPassword}}'
        method: GET
        header:
        - key: Accept
          value: '*/*'
        url: '{{baseUrl}}/posfinancing/rest/v2/itc-latest'
        description: Get the current ITC percentage.
      response: []
    - name: Monthly Loan Payments
      id: 1937ac49-39e6-4922-8641-96192cbe3cf6
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: basic
          basic:
            username: '{{basicAuthUsername}}'
            password: '{{basicAuthPassword}}'
        method: GET
        header:
        - key: Accept
          value: application/json
        url:
          raw: '{{baseUrl}}/posfinancing/rest/v2/payments'
          host:
          - '{{baseUrl}}'
          path:
          - posfinancing
          - rest
          - v2
          - payments
          query:
          - key: offerIds
            value: <UUID>
            description: '(Required) '
            disabled: true
          - key: offerIds
            value: <UUID>
            description: '(Required) '
            disabled: true
          - key: amount
            value: <double>
            description: '(Required) '
            disabled: true
          - key: extraPaydownAmount
            value: <double>
            disabled: true
          - key: extraPaydownPercent
            value: <double>
            disabled: true
          - key: currencyType
            value: USD
            disabled: true
          - key: promotionIds
            value: <string>
            disabled: true
          - key: promotionIds
            value: <string>
            disabled: true
        description: Calculate estimated payments for offers.
      response: []
    id: 528fe404-b095-4e54-9ec4-accf9ad1ffd6
  - name: Disclosures
    item:
    - name: Disclosures
      id: f25f8b3d-83d6-4f17-bc1c-2db5b721db66
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: basic
          basic:
            username: '{{basicAuthUsername}}'
            password: '{{basicAuthPassword}}'
        method: GET
        header:
        - key: Accept
          value: application/json
        url:
          raw: '{{baseUrl}}/posfinancing/rest/v2/disclosures'
          host:
          - '{{baseUrl}}'
          path:
          - posfinancing
          - rest
          - v2
          - disclosures
          query:
          - key: current
            value: <boolean>
            disabled: true
          - key: inputCategory
            value: solar
            type: text
            disabled: true
        description: Get a list of available disclosures.
      response: []
    id: 6a664262-380d-495b-8794-f2b0078367f4
  - name: Loan Submission
    item:
    - name: Submit Loan Application
      id: 24e60cf6-c4f8-4a73-b02f-12c3a3197282
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: basic
          basic:
            username: '{{basicAuthUsername}}'
            password: '{{basicAuthPassword}}'
        method: POST
        header:
        - key: Content-Type
          value: application/json
        - key: Accept
          value: application/json
        body:
          mode: raw
          raw: "{\n  \"applicant\": {\n    \"firstName\": \"<string>\",\n    \"lastName\": \"<string>\",\n    \"dob\": \"\
            1986-08-13\",\n    \"ssn\": \"0101\",\n    \"annualIncome\": {\n      \"type\": \"USD\",\n      \"value\": \"\
            <double>\"\n    },\n    \"email\": \"<email>\",\n    \"primaryPhoneNumber\": {\n      \"type\": \"MOBILE\",\n\
            \      \"value\": \"+16785759581\"\n    },\n    \"electronicConsent\": \"<boolean>\",\n    \"occupation\": \"\
            <string>\",\n    \"homeOccupancy\": \"SECONDARY\",\n    \"homeOwnership\": \"OWNED_WITH_MORTGAGE\",\n    \"address\"\
            : {\n      \"street\": \"<string>\",\n      \"city\": \"<string>\",\n      \"state\": \"AZ\",\n      \"zip\":\
            \ \"93781\",\n      \"street2\": \"<string>\"\n    },\n    \"employmentStatus\": \"RETIRED\",\n    \"citizenshipStatus\"\
            : \"LAWFUL_PERMANENT_RESIDENT_ALIEN\",\n    \"spokenLanguage\": \"SPANISH\",\n    \"employer\": \"<string>\",\n\
            \    \"employmentDuration\": \"<float>\",\n    \"secondaryPhoneNumber\": {\n      \"type\": \"HOME\",\n      \"\
            value\": \"+10577329886\"\n    }\n  },\n  \"submittingUser\": {\n    \"firstName\": \"<string>\",\n    \"lastName\"\
            : \"<string>\",\n    \"email\": \"<email>\",\n    \"phone\": \"<string>\"\n  },\n  \"offerId\": \"<string>\",\n\
            \  \"amount\": {\n    \"type\": \"USD\",\n    \"value\": \"<double>\"\n  },\n  \"applicantSignature\": \"<string>\"\
            ,\n  \"subjectProperty\": {\n    \"address\": {\n      \"street\": \"<string>\",\n      \"city\": \"<string>\"\
            ,\n      \"state\": \"CA\",\n      \"zip\": \"59311\",\n      \"street2\": \"<string>\"\n    },\n    \"mortgageTotalBalances\"\
            : {\n      \"type\": \"USD\",\n      \"value\": \"<double>\"\n    },\n    \"mortgageTotalPayments\": {\n     \
            \ \"type\": \"USD\",\n      \"value\": \"<double>\"\n    },\n    \"isMobileOrManufacturedHome\": \"<boolean>\"\
            \n  },\n  \"disclosureToken\": \"<string>\",\n  \"coApplicant\": {\n    \"firstName\": \"<string>\",\n    \"lastName\"\
            : \"<string>\",\n    \"dob\": \"2463-42-46\",\n    \"ssn\": \"728708467\",\n    \"annualIncome\": {\n      \"\
            type\": \"USD\",\n      \"value\": \"<double>\"\n    },\n    \"email\": \"<email>\",\n    \"primaryPhoneNumber\"\
            : {\n      \"type\": \"HOME\",\n      \"value\": \"+13478140431\"\n    },\n    \"electronicConsent\": \"<boolean>\"\
            ,\n    \"occupation\": \"<string>\",\n    \"homeOccupancy\": \"SECONDARY\",\n    \"homeOwnership\": \"OWNED_FREE_AND_CLEAR\"\
            ,\n    \"address\": {\n      \"street\": \"|Postostostost...\\t\uFEFFFFICfficfficFFICfficE᠎᠎ BOx\",\n      \"\
            city\": \"<string>\",\n      \"state\": \"NY\",\n      \"zip\": \"32262\",\n      \"street2\": \"<string>\"\n\
            \    },\n    \"employmentStatus\": \"OTHER\",\n    \"citizenshipStatus\": \"OTHER\",\n    \"spokenLanguage\":\
            \ \"ENGLISH\",\n    \"employer\": \"<string>\",\n    \"employmentDuration\": \"<float>\",\n    \"secondaryPhoneNumber\"\
            : {\n      \"type\": \"MOBILE\",\n      \"value\": \"+14479458337\"\n    }\n  },\n  \"categoryId\": \"<uuid>\"\
            ,\n  \"channel\": \"<string>\",\n  \"agent\": \"<string>\",\n  \"referenceNumber\": \"<string>\",\n  \"enrollments\"\
            : [\n    \"AUTOPAY\",\n    \"AUTOPAY\"\n  ],\n  \"parties\": [\n    {\n      \"organizationId\": \"<uuid>\",\n\
            \      \"organizationType\": \"SALES\"\n    },\n    {\n      \"organizationId\": \"<uuid>\",\n      \"organizationType\"\
            : \"SALES\"\n    }\n  ],\n  \"tags\": [\n    \"<string>\",\n    \"<string>\"\n  ]\n}"
          options:
            raw:
              headerFamily: json
              language: json
        url: '{{baseUrl}}/posfinancing/rest/v2/loans'
        description: Submit an application to create a new loan. Returns the application’s outcome
      response: []
    - name: Share Loan Application
      id: 1fcf4186-b6f1-4dd3-b7cb-0591b374bbb2
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: basic
          basic:
            username: '{{basicAuthUsername}}'
            password: '{{basicAuthPassword}}'
        method: POST
        header:
        - key: Content-Type
          value: application/json
        - key: Accept
          value: application/json
        body:
          mode: raw
          raw: "{\n  \"offerId\": \"<string>\",\n  \"state\": \"IN\",\n  \"amount\": {\n    \"type\": \"USD\",\n    \"value\"\
            : \"<double>\"\n  },\n  \"applicant\": {\n    \"firstName\": \"<string>\",\n    \"lastName\": \"<string>\",\n\
            \    \"email\": \"nDd5t@G.>d7&a\"\n  },\n  \"submittingUser\": {\n    \"firstName\": \"<string>\",\n    \"lastName\"\
            : \"<string>\",\n    \"email\": \"q=+I^@D(?uo.}IC)\",\n    \"phone\": \"<string>\"\n  },\n  \"channel\": \"<string>\"\
            ,\n  \"referenceNumber\": \"<string>\",\n  \"enrollments\": [\n    \"AUTOPAY\",\n    \"AUTOPAY\"\n  ],\n  \"additionalPaydownAmount\"\
            : {\n    \"type\": \"USD\",\n    \"value\": \"<double>\"\n  },\n  \"sendEmail\": \"<boolean>\",\n  \"parties\"\
            : [\n    {\n      \"organizationId\": \"<uuid>\",\n      \"organizationType\": \"INTEGRATOR\"\n    },\n    {\n\
            \      \"organizationId\": \"<uuid>\",\n      \"organizationType\": \"SALES\"\n    }\n  ],\n  \"tags\": [\n  \
            \  \"<string>\",\n    \"<string>\"\n  ],\n  \"decisionPageOptions\": {\n    \"redirectUrl\": \"<string>\"\n  }\n\
            }"
          options:
            raw:
              headerFamily: json
              language: json
        url: '{{baseUrl}}/posfinancing/rest/v2/loans-share'
        description: Returns the url and an optional email to the application for completion and loan submission.
      response: []
    id: 26b6193b-8520-476c-ac7e-9d3f0c6f167c
  - name: Loan Status
    item:
    - name: Loan by ID
      id: 57d97ed9-f824-4948-bf1a-8457f0b037fe
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: basic
          basic:
            username: '{{basicAuthUsername}}'
            password: '{{basicAuthPassword}}'
        method: GET
        header:
        - key: Accept
          value: application/json
        url:
          raw: '{{baseUrl}}/posfinancing/rest/v2/loans/:id'
          host:
          - '{{baseUrl}}'
          path:
          - posfinancing
          - rest
          - v2
          - loans
          - :id
          variable:
          - id: 1fb7f749-bb9b-4441-b3e2-eda8dcc7fedb
            key: id
            value: 24-85-401703
        description: Get the details of a Loan instance.
      response: []
    - name: Loan Status
      id: 55ac98d2-65a9-4a1c-ba55-f5c5b6e16b17
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: basic
          basic:
            username: '{{basicAuthUsername}}'
            password: '{{basicAuthPassword}}'
        method: GET
        header:
        - key: Accept
          value: application/json
        url:
          raw: '{{baseUrl}}/posfinancing/rest/v2/loans/:id/status'
          host:
          - '{{baseUrl}}'
          path:
          - posfinancing
          - rest
          - v2
          - loans
          - :id
          - status
          variable:
          - id: f563b8bf-188b-45dd-9ddb-e208f745554b
            key: id
            value: 44-27-695805
        description: "Get the current timestamps for the loan. \nThis can include milestones, document signing, approval status\
          \ and more."
      response: []
    - name: Loan Offer Details
      id: dd4cdca9-c743-4521-a6da-fe4fb2dc0915
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: basic
          basic:
            username: '{{basicAuthUsername}}'
            password: '{{basicAuthPassword}}'
        method: GET
        header:
        - key: Accept
          value: application/json
        url:
          raw: '{{baseUrl}}/posfinancing/rest/v2/loans/:id/offer'
          host:
          - '{{baseUrl}}'
          path:
          - posfinancing
          - rest
          - v2
          - loans
          - :id
          - offer
          variable:
          - id: cd0a1ff8-25b0-47a4-8675-063e3804bd4b
            key: id
            value: <string>
        description: Get the details of the current offer associated with a loan ID.
      response: []
    - name: List Loans
      id: c911286b-a337-46d3-967e-b9c9a81adfa0
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: basic
          basic:
            username: '{{basicAuthUsername}}'
            password: '{{basicAuthPassword}}'
        method: GET
        header:
        - key: Accept
          value: application/json
        url:
          raw: '{{baseUrl}}/posfinancing/rest/v2/loans?referenceNumber=<string>'
          host:
          - '{{baseUrl}}'
          path:
          - posfinancing
          - rest
          - v2
          - loans
          query:
          - key: referenceNumber
            value: <string>
          - key: tags
            value: <string>
            disabled: true
          - key: tags
            value: <string>
            disabled: true
        description: Get a list of loans submitted by the client.
      response: []
    - name: Loan Timeline
      id: 13414844-19a6-424a-b90f-31ffacd4d277
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: basic
          basic:
            username: '{{basicAuthUsername}}'
            password: '{{basicAuthPassword}}'
        method: GET
        header:
        - key: Accept
          value: application/json
        url:
          raw: '{{baseUrl}}/posfinancing/rest/v2/loans/:id/timeline'
          host:
          - '{{baseUrl}}'
          path:
          - posfinancing
          - rest
          - v2
          - loans
          - :id
          - timeline
          variable:
          - id: b6898827-a612-4709-9539-c12127829ff5
            key: id
            value: 54-07-370220
        description: Get the loan timeline.
      response: []
    - name: Next Available Loan Actions
      id: 839ae7d3-c2a5-4d37-9b9b-df418439e55a
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: basic
          basic:
            username: '{{basicAuthUsername}}'
            password: '{{basicAuthPassword}}'
        method: GET
        header:
        - key: Accept
          value: application/json
        url:
          raw: '{{baseUrl}}/posfinancing/rest/v2/loans/:id/actions'
          host:
          - '{{baseUrl}}'
          path:
          - posfinancing
          - rest
          - v2
          - loans
          - :id
          - actions
          variable:
          - id: a9ab3b4f-6e05-4b71-9167-0109040a1419
            key: id
            value: 44-27-695805
        description: Get the next actions for a loan.
      response: []
    id: e7a131f9-5ae8-422a-8bee-30e9c6685722
  - name: Case (loan stipulations) Management
    item:
    - name: Cases
      id: 71bb5222-650b-4a3f-9fba-bdd9c6abe90b
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: basic
          basic:
            username: '{{basicAuthUsername}}'
            password: '{{basicAuthPassword}}'
        method: GET
        header:
        - key: Accept
          value: application/json
        url:
          raw: '{{baseUrl}}/posfinancing/rest/v2/loans/:id/cases'
          host:
          - '{{baseUrl}}'
          path:
          - posfinancing
          - rest
          - v2
          - loans
          - :id
          - cases
          variable:
          - id: 81e2aa08-ea38-4b3b-a857-fcd30b543dfa
            key: id
            value: 24-85-401703
        description: Returns a collection of cases.
      response: []
    - name: Case Upload URL
      id: bcdbbc24-b166-457f-97ae-499da53e6712
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: basic
          basic:
            username: '{{basicAuthUsername}}'
            password: '{{basicAuthPassword}}'
        method: GET
        header:
        - key: Accept
          value: application/json
        url:
          raw: '{{baseUrl}}/posfinancing/rest/v2/loans/:id/cases/:caseId/uploadurl'
          host:
          - '{{baseUrl}}'
          path:
          - posfinancing
          - rest
          - v2
          - loans
          - :id
          - cases
          - :caseId
          - uploadurl
          query:
          - key: mimeType
            value: application/pdf
            disabled: true
          - key: docType
            value: DEED_OF_TRUST
            disabled: true
          variable:
          - id: 2cf90748-cf14-4705-9359-59d0dbe67ffc
            key: id
            value: 24-85-401703
          - id: 4a9e7918-c189-4a5b-bbd6-630a87f690c4
            key: caseId
            value: <uuid>
        description: Get a single-use, signed URL to upload a case document.
      response: []
    - name: Upload Document to Pre-signed URL
      id: 6a8d5575-438e-4e91-9d15-3e5396f28081
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: noauth
        method: PUT
        header:
        - key: Accept
          value: application/json
        body:
          mode: file
          file: {}
        url: <pre-signed url>
        description: Get a single-use, signed URL to upload a case document.
      response: []
    - name: Update Sales Rep State License Info
      id: c4268593-e2aa-4aac-9a5e-de89f12d1dc4
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: basic
          basic:
            username: '{{basicAuthUsername}}'
            password: '{{basicAuthPassword}}'
        method: PUT
        header:
        - key: Content-Type
          value: application/json
        - key: Accept
          value: application/json
        body:
          mode: raw
          raw: "{\n  \"caseId\": \"<uuid>\",\n  \"stepId\": \"<uuid>\",\n  \"action\": \"<string>\",\n  \"jsonData\": \"<string>\"\
            \n}"
          options:
            raw:
              headerFamily: json
              language: json
        url:
          raw: '{{baseUrl}}/posfinancing/rest/v2/loans/:loanId/cases'
          host:
          - '{{baseUrl}}'
          path:
          - posfinancing
          - rest
          - v2
          - loans
          - :loanId
          - cases
          variable:
          - id: 9ca71d85-b166-4214-8480-c6666e1673c5
            key: loanId
            value: 24-85-401703
        description: Update a loan’s case information.
      response: []
    - name: GoodLeap Borrower Portal URL
      id: 35fcbef2-0f4e-4e4d-a36e-14ab32d45feb
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: basic
          basic:
            username: '{{basicAuthUsername}}'
            password: '{{basicAuthPassword}}'
        method: GET
        header:
        - key: Accept
          value: application/json
        url:
          raw: '{{baseUrl}}/posfinancing/rest/v2/loans/:id/portals/borrower-upload-url'
          host:
          - '{{baseUrl}}'
          path:
          - posfinancing
          - rest
          - v2
          - loans
          - :id
          - portals
          - borrower-upload-url
          variable:
          - id: 27b8d604-3967-4842-9f18-3048f6106477
            key: id
            value: 24-85-401703
        description: URL redirect to the GoodLeap hosted borrower upload experience to upload documents for cases.
      response: []
    - name: Socure Identity Verification
      id: 51c5c49d-4bdc-44a2-b5a2-0aab654dc38d
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: basic
          basic:
            username: '{{basicAuthUsername}}'
            password: '{{basicAuthPassword}}'
        method: GET
        header:
        - key: Accept
          value: application/json
        url:
          raw: '{{baseUrl}}/posfinancing/rest/v2/cases/:id/identity-verification'
          host:
          - '{{baseUrl}}'
          path:
          - posfinancing
          - rest
          - v2
          - cases
          - :id
          - identity-verification
          query:
          - key: documentType
            value: <string>
            description: The type of the document to be scanned
            disabled: true
          - key: mobileNumber
            value: <string>
            description: The phone number to send the SMS to
            disabled: true
          - key: sendSms
            value: <boolean>
            description: Indicates if an SMS should be sent
            disabled: true
          variable:
          - key: id
            value: ''
      response: []
    id: 47c480cd-9de1-40bd-8e95-f991af1644be
  - name: Loan Documents Management
    item:
    - name: Home Improvement Contract Upload URL
      id: ac7d720a-edc1-49f3-8dbb-65181a0ef64e
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: basic
          basic:
            username: '{{basicAuthUsername}}'
            password: '{{basicAuthPassword}}'
        method: GET
        header:
        - key: Accept
          value: application/json
        url:
          raw: '{{baseUrl}}/posfinancing/rest/v2/loans/:id/uploadurls?uploadType=HIC'
          host:
          - '{{baseUrl}}'
          path:
          - posfinancing
          - rest
          - v2
          - loans
          - :id
          - uploadurls
          query:
          - key: uploadType
            value: HIC
          variable:
          - key: id
            value: ''
        description: Get a single-use, signed URL to upload a case document.
      response: []
    - name: Upload HIC to Pre-signed URL
      id: fb85d078-f25a-4e48-b513-de2243c78f75
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: noauth
        method: PUT
        header:
        - key: Accept
          value: application/json
        body:
          mode: file
          file: {}
        url: <pre-signed url>
        description: Get a single-use, signed URL to upload a case document.
      response: []
    - name: Send Loan Documents
      id: c9268e0c-8b0e-401b-8cda-1ff8390e6732
      protocolProfileBehavior:
        disableBodyPruning: true
      request:
        auth:
          type: basic
          basic:
            username: '{{basicAuthU

# --- truncated at 32 KB (64 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/good-leap/refs/heads/main/apis.yml