1Fort application (v2): coverages API

**Access:** requires a JWT access token.

OpenAPI Specification

1fort-application-v2-coverages-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: '1Fort API Documentation application (v2): coverages API'
  description: '# 1Fort API


    REST API for the 1Fort insurance platform. This document is the authoritative

    map of the API surface; endpoints are grouped in the sidebar by **app** and

    **version**, and large apps are split into per-resource sub-groups.


    ## Authentication


    Almost every endpoint requires a **JWT access token**. Send it in the

    `Authorization` header as either `Bearer <token>` or `JWT <token>`. Tokens may

    also be presented as an HTTP-only cookie. Endpoints documented with no security

    requirement are intentionally public (for example sign-in, OTP and storefront

    endpoints).


    ## Multi-tenancy


    Resources are scoped to a tenant. Nested routes carry the owning resource id in

    the path (for example `/v2/broker/{business_pk}/applications`); a token is only

    authorised for the businesses its user may access. Object-level permissions are

    enforced per endpoint.


    ## Versioning


    `v2` endpoints live under `/apis/v2/...` and are the current surface. `v1`

    endpoints remain documented for compatibility. Endpoints marked **deprecated**

    are scheduled for removal; prefer the documented replacement.

    '
  termsOfService: https://www.1fort.com/
  license:
    name: Privately owned
  version: v1
servers:
- url: https://api.1fort.com/apis/
security:
- Bearer: []
tags:
- name: 'application (v2): coverages'
  x-displayName: Coverages
  description: '**Access:** requires a JWT access token.'
