> ## Documentation Index
> Fetch the complete documentation index at: https://docs.skortorent.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Upload Tenant Documents

> Upload one or more documents for a tenant.
At least one document is required.

**File size limits:**
- Each individual document must not exceed **4 MB**.
- The combined size of all documents uploaded in a single request
  must not exceed **20 MB**.

If `fileType` is set to `unknown-type`, document analysis will be initiated
automatically after upload.

### Asynchronous Processing

Document analysis is performed as an **Asynchronous operation**.
The API response confirms successful upload, while analysis is processed
in the background.

### Document Analysis Completion Webhook

When document analysis from Skor Lite is completed successfully, a webhook
event with the name `DOCUMENT_ANALYSIS_DATA` is sent to the configured
webhook endpoint.

**The webhook payload contains:**
- `event`: Event name (`DOCUMENT_ANALYSIS_DATA`)
- `data`: Document analysis result data

In case of document analysis failure, the process is automatically handled
by the SKOR system and does not require manual retries from the client.

The configured webhook endpoint **must accept POST requests**.

### Required Documents by Employment Type
The documents required for a tenant depend on their declared
**employment status**. Each employment type requires documents
across one or more of the following categories:

- **Identification**: Documents used to verify the tenant’s identity
- **Employment Status**: Documents proving current employment or activity
- **Income / Tax Documents**: Documents used to assess income and financial stability

### Student:
**Identification**
- Passport
- National Identity Card (Front)
- National Identity Card (Back)
- Residence Permit (Front)
- Residence Permit (Back)
**Employment / Status**
- University Acceptance Letter
- Student Registration Contract

### Employed:

**Identification**
- Passport
- National Identity Card (Front)
- National Identity Card (Back)
- Residence Permit (Front)
- Residence Permit (Back)

**Employment Status**
- Employment Contract
- Working Life Certificate

**Income Documents**
- Payslip
- Deduction Certificate
- Last Annual Tax Report (Model 100)

### Self-Employed (Freelancer):

**Identification**
- Passport
- National Identity Card (Front)
- National Identity Card (Back)
- Residence Permit (Front)
- Residence Permit (Back)

**Employment Status**
- Employment Contract
- Working Life Certificate

**Income Documents**
- Last Annual Tax Report (Model 100)
- Last Fractionated Tax Report (Model 130)
- Deduction Certificate
- Last Quarterly VAT Tax (Form 303)

### Self-Employed (Own a Company):

  **Identification**
  - Passport
  - National Identity Card (Front)
  - National Identity Card (Back)
  - Residence Permit (Front)
  - Residence Permit (Back)

  **Employment Status**
  - Working Life Certificate

  **Income Documents**
  - Last Annual Tax Report (Model 100)
  - Last Quarterly VAT Tax (Form 303)
  - Deduction Certificate
  - Last Year’s Corporate Tax Return
  - Last Year’s Corporate Balance Sheet
  - Last Year’s Corporate Profit & Loss Statement

### Retired:

**Identification**
- Passport
- National Identity Card (Front)
- National Identity Card (Back)
- Residence Permit (Front)
- Residence Permit (Back)

**Income Documents**
- Comprehensive Certificate of Benefits
- Last Revalorization Letter

### Unemployed:

**Identification**
- Passport
- National Identity Card (Front)
- National Identity Card (Back)
- Residence Permit (Front)
- Residence Permit (Back)

**Employment History**
- Working Life Certificate

**Income Documents**
- Comprehensive Certificate of Benefits
- Last Annual Tax Report (Model 100)


### Public Servant:

**Identification**
- Passport
- National Identity Card (Front)
- National Identity Card (Back)
- Residence Permit (Front)
- Residence Permit (Back)

**Employment Status**
- Working Life Certificate

**Income / Tax Documents**
- Last Annual Tax Report (Model 100)
- Payslip
- Deduction Certificate




## OpenAPI

