Uncapped Applicants API

Applicant API for external access

OpenAPI Specification

uncapped-applicants-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: api-partners Applicants API
  description: "Change log:<br>\n1.4.0 (2026-06-01)\n<ul>\n  <li>Signals: Added <code>productType</code> field to Signal response of <code>GET /applicants/{partnerApplicantId}/signals</code>. Values: <code>MCA</code>, <code>TERM_LOAN</code>, <code>LOC</code>.</li>\n</ul>\n1.3.0\n<ul>\n  <li>Webhooks: Added new event for completed batch estimations.</li>\n  <li>Applicants: Added endpoint to list pre-offer estimations for applicants.</li>\n  <li>Applicant Onboarding: Added asynchronous enrichment of applicant details after redirect journey to pre-fill onboarding data.</li>\n</ul>\n1.2.0\n<ul>\n  <li>Partners can now batch submit pre-offer estimations requests to pre-load Signals before applicants reach the UI.</li>\n</ul>\n1.1.0\n<ul>\n  <li>New endpoint to retrieve a list of all applications. Supports pagination and filtering.</li>\n  <li>Webhooks: Added support for real-time event notifications. Users can now register listener URLs to receive automated updates on Application changes and\n    expired Estimations.\n  </li>\n</ul>\n1.0.0 initial release"
  version: 1.4.0
servers:
- url: https://dev.weareuncapped.com/api/partners
  description: Sandbox server
- url: https://portal.weareuncapped.com/api/partners
  description: Production server
security:
- auth0_bearer:
  - read
  - write
tags:
- name: Applicants
  description: Applicant API for external access