paths:
  /v2/broker/{business_pk}/coverages:
    parameters:
    - name: business_pk
      in: path
      required: true
      schema:
        type: string
    get:
      operationId: v2_broker_coverages_list
      description: ''
      parameters:
      - name: status
        in: query
        description: status
        required: false
        schema:
          type: string
          enum:
          - in_progress
          - generating_questions
          - pending_business_info
          - needs_review
          - submitted
          - archived
      - name: application__submission_type
        in: query
        description: application__submission_type
        required: false
        schema:
          type: string
          enum:
          - NEW
          - RENEWAL
          - OTHER
      - name: limit
        in: query
        description: Number of results to return per page.
        required: false
        schema:
          type: integer
      - name: offset
        in: query
        description: The initial index from which to return the results.
        required: false
        schema:
          type: integer
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                required:
                - count
                - results
                type: object
                properties:
                  count:
                    type: integer
                  next:
                    type:
                    - string
                    - 'null'
                    format: uri
                  previous:
                    type:
                    - string
                    - 'null'
                    format: uri
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/BrokerCoverageApplicationWithCompositeResponse'
        '403':
          description: Authentication credentials were invalid, absent or insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
        '500':
          description: Internal server error.
      tags:
      - 'application (v2): coverages'
      summary: List Coverages
  /v2/broker/{business_pk}/coverages/{id}:
    parameters:
    - name: business_pk
      in: path
      required: true
      schema:
        type: string
    - name: id
      in: path
      description: A UUID string identifying this coverage application.
      required: true
      schema:
        type: string
        format: uuid
    get:
      operationId: v2_broker_coverages_read
      description: ''
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BrokerCoverageApplicationWithCompositeResponse'
        '403':
          description: Authentication credentials were invalid, absent or insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
        '404':
          description: Object does not exist or caller has insufficient permissions to access it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIException'
        '500':
          description: Internal server error.
      tags:
      - 'application (v2): coverages'
      summary: Retrieve Coverage
    put:
      operationId: v2_broker_coverages_update
      description: ''
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CoverageApplicationUpdate'
        '400':
          description: Invalid input.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '403':
          description: Authentication credentials were invalid, absent or insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
        '404':
          description: Object does not exist or caller has insufficient permissions to access it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIException'
        '500':
          description: Internal server error.
      tags:
      - 'application (v2): coverages'
      summary: Update Coverage
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CoverageApplicationUpdate'
        required: true
    patch:
      operationId: v2_broker_coverages_partial_update
      description: ''
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CoverageApplicationUpdate'
        '400':
          description: Invalid input.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '403':
          description: Authentication credentials were invalid, absent or insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
        '404':
          description: Object does not exist or caller has insufficient permissions to access it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIException'
        '500':
          description: Internal server error.
      tags:
      - 'application (v2): coverages'
      summary: Update Coverage
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CoverageApplicationUpdate'
        required: true
  /v2/broker/{business_pk}/coverages/{id}/accord-forms/{accord_form_pk}/acroform-pdf:
    parameters:
    - name: business_pk
      in: path
      required: true
      schema:
        type: string
    - name: id
      in: path
      description: A UUID string identifying this coverage application.
      required: true
      schema:
        type: string
        format: uuid
    - name: accord_form_pk
      in: path
      required: true
      schema:
        type: string
    get:
      operationId: v2_broker_coverages_accord-forms_accord_form_acroform_pdf
      summary: Stream the blank Acroform PDF of an ACORD form linked to this coverage.
      description: 'Served through the API (instead of a presigned S3 URL) so the browser

        can fetch the bytes without the S3 bucket needing a CORS policy.'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CoverageApplicationUpdate'
        '403':
          description: Authentication credentials were invalid, absent or insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
        '404':
          description: Object does not exist or caller has insufficient permissions to access it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIException'
        '500':
          description: Internal server error.
      tags:
      - 'application (v2): coverages'
  /v2/broker/{business_pk}/coverages/{id}/accord-forms/{accord_form_pk}/mapping-file:
    parameters:
    - name: business_pk
      in: path
      required: true
      schema:
        type: string
    - name: id
      in: path
      description: A UUID string identifying this coverage application.
      required: true
      schema:
        type: string
        format: uuid
    - name: accord_form_pk
      in: path
      required: true
      schema:
        type: string
    get:
      operationId: v2_broker_coverages_accord-forms_accord_form_mapping_file
      description: 'Stream the mapping list file (CSV or legacy XLS) of an ACORD form

        linked to this coverage. Same CORS rationale as the Acroform PDF.'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CoverageApplicationUpdate'
        '403':
          description: Authentication credentials were invalid, absent or insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
        '404':
          description: Object does not exist or caller has insufficient permissions to access it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIException'
        '500':
          description: Internal server error.
      tags:
      - 'application (v2): coverages'
      summary: Accord form mapping file
  /v2/broker/{business_pk}/coverages/{id}/answer-with-ai:
    parameters:
    - name: business_pk
      in: path
      required: true
      schema:
        type: string
    - name: id
      in: path
      description: A UUID string identifying this coverage application.
      required: true
      schema:
        type: string
        format: uuid
    post:
      operationId: v2_broker_coverages_answer_with_ai
      summary: 'Kick off AI web research to guess answers for the coverage

        application''s raw_question_values.'
      description: 'Nothing is persisted: the merged question set is retrieved by polling

        GET answer-with-ai/{task_id}, reviewed by the user in the frontend,

        and saved through the regular PATCH.'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CoverageApplicationUpdate'
        '400':
          description: Invalid input.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '403':
          description: Authentication credentials were invalid, absent or insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
        '404':
          description: Object does not exist or caller has insufficient permissions to access it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIException'
        '500':
          description: Internal server error.
      tags:
      - 'application (v2): coverages'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CoverageApplicationUpdate'
        required: true
  /v2/broker/{business_pk}/coverages/{id}/answer-with-ai/{task_id}:
    parameters:
    - name: business_pk
      in: path
      required: true
      schema:
        type: string
    - name: id
      in: path
      description: A UUID string identifying this coverage application.
      required: true
      schema:
        type: string
        format: uuid
    - name: task_id
      in: path
      required: true
      schema:
        type: string
    get:
      operationId: v2_broker_coverages_answer_with_ai_result
      description: Poll the result of an answer-with-ai task.
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CoverageApplicationUpdate'
        '403':
          description: Authentication credentials were invalid, absent or insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
        '404':
          description: Object does not exist or caller has insufficient permissions to access it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIException'
        '500':
          description: Internal server error.
      tags:
      - 'application (v2): coverages'
      summary: Answer with AI result
  /v2/broker/{business_pk}/coverages/{id}/approve:
    parameters:
    - name: business_pk
      in: path
      required: true
      schema:
        type: string
    - name: id
      in: path
      description: A UUID string identifying this coverage application.
      required: true
      schema:
        type: string
        format: uuid
    post:
      operationId: v2_broker_coverages_approve
      description: 'Approve a coverage application held for broker review and submit it

        to carriers immediately.'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CoverageApplicationUpdate'
        '400':
          description: Invalid input.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '403':
          description: Authentication credentials were invalid, absent or insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
        '404':
          description: Object does not exist or caller has insufficient permissions to access it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIException'
        '500':
          description: Internal server error.
      tags:
      - 'application (v2): coverages'
      summary: Approve
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CoverageApplicationUpdate'
        required: true
  /v2/broker/{business_pk}/coverages/{id}/submit:
    parameters:
    - name: business_pk
      in: path
      required: true
      schema:
        type: string
    - name: id
      in: path
      description: A UUID string identifying this coverage application.
      required: true
      schema:
        type: string
        format: uuid
    post:
      operationId: v2_broker_coverages_submit
      summary: Submit a coverage application using the submission service.
      description: 'The service will determine whether to use the market-based flow

        or the legacy flow based on the presence of selected_markets.'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CoverageApplicationUpdate'
        '400':
          description: Invalid input.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '403':
          description: Authentication credentials were invalid, absent or insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
        '404':
          description: Object does not exist or caller has insufficient permissions to access it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIException'
        '500':
          description: Internal server error.
      tags:
      - 'application (v2): coverages'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CoverageApplicationUpdate'
        required: true
  /v2/broker/{business_pk}/coverages/{id}/supplemental-application-pdf:
    parameters:
    - name: business_pk
      in: path
      required: true
      schema:
        type: string
    - name: id
      in: path
      description: A UUID string identifying this coverage application.
      required: true
      schema:
        type: string
        format: uuid
    get:
      operationId: v2_broker_coverages_supplemental_application_pdf
      summary: Generate and stream the supplemental application PDF for preview.
      description: 'Always generated fresh (never served from stored CoverageApplicationPDF

        records, which may predate the latest answers) so the preview matches

        what GenerateApplicationPDFService attaches to the underwriter

        submission email at send time. Returned inline so the browser can

        render it rather than download it.'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CoverageApplicationUpdate'
        '403':
          description: Authentication credentials were invalid, absent or insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
        '404':
          description: Object does not exist or caller has insufficient permissions to access it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIException'
        '500':
          description: Internal server error.
      tags:
      - 'application (v2): coverages'
  /v2/coverages:
    parameters: []
    get:
      operationId: v2_coverages_list
      description: ''
      parameters:
      - name: status
        in: query
        description: status
        required: false
        schema:
          type: string
          enum:
          - in_progress
          - generating_questions
          - pending_business_info
          - needs_review
          - submitted
          - archived
      - name: application__submission_type
        in: query
        description: application__submission_type
        required: false
        schema:
          type: string
          enum:
          - NEW
          - RENEWAL
          - OTHER
      - name: limit
        in: query
        description: Number of results to return per page.
        required: false
        schema:
          type: integer
      - name: offset
        in: query
        description: The initial index from which to return the results.
        required: false
        schema:
          type: integer
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                required:
                - count
                - results
                type: object
                properties:
                  count:
                    type: integer
                  next:
                    type:
                    - string
                    - 'null'
                    format: uri
                  previous:
                    type:
                    - string
                    - 'null'
                    format: uri
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/CoverageApplicationWithCompositeResponse'
        '403':
          description: Authentication credentials were invalid, absent or insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
        '500':
          description: Internal server error.
      tags:
      - 'application (v2): coverages'
      summary: List Coverages
  /v2/coverages/{id}:
    parameters:
    - name: id
      in: path
      description: A UUID string identifying this coverage application.
      required: true
      schema:
        type: string
        format: uuid
    get:
      operationId: v2_coverages_read
      description: ''
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CoverageApplicationWithCompositeResponse'
        '403':
          description: Authentication credentials were invalid, absent or insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
        '404':
          description: Object does not exist or caller has insufficient permissions to access it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIException'
        '500':
          description: Internal server error.
      tags:
      - 'application (v2): coverages'
      summary: Retrieve Coverage
    put:
      operationId: v2_coverages_update
      description: ''
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CoverageApplicationUpdate'
        '400':
          description: Invalid input.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '403':
          description: Authentication credentials were invalid, absent or insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
        '404':
          description: Object does not exist or caller has insufficient permissions to access it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIException'
        '500':
          description: Internal server error.
      tags:
      - 'application (v2): coverages'
      summary: Update Coverage
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CoverageApplicationUpdate'
        required: true
    patch:
      operationId: v2_coverages_partial_update
      description: ''
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CoverageApplicationUpdate'
        '400':
          description: Invalid input.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '403':
          description: Authentication credentials were invalid, absent or insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
        '404':
          description: Object does not exist or caller has insufficient permissions to access it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIException'
        '500':
          description: Internal server error.
      tags:
      - 'application (v2): coverages'
      summary: Update Coverage
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CoverageApplicationUpdate'
        required: true
  /v2/coverages/{id}/collect-signatures:
    parameters:
    - name: id
      in: path
      description: A UUID string identifying this coverage application.
      required: true
      schema:
        type: string
        format: uuid
    post:
      operationId: v2_coverages_collect_signatures
      description: 'Collects and saves the signature (text or image) for a coverage application

        without submitting the application itself or changing its status.'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CoverageApplicationUpdate'
        '400':
          description: Invalid input.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '403':
          description: Authentication credentials were invalid, absent or insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
        '404':
          description: Object does not exist or caller has insufficient permissions to access it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIException'
        '500':
          description: Internal server error.
      tags:
      - 'application (v2): coverages'
      summary: Collect signatures
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CoverageApplicationUpdate'
        required: true
  /v2/coverages/{id}/submit:
    parameters:
    - name: id
      in: path
      description: A UUID string identifying this coverage application.
      required: true
      schema:
        type: string
        format: uuid
    post:
      operationId: v2_coverages_submit
      summary: Submit a coverage application as a business user using the submission service.
      description: 'The service will determine whether to use the market-based flow

        or the legacy flow based on the presence of selected_markets.

        Signature is required before submission.'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CoverageApplicationUpdate'
        '400':
          description: Invalid input.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '403':
          description: Authentication credentials were invalid, absent or insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
        '404':
          description: Object does not exist or caller has insufficient permissions to access it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIException'
        '500':
          description: Internal server error.
      tags:
      - 'application (v2): coverages'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CoverageApplicationUpdate'
        required: true