````yaml /api-reference/openapi.yaml post /tenants/upload-documents/{tenantId}
openapi: 3.1.0
info:
  title: SKOR Modular API
  version: 1.0.0
  description: >
    ## Overview

    This is the SKOR Modular API v1. It provides access to tenant

    workflows, API keys, webhooks, document processing, identity

    verification, banking connectivity, and forensic analysis.


    ## Error Statuses


    The API uses standard HTTP status codes to indicate the success

    or failure of requests. Each error response provides guidance

    to help identify the issue and take corrective action.


    ### Success — `200 OK`

    The request was processed successfully and the expected response

    data is returned.


    ### Validation Error — `400 Bad Request`

    The request is invalid due to missing, malformed, or incorrect

    parameters.


    **Common causes:**

    - Required fields are missing from the request.

    - Invalid data formats or unsupported values are provided.

    - File size or payload limits are exceeded.


    **How to resolve:**

    - Verify all required parameters are present.

    - Ensure the request payload matches the documented schema.

    - Validate data formats and constraints before retrying.


    ### Unauthorized — `401 Unauthorized`

    Authentication failed or the provided token is missing or invalid.


    **Common causes:**

    - The `Authorization` header is missing.

    - An invalid or expired bearer token is provided.


    **How to resolve:**

    - Ensure the token is included in the request as an `Authorization: Bearer
    <token>` header.

    - Verify the token is valid and has not expired.

    - Generate a new token if required.


    ### Not Found — `404 Not Found`

    The requested resource does not exist or is not accessible.


    **Common causes:**

    - An invalid or non-existent resource identifier.

    - The resource has not been created or has been deleted.


    **How to resolve:**

    - Confirm the resource identifier is correct.

    - Ensure the resource exists before accessing it.


    ### Server Error — `500 Internal Server Error`

    An unexpected error occurred on the server while processing the request.


    **How to resolve:**

    - Retry the request after a short delay.

    - If the issue persists, **[contact us](mailto:info@skortorent.com)** with
    relevant request details.


    ### Need Help?

    If you encounter unexpected behavior,

    please **[contact us](mailto:info@skortorent.com)** for assistance.
servers:
  - url: https://api.skortorent.com/api/v1
    description: Live
  - url: https://dev-api.skortorent.com/api/v1
    description: Sandbox
security:
  - BearerAuth: []
