1Fort quote (v2): quotes API

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

OpenAPI Specification

1fort-quote-v2-quotes-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: '1Fort API Documentation quote (v2): quotes 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: 'quote (v2): quotes'
  x-displayName: Quotes
  description: '**Access:** requires a JWT access token.'
paths:
  /v2/broker/{business_pk}/quotes:
    parameters:
    - name: business_pk
      in: path
      required: true
      schema:
        type: string
    get:
      operationId: v2_broker_quotes_list
      description: ''
      parameters:
      - name: search
        in: query
        description: A search term.
        required: false
        schema:
          type: string
      - name: ordering
        in: query
        description: Which field to use when ordering the results.
        required: false
        schema:
          type: string
      - 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/QuoteWithAggregates'
        '403':
          description: Authentication credentials were invalid, absent or insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
        '500':
          description: Internal server error.
      tags:
      - 'quote (v2): quotes'
      summary: List Quotes
  /v2/broker/{business_pk}/quotes/create:
    parameters:
    - name: business_pk
      in: path
      required: true
      schema:
        type: string
    post:
      operationId: v2_broker_quotes_create_quote
      summary: Create Broker Quote
      description: Create a new quote for a coverage application. This allows brokers to add quotes from carriers that they have obtained outside of the Herald system (e.g., expiring quotes, competitor quotes).
      responses:
        '201':
          description: Quote created successfully
        '400':
          description: Invalid input data
        '404':
          description: Coverage application not found
        '403':
          description: Permission denied
        '500':
          description: Internal server error.
      tags:
      - 'quote (v2): quotes'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BrokerQuoteCreate'
        required: true
  /v2/broker/{business_pk}/quotes/overview:
    parameters:
    - name: business_pk
      in: path
      required: true
      schema:
        type: string
    get:
      operationId: v2_broker_quotes_get_overview
      description: ''
      parameters:
      - name: search
        in: query
        description: A search term.
        required: false
        schema:
          type: string
      - name: ordering
        in: query
        description: Which field to use when ordering the results.
        required: false
        schema:
          type: string
      - 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/QuoteWithAggregates'
        '403':
          description: Authentication credentials were invalid, absent or insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
        '500':
          description: Internal server error.
      tags:
      - 'quote (v2): quotes'
      summary: Get overview
  /v2/broker/{business_pk}/quotes/{id}:
    parameters:
    - name: business_pk
      in: path
      required: true
      schema:
        type: string
    - name: id
      in: path
      description: A UUID string identifying this Quote (Coverage Term).
      required: true
      schema:
        type: string
        format: uuid
    get:
      operationId: v2_broker_quotes_read
      description: ''
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteWithAggregates'
        '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:
      - 'quote (v2): quotes'
      summary: Retrieve Quote
  /v2/broker/{business_pk}/quotes/{id}/files/{file_pk}:
    parameters:
    - name: business_pk
      in: path
      required: true
      schema:
        type: string
    - name: id
      in: path
      description: A UUID string identifying this Quote (Coverage Term).
      required: true
      schema:
        type: string
        format: uuid
    - name: file_pk
      in: path
      required: true
      schema:
        type: string
    get:
      operationId: v2_broker_quotes_get_file
      description: ''
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteWithAggregates'
        '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:
      - 'quote (v2): quotes'
      summary: Get file
  /v2/broker/{business_pk}/quotes/{id}/surplus-files/{file_pk}:
    parameters:
    - name: business_pk
      in: path
      required: true
      schema:
        type: string
    - name: id
      in: path
      description: A UUID string identifying this Quote (Coverage Term).
      required: true
      schema:
        type: string
        format: uuid
    - name: file_pk
      in: path
      required: true
      schema:
        type: string
    get:
      operationId: v2_broker_quotes_get_surplus_file
      description: ''
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteWithAggregates'
        '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:
      - 'quote (v2): quotes'
      summary: Get surplus file
  /v2/broker/{business_pk}/quotes/{quote_pk}/bind:
    parameters:
    - name: business_pk
      in: path
      required: true
      schema:
        type: string
    - name: quote_pk
      in: path
      required: true
      schema:
        type: string
    get:
      operationId: v2_broker_quotes_bind_list
      description: ''
      parameters:
      - name: search
        in: query
        description: A search term.
        required: false
        schema:
          type: string
      - name: ordering
        in: query
        description: Which field to use when ordering the results.
        required: false
        schema:
          type: string
      - 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/QuoteBindRequest'
        '403':
          description: Authentication credentials were invalid, absent or insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
        '500':
          description: Internal server error.
      tags:
      - 'quote (v2): quotes'
      summary: List Bind
    post:
      operationId: v2_broker_quotes_bind_create
      description: ''
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteBindRequest'
        '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'
        '500':
          description: Internal server error.
      tags:
      - 'quote (v2): quotes'
      summary: Create Bind
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuoteBindRequest'
        required: true
  /v2/broker/{business_pk}/quotes/{quote_pk}/bind/{id}:
    parameters:
    - name: business_pk
      in: path
      required: true
      schema:
        type: string
    - name: quote_pk
      in: path
      required: true
      schema:
        type: string
    - name: id
      in: path
      description: A UUID string identifying this quote bind request.
      required: true
      schema:
        type: string
        format: uuid
    get:
      operationId: v2_broker_quotes_bind_read
      description: ''
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteBindRequest'
        '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:
      - 'quote (v2): quotes'
      summary: Retrieve Bind
  /v2/broker/{business_pk}/quotes/{quote_pk}/tasks:
    parameters:
    - name: business_pk
      in: path
      required: true
      schema:
        type: string
    - name: quote_pk
      in: path
      required: true
      schema:
        type: string
    get:
      operationId: v2_broker_quotes_tasks_list
      summary: List Tasks for a Specific Quote
      description: 'List all quote tasks for a specific quote (from the latest task group).


        Expandable fields via expand query parameter (comma separated):

        - quote: Full quote details (omits tasks to prevent recursion)

        - business: Business details

        - broker: Broker agency details

        - group: Task group details (omits tasks to prevent recursion)

        - completed_by: Broker user who completed the task


        Filters available:

        - status: Filter by task status (todo, done, dismissed, n/a)

        - type: Filter by task type (signature, subjectivities, clarifications)

        - business: Filter by business ID


        Example: ?expand=quote,business,completed_by&type=signature'
      parameters:
      - name: status
        in: query
        description: status
        required: false
        schema:
          type: string
      - name: type
        in: query
        description: type
        required: false
        schema:
          type: string
      - name: business
        in: query
        description: business
        required: false
        schema:
          type: string
      - name: broker
        in: query
        description: broker
        required: false
        schema:
          type: string
      - name: coverage
        in: query
        description: coverage
        required: false
        schema:
          type: string
      - name: carrier
        in: query
        description: carrier
        required: false
        schema:
          type: string
      - name: insured
        in: query
        description: insured
        required: false
        schema:
          type: string
      - name: assigned_to_email
        in: query
        description: assigned_to_email
        required: false
        schema:
          type: string
      - name: ordering
        in: query
        description: Which field to use when ordering the results.
        required: false
        schema:
          type: string
      - name: search
        in: query
        description: A search term.
        required: false
        schema:
          type: string
      - 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/QuoteTaskFlexFields'
        '403':
          description: Authentication credentials were invalid, absent or insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
        '500':
          description: Internal server error.
      tags:
      - 'quote (v2): quotes'
    post:
      operationId: v2_broker_quotes_tasks_create
      summary: Resolve QuoteTasks
      description: Resolve one or multiple tasks with comments and/or documents
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/QuoteTaskFlexFields'
        '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'
        '500':
          description: Internal server error.
      tags:
      - 'quote (v2): quotes'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuoteTaskBulkResolve'
        required: true
  /v2/broker/{business_pk}/quotes/{quote_pk}/tasks/notify-insured-requests:
    parameters:
    - name: business_pk
      in: path
      required: true
      schema:
        type: string
    - name: quote_pk
      in: path
      required: true
      schema:
        type: string
    post:
      operationId: v2_broker_quotes_tasks_notify_insured_requests
      summary: Notify insured about requests for multiple tasks
      description: Triggers email notifications to specified email addresses about insured requests for a list of tasks. The emails parameter accepts an array of email addresses to notify.
      responses:
        '200':
          description: Notifications triggered successfully.
        '400':
          description: Invalid input (e.g., empty list, invalid emails).
        '404':
          description: One or more tasks not found.
        '403':
          description: Authentication credentials were invalid, absent or insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
        '500':
          description: Internal server error.
      tags:
      - 'quote (v2): quotes'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuoteTaskNotifyInsuredRequest'
        required: true
  /v2/broker/{business_pk}/quotes/{quote_pk}/tasks/{id}:
    parameters:
    - name: business_pk
      in: path
      required: true
      schema:
        type: string
    - name: quote_pk
      in: path
      required: true
      schema:
        type: string
    - name: id
      in: path
      required: true
      schema:
        type: string
    get:
      operationId: v2_broker_quotes_tasks_read
      summary: ViewSet for managing quote tasks for a specific quote.
      description: Only returns tasks from the most recently created task group for the quote.
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteTaskFlexFields'
        '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:
      - 'quote (v2): quotes'
  /v2/broker/{business_pk}/quotes/{quote_pk}/visible-tasks:
    parameters:
    - name: business_pk
      in: path
      required: true
      schema:
        type: string
    - name: quote_pk
      in: path
      required: true
      schema:
        type: string
    get:
      operationId: v2_broker_quotes_visible-tasks_list
      summary: List Visible Tasks for a Business and Quote/Application
      description: 'List all visible quote tasks for a specific business and quote/application (from the latest task groups).


        Only returns tasks with visible_to_business=True.


        This endpoint can be accessed with either a quote_pk or application_pk parameter.


        Expandable fields via expand query parameter (comma separated):

        - quote: Full quote details (omits tasks to prevent recursion)

        - business: Business details

        - broker: Broker agency details

        - group: Task group details (omits tasks to prevent recursion)

        - completed_by: Broker user who completed the task


        Filters available:

        - status: Filter by task status (todo, done, dismissed, n/a)

        - type: Filter by task type (signature, subjectivities, clarifications)

        Example: ?expand=quote,business,completed_by&type=signature'
      parameters:
      - name: status
        in: query
        description: status
        required: false
        schema:
          type: string
      - name: type
        in: query
        description: type
        required: false
        schema:
          type: string
      - name: business
        in: query
        description: business
        required: false
        schema:
          type: string
      - name: broker
        in: query
        description: broker
        required: false
        schema:
          type: string
      - name: coverage
        in: query
        description: coverage
        required: false
        schema:
          type: string
      - name: carrier
        in: query
        description: carrier
        required: false
        schema:
          type: string
      - name: insured
        in: query
        description: insured
        required: false
        schema:
          type: string
      - name: assigned_to_email
        in: query
        description: assigned_to_email
        required: false
        schema:
          type: string
      - name: ordering
        in: query
        description: Which field to use when ordering the results.
        required: false
        schema:
          type: string
      - name: search
        in: query
        description: A search term.
        required: false
        schema:
          type: string
      - 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/QuoteTaskFlexFields'
        '403':
          description: Authentication credentials were invalid, absent or insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
        '500':
          description: Internal server error.
      tags:
      - 'quote (v2): quotes'
  /v2/broker/{business_pk}/quotes/{quote_pk}/visible-tasks/{id}:
    parameters:
    - name: business_pk
      in: path
      required: true
      schema:
        type: string
    - name: quote_pk
      in: path
      required: true
      schema:
        type: string
    - name: id
      in: path
      required: true
      schema:
        type: string
    get:
      operationId: v2_broker_quotes_visible-tasks_read
      summary: ViewSet for retrieving quote tasks that are visible to businesses.
      description: 'Only returns tasks with visible_to_business=True from the most recently created task group.

        This endpoint can be accessed by both broker users and business users.


        It supports filtering by either quote_id or application_id.'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteTaskFlexFields'
        '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:
      - 'quote (v2): quotes'
  /v2/quotes/{quote_pk}/tasks:
    parameters:
    - name: quote_pk
      in: path
      required: true
      schema:
        type: string
    get:
      operationId: v2_quotes_tasks_list
      summary: ViewSet for allowing business users to resolve quote tasks for a specific quote.
      description: Only returns tasks that are visible to business users.
      parameters:
      - name: status
        in: query
        description: status
        required: false
        schema:
          type: string
      - name: type
        in: query
        description: type
        required: false
        schema:
          type: string
      - name: business
        in: query
        description: business
        required: false
        schema:
          type: string
      - name: broker
        in: query
        description: broker
        required: false
        schema:
          type: string
      - name: coverage
        in: query
        description: coverage
        required: false
        schema:
          type: string
      - name: carrier
        in: query
        description: carrier
        required: false
        schema:
          type: string
      - name: insured
        in: query
        description: insured
        required: false
        schema:
          type: string
      - name: assigned_to_email
        in: query
        description: assigned_to_email
        required: false
        schema:
          type: string
      - name: ordering
        in: query
        description: Which field to use when ordering the results.
        required: false
        schema:
          type: string
      - name: search
        in: query
        description: A search term.
        required: false
        schema:
          type: string
      - 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/QuoteTaskFlexFields'
        '403':
          description: Authentication credentials were invalid, absent or insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
        '500':
          description: Internal server error.
      tags:
      - 'quote (v2): quotes'
    post:
      operationId: v2_quotes_tasks_create
      summary: Business User Resolution of QuoteTasks
      description: Allows business users to resolve one or multiple tasks with comments and/or documents
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/QuoteTaskFlexFields'
        '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'
        '500':
          description: Internal server error.
      tags:
      - 'quote (v2): quotes'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuoteTaskBulkResolve'
        required: true
  /v2/quotes/{quote_pk}/tasks/{id}:
    parameters:
    - name: quote_pk
      in: path
      required: true
      schema:
        type: string
    - name: id
      in: path
      required: true
      schem

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