components:
  schemas:
    BrokerCoverageApplicationWithCompositeResponse:
      required:
      - coverage_type
      - application
      type: object
      properties:
        id:
          title: Id
          type: string
          format: uuid
          readOnly: true
        name:
          title: Name
          type: string
          readOnly: true
          minLength: 1
        coverage_type:
          $ref: '#/components/schemas/ProductLine'
        sub_coverage_types:
          type: array
          items:
            type: string
            format: uuid
          uniqueItems: true
        status:
          title: Status
          type: string
          enum:
          - in_progress
          - generating_questions
          - pending_business_info
          - needs_review
          - submitted
          - archived
        status_display:
          title: Status display
          type: string
          readOnly: true
          minLength: 1
        application:
          title: Application
          type: string
          format: uuid
        raw_question_values:
          title: Raw question values
          type:
          - object
          - 'null'
        policy_type:
          title: Policy type
          type: string
          enum:
          - ADMITTED
          - SURPLUS_LINES
          - ADMITTED_AND_SURPLUS_LINES
        policy_type_display:
          title: Policy type display
          type: string
          readOnly: true
          minLength: 1
        additional_notes:
          title: Additional notes
          description: Additional notes for the coverage application
          type:
          - string
          - 'null'
        supplementary_documents:
          title: Supplementary documents
          type: string
          readOnly: true
        due_date:
          title: Due date
          type: string
          format: date
          readOnly: true
        effective_date:
          title: Effective date
          type: string
          format: date
          readOnly: true
        limit:
          title: Limit
          type:
          - integer
          - 'null'
          maximum: 9223372036854775807
          minimum: -9223372036854775808
        retention:
          title: Retention
          type:
          - integer
          - 'null'
          maximum: 9223372036854775807
          minimum: -9223372036854775808
        building_limit:
          title: Building limit
          type:
          - integer
          - 'null'
          maximum: 9223372036854775807
          minimum: -9223372036854775808
        contents_limit:
          title: Contents limit
          type:
          - integer
          - 'null'
          maximum: 9223372036854775807
          minimum: -9223372036854775808
        business_income_limit:
          title: Business income limit
          type:
          - integer
          - 'null'
          maximum: 9223372036854775807
          minimum: -9223372036854775808
        valuation:
          title: Valuation
          type:
          - string
          - 'null'
          enum:
          - ACV
          - RCV
          - AGREED
        deductible:
          title: Deductible
          type:
          - integer
          - 'null'
          maximum: 9223372036854775807
          minimum: -9223372036854775808
        coverage_layer:
          title: Coverage layer
          description: Indicates if this is a primary or excess coverage application
          type: string
          enum:
          - PRIMARY
          - EXCESS
        coverage_layer_display:
          title: Coverage layer display
          type: string
          readOnly: true
          minLength: 1
        submission_type:
          title: Submission type
          type: string
          readOnly: true
          minLength: 1
        submission_type_display:
          title: Submission type display
          type: string
          readOnly: true
          minLength: 1
        carriers:
          type: array
          items:
            $ref: '#/components/schemas/CarrierList'
          readOnly: true
        selected_markets:
          title: Selected markets
          type: string
          readOnly: true
        coverage_line_status:
          title: Coverage line status
          type: string
          readOnly: true
          minLength: 1
        quote_count:
          title: Quote count
          ty

# --- truncated at 32 KB (49 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/1fort/refs/heads/main/openapi/1fort-application-v2-coverages-api-openapi.yml