paths:
  /tenants/upload-documents/{tenantId}:
    post:
      tags:
        - Tenants
      summary: Upload Tenant Documents
      description: >
        Upload one or more documents for a tenant.

        At least one document is required.


        **File size limits:**

        - Each individual document must not exceed **4 MB**.

        - The combined size of all documents uploaded in a single request
          must not exceed **20 MB**.

        If `fileType` is set to `unknown-type`, document analysis will be
        initiated

        automatically after upload.


        ### Asynchronous Processing


        Document analysis is performed as an **Asynchronous operation**.

        The API response confirms successful upload, while analysis is processed

        in the background.


        ### Document Analysis Completion Webhook


        When document analysis from Skor Lite is completed successfully, a
        webhook

        event with the name `DOCUMENT_ANALYSIS_DATA` is sent to the configured

        webhook endpoint.


        **The webhook payload contains:**

        - `event`: Event name (`DOCUMENT_ANALYSIS_DATA`)

        - `data`: Document analysis result data


        In case of document analysis failure, the process is automatically
        handled

        by the SKOR system and does not require manual retries from the client.


        The configured webhook endpoint **must accept POST requests**.


        ### Required Documents by Employment Type

        The documents required for a tenant depend on their declared

        **employment status**. Each employment type requires documents

        across one or more of the following categories:


        - **Identification**: Documents used to verify the tenant’s identity

        - **Employment Status**: Documents proving current employment or
        activity

        - **Income / Tax Documents**: Documents used to assess income and
        financial stability


        ### Student:

        **Identification**

        - Passport

        - National Identity Card (Front)

        - National Identity Card (Back)

        - Residence Permit (Front)

        - Residence Permit (Back)

        **Employment / Status**

        - University Acceptance Letter

        - Student Registration Contract


        ### Employed:


        **Identification**

        - Passport

        - National Identity Card (Front)

        - National Identity Card (Back)

        - Residence Permit (Front)

        - Residence Permit (Back)


        **Employment Status**

        - Employment Contract

        - Working Life Certificate


        **Income Documents**

        - Payslip

        - Deduction Certificate

        - Last Annual Tax Report (Model 100)


        ### Self-Employed (Freelancer):


        **Identification**

        - Passport

        - National Identity Card (Front)

        - National Identity Card (Back)

        - Residence Permit (Front)

        - Residence Permit (Back)


        **Employment Status**

        - Employment Contract

        - Working Life Certificate


        **Income Documents**

        - Last Annual Tax Report (Model 100)

        - Last Fractionated Tax Report (Model 130)

        - Deduction Certificate

        - Last Quarterly VAT Tax (Form 303)


        ### Self-Employed (Own a Company):

          **Identification**
          - Passport
          - National Identity Card (Front)
          - National Identity Card (Back)
          - Residence Permit (Front)
          - Residence Permit (Back)

          **Employment Status**
          - Working Life Certificate

          **Income Documents**
          - Last Annual Tax Report (Model 100)
          - Last Quarterly VAT Tax (Form 303)
          - Deduction Certificate
          - Last Year’s Corporate Tax Return
          - Last Year’s Corporate Balance Sheet
          - Last Year’s Corporate Profit & Loss Statement

        ### Retired:


        **Identification**

        - Passport

        - National Identity Card (Front)

        - National Identity Card (Back)

        - Residence Permit (Front)

        - Residence Permit (Back)


        **Income Documents**

        - Comprehensive Certificate of Benefits

        - Last Revalorization Letter


        ### Unemployed:


        **Identification**

        - Passport

        - National Identity Card (Front)

        - National Identity Card (Back)

        - Residence Permit (Front)

        - Residence Permit (Back)


        **Employment History**

        - Working Life Certificate


        **Income Documents**

        - Comprehensive Certificate of Benefits

        - Last Annual Tax Report (Model 100)



        ### Public Servant:


        **Identification**

        - Passport

        - National Identity Card (Front)

        - National Identity Card (Back)

        - Residence Permit (Front)

        - Residence Permit (Back)


        **Employment Status**

        - Working Life Certificate


        **Income / Tax Documents**

        - Last Annual Tax Report (Model 100)

        - Payslip

        - Deduction Certificate
      parameters:
        - $ref: '#/components/parameters/TenantIdParam'
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - docs
                - fileType
              properties:
                docs:
                  type: array
                  minItems: 1
                  description: >
                    One or more documents to upload. Each document must not
                    exceed 4 MB. The total upload size per request must not
                    exceed 20 MB.

                    Allowed file types: - application/pdf - image/jpeg -
                    image/jpg - image/png
                  items:
                    type: string
                    format: binary
                    contentMediaType:
                      - application/pdf
                      - image/jpeg
                      - image/jpg
                      - image/png
                fileType:
                  type: string
                  description: >
                    Type of the uploaded document. If set to `unknown-type`,
                    document analysis will be triggered.
      responses:
        '200':
          $ref: '#/components/responses/SuccessResponse'
        '400':
          $ref: '#/components/responses/ErrorResponse'
          description: Invalid input (missing fileType or documents)
        '401':
          $ref: '#/components/responses/ErrorResponse'
        '404':
          $ref: '#/components/responses/ErrorResponse'
          description: Tenant not found
        '500':
          $ref: '#/components/responses/ErrorResponse'
components:
  parameters:
    TenantIdParam:
      name: tenantId
      in: path
      required: true
      schema:
        type: string
  responses:
    SuccessResponse:
      description: Successful response
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: string
                enum:
                  - success
              message:
                type: string
              data:
                type: object
    ErrorResponse:
      description: Error response
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: string
                enum:
                  - error
              message:
                type: string
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: |
        HTTP Bearer Authentication. Pass the token generated via
        `/keys/generate-token` as `Authorization: Bearer <token>`.

````