paths:
  /applicants/{partnerApplicantId}/enrichment/details:
    put:
      tags:
      - Applicants
      summary: Enrich applicant details
      description: 'Allows partners to enrich applicant details by providing additional information.

        **Partner Integration Guidelines:**

        - Use ISO 8601 date format (yyyy-MM-dd)

        - Use ISO 3166-1 alpha-3 country codes and nationality (e.g., USA, CAN, GBR, POL)

        - Use ISO 3166-2 state codes (e.g., CA, NY, TX, ON)

        - Applicant user id is required when any related user details fields are provided (email, first name, last name, personal phone number,

        date of birth, address)

        '
      operationId: enrichApplicantDetails
      parameters:
      - name: partnerApplicantId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicantEnrichmentRequest'
            example:
              legalName: Test Company
              companyRegistrationId: company-registration-id
              mainRevenueSource: Amazon
              mainStoreUrl: https://www.amazon.com/store/test
              address:
                addressLine1: Rode Drive 123
                addressLine2: null
                city: Los Angeles
                zip: '90001'
                stateRegion: CA
                country: USA
              applicantUsers:
              - id: applicant-user-1
                email: john@email.com
                firstName: John
                lastName: Doe
                personalPhoneNumber: 123-456-7890
                dateOfBirth: '1990-01-01'
                nationality: USA
                address:
                  street: 123 Main St
                  buildingNumber: '5'
                  apartmentNumber: '40'
                  city: Los Angeles
                  zip: '90001'
                  stateRegion: CA
                  country: USA
        required: true
      responses:
        '200':
          description: Enrichment successful
        '404':
          description: Applicant not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '400':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Access denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /applicants/{partnerApplicantId}/signals:
    get:
      tags:
      - Applicants
      summary: Get applicant signals
      description: Retrieves signals associated with a specific applicant for a given partner.
      operationId: getSignals
      parameters:
      - name: partnerApplicantId
        in: path
        required: true
        schema:
          type: string
      - name: partnerApplicantUserId
        in: query
        required: true
        schema:
          type: string
          minLength: 1
      - name: locale
        in: query
        required: false
        schema:
          type: string
          default: en_US
      - name: highlights
        in: query
        required: false
        schema:
          type: boolean
          default: false
      responses:
        '400':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Access denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '200':
          description: Get signals
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Signal'
  /applicants/{partnerApplicantId}/estimations/pre-offers:
    get:
      tags:
      - Applicants
      summary: List pre-offer estimations for applicant
      description: Returns a paginated list of all pre-offer estimations for the given applicant with optional filtering.
      operationId: getPreOfferEstimations
      parameters:
      - name: partnerApplicantId
        in: path
        required: true
        schema:
          type: string
      - name: id
        in: query
        required: false
        schema:
          type: string
      - name: status
        in: query
        required: false
        schema:
          type: string
          enum:
          - ELIGIBILITY_COMPLETE_DATA
          - ELIGIBILITY_MINIMAL_DATA
          - ELIGIBILITY_PENDING_VERIFICATION
          - ELIGIBILITY_UNDEFINED
          - ELIGIBILITY_DATA_INSUFFICIENT
          - NON_ELIGIBLE
          - COOLING_PERIOD
      - name: productType
        in: query
        required: false
        schema:
          type: string
          enum:
          - MCA
          - TERM_LOAN
          - LOC
      - name: stage
        in: query
        required: false
        schema:
          type: string
          enum:
          - ACTIVE
          - EXPIRED
          - SUPERSEDED
          - CONVERTED
      - name: createdDateFrom
        in: query
        required: false
        schema:
          type: string
          format: date
      - name: createdDateTo
        in: query
        required: false
        schema:
          type: string
          format: date
      - name: page
        in: query
        description: Zero-based page index (0..N)
        required: false
        schema:
          type: integer
          default: 0
          minimum: 0
      - name: size
        in: query
        description: The size of the page to be returned
        required: false
        schema:
          type: integer
          default: 50
          minimum: 1
      - name: sort
        in: query
        description: 'Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.'
        required: false
        schema:
          type: array
          default:
          - createdAt,DESC
          items:
            type: string
      responses:
        '200':
          description: Pre-offer estimations found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PreOfferEstimationsPageResponse'
        '404':
          description: Applicant not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '400':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Access denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /applicants/{partnerApplicantId}/applications:
    get:
      tags:
      - Applicants
      summary: List applications for applicant
      description: Returns all applications for the given partnerApplicantId with optional status filtering and pagination.
      operationId: getApplications
      parameters:
      - name: partnerApplicantId
        in: path
        required: true
        schema:
          type: string
      - name: status
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - CREATED
            - STARTED
            - APPROVED
            - REJECTED
            - ACTIVE
            - CLOSED
            - ABANDONED
      - name: page
        in: query
        description: Zero-based page index (0..N)
        required: false
        schema:
          type: integer
          default: 0
          minimum: 0
      - name: size
        in: query
        description: The size of the page to be returned
        required: false
        schema:
          type: integer
          default: 50
          minimum: 1
      - name: sort
        in: query
        description: 'Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.'
        required: false
        schema:
          type: array
          default:
          - createdAt,DESC
          items:
            type: string
      responses:
        '200':
          description: Applications found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApplicationsPageResponse'
        '404':
          description: Applicant not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '400':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Access denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    CodeMessage:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
        fieldName:
          type: string
    ApplicantEnrichmentRequest:
      type: object
      properties:
        legalName:
          type: string
        companyRegistrationId:
          type: string
        mainRevenueSource:
          type: string
          enum:
          - Amazon
          - Shopify
          - Walmart
          - Unknown
        mainStoreUrl:
          type: string
        address:
          $ref: '#/components/schemas/CompanyAddressDetails'
        applicantUsers:
          type: array
          items:
            $ref: '#/components/schemas/ApplicantUserDetails'
    ApplicantUserDetails:
      type: object
      properties:
        id:
          type: string
    CompanyAddressDetails:
      type: object
      properties:
        addressLine1:
          type: string
        addressLine2:
          type: string
        city:
          type: string
        zip:
          type: string
        stateRegion:
          type: string
        country:
          type: string
          pattern: ^\p{Lu}{3}$
    PreOfferEstimationListItemResponse:
      type: object
      properties:
        id:
          type: string
        partnerApplicantId:
          type: string
        productType:
          type: string
          enum:
          - MCA
          - TERM_LOAN
          - LOC
        status:
          type: string
          enum:
          - ELIGIBILITY_COMPLETE_DATA
          - ELIGIBILITY_MINIMAL_DATA
          - ELIGIBILITY_PENDING_VERIFICATION
          - ELIGIBILITY_UNDEFINED
          - ELIGIBILITY_DATA_INSUFFICIENT
          - NON_ELIGIBLE
          - COOLING_PERIOD
        createdDate:
          type: string
          format: date-time
        expirationDate:
          type: string
          format: date
        stage:
          type: string
          enum:
          - ACTIVE
          - EXPIRED
          - SUPERSEDED
          - CONVERTED
        maxAmount:
          type: number
        currency:
          type: string
        maxTerm:
          type: string
        maxMonthlyFee:
          type: number
        minMonthlyFee:
          type: number
    SignalAction:
      type: object
      properties:
        text:
          type: string
        url:
          type: string
    ExternalApplicationListItemResponse:
      type: object
      properties:
        id:
          type: string
        status:
          type: string
          enum:
          - CREATED
          - STARTED
          - APPROVED
          - REJECTED
          - ACTIVE
          - CLOSED
          - ABANDONED
        partnerApplicantId:
          type: string
        estimationId:
          type: string
        createdDate:
          type: string
          format: date-time
        applicantUsers:
          type: array
          items:
            $ref: '#/components/schemas/ApplicantUserDetails'
    Signal:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
          enum:
          - PRE_OFFER
          - APPLICATION
        productType:
          type: string
          enum:
          - MCA
          - TERM_LOAN
          - LOC
        title:
          type: string
        description:
          type: string
        titleTemplate:
          type: string
        descriptionTemplate:
          type: string
        highlights:
          type: array
          items:
            $ref: '#/components/schemas/SignalHighlight'
        action:
          type: array
          items:
            $ref: '#/components/schemas/SignalAction'
    PreOfferEstimationsPageResponse:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/PreOfferEstimationListItemResponse'
        page:
          type: integer
          format: int32
        size:
          type: integer
          format: int32
        totalElements:
          type: integer
          format: int64
        totalPages:
          type: integer
          format: int32
    ErrorResponse:
      type: object
      properties:
        message:
          type: string
        code:
          type: string
        details:
          type: array
          items:
            $ref: '#/components/schemas/CodeMessage'
    ApplicationsPageResponse:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/ExternalApplicationListItemResponse'
        page:
          type: integer
          format: int32
        size:
          type: integer
          format: int32
        totalElements:
          type: integer
          format: int64
        totalPages:
          type: integer
          format: int32
    SignalHighlight:
      type: object
      properties:
        key:
          type: string
        label:
          type: string
        type:
          type: string
          enum:
          - text
          - money
          - percent
          - date
        value: {}
  securitySchemes:
    auth0_bearer:
      type: http
      name: authorization
      scheme: bearer
      bearerFormat: JWT