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

# Update Coverage Option with Terms

> Replaces a coverage option's own fields, its peril group terms (including each group's subperils) and its per-zone terms in a single request. The body is the coverage option's complete state:

- `name` and `bi_limit_type` are required; `default_bi_period_days` resets to null when omitted. `uuid` is optional, since the URL already identifies the coverage option, but when supplied it must match it.
- `peril_terms` and `per_zone_terms` are required and must name **every** peril group and zone on the coverage option, each exactly once. Leaving one out is an error rather than a silent no-op, since this endpoint cannot create or delete them. The same applies to each group's `subperils`.
- Within an entry, any term left out is reset to its default rather than carried over. The one exception is a field the entry's own `is_sublimit_combined` / `is_deductible_combined` makes invalid: those are ignored, and cleared, exactly as on the single-object endpoints.

Each peril term's `display_name` is required (it has no default to reset to) and must be unique across the coverage option. `is_bi_split_allowed` is read-only.

The whole request is atomic: if any entry is rejected, nothing is changed. Errors on a list are reported positionally, e.g. `{"peril_terms": [{}, {"sublimit": ["..."]}]}`.



## OpenAPI

````yaml https://vision.dev.pingintel.com/api/schema/?format=json put /api/v1/submission/{pingid}/cat/coverage-options/bulk/{uuid}
openapi: 3.0.3
info:
  title: Ping.Vision API
  version: v1.0
  description: >
    ### Ping.Vision API


    This API provides convenient, efficient access to Ping Intel's data and
    services. It is designed to be used by developers and data scientists to
    integrate Ping Intel's capabilities into their applications.


    Once SSO is set up with your organization, you can create an Organization or
    Personal API key at https://auth.pingintel.com/org.


    Please see the Python client library
    [pingintel-api](https://pypi.org/project/pingintel-api/) for commandline
    tools and programmatic access, and you

    can refer to the following documentation for details on interacting with the
    system via the HTTP API.
  contact:
    email: support@pingintel.com
    name: Ping Intel
    url: https://www.pingintel.com
servers:
  - url: https://vision.pingintel.com
    description: Ping.Vision API
  - url: https://vision.staging.pingintel.com
    description: Ping.Vision API (staging)
security: []
tags:
  - name: Create Submission
    description: The Create Submission API allows you to add new data into the system.
  - name: Get Submission Data
    description: >-
      The Get Submission Data API lets you list and look up submissions, track
      their events, download their documents, and generate or retrieve their
      outputs.
  - name: Update Submission
    description: >-
      The Update Submission API provides various endpoints to update, modify, or
      act upon existing submissions.
  - name: CAT Modeling
    description: >-
      The CAT Modeling API manages catastrophe modeling setup for a submission:
      coverage options, peril groups, layer structures, and modeling options. It
      also generates Acc/Loc files for CAT models.
  - name: User Memberships
    description: >-
      The User Memberships API allows you to add, remove, and change the role of
      users in different teams, divisions, or companies.
  - name: Reference Data
    description: >-
      The Reference Data API lists lookup values used by other endpoints, such
      as the submission statuses available to a division.
  - name: Account
    description: >-
      The Account API returns information about the authenticated user: their
      identity, permissions, and sitewide settings.
paths:
  /api/v1/submission/{pingid}/cat/coverage-options/bulk/{uuid}:
    put:
      tags:
        - CAT Modeling
      summary: Update Coverage Option with Terms
      description: >-
        Replaces a coverage option's own fields, its peril group terms
        (including each group's subperils) and its per-zone terms in a single
        request. The body is the coverage option's complete state:


        - `name` and `bi_limit_type` are required; `default_bi_period_days`
        resets to null when omitted. `uuid` is optional, since the URL already
        identifies the coverage option, but when supplied it must match it.

        - `peril_terms` and `per_zone_terms` are required and must name
        **every** peril group and zone on the coverage option, each exactly
        once. Leaving one out is an error rather than a silent no-op, since this
        endpoint cannot create or delete them. The same applies to each group's
        `subperils`.

        - Within an entry, any term left out is reset to its default rather than
        carried over. The one exception is a field the entry's own
        `is_sublimit_combined` / `is_deductible_combined` makes invalid: those
        are ignored, and cleared, exactly as on the single-object endpoints.


        Each peril term's `display_name` is required (it has no default to reset
        to) and must be unique across the coverage option. `is_bi_split_allowed`
        is read-only.


        The whole request is atomic: if any entry is rejected, nothing is
        changed. Errors on a list are reported positionally, e.g.
        `{"peril_terms": [{}, {"sublimit": ["..."]}]}`.
      operationId: api_v1_submission_cat_coverage_options_bulk_update
      parameters:
        - in: path
          name: pingid
          schema:
            type: string
          required: true
        - in: path
          name: uuid
          schema:
            type: string
          required: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CoverageOptionBulkUpdate'
            examples:
              UpdateRequest:
                value:
                  uuid: 019dd58e-eb2a-7958-8070-570003e4ee29
                  name: Option 1
                  bi_limit_type: GP
                  default_bi_period_days: 30
                  peril_terms:
                    - uuid: 019dd58e-eb2a-7958-8070-570003e4ee51
                      display_name: Earthquake
                      included: true
                      sublimit: 5000000
                      min_deductible: 100000
                      subperils:
                        - uuid: 019dd58e-eb2a-7958-8070-570003e4ee52
                          included: false
                        - uuid: 019dd58e-eb2a-7958-8070-570003e4ee53
                          included: true
                  per_zone_terms:
                    - uuid: 019dd58e-eb2a-7958-8070-570003e4ee60
                      included: true
                      sublimit: 3000000
                      per_location_deductible: 10
                      per_location_deductible_type: S
                      per_location_deductible_format: P
                summary: Update request
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/CoverageOptionBulkUpdate'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CoverageOptionBulkUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CoverageOptionBulkUpdateResponse'
          description: >-
            The full coverage option, as returned by the Get Coverage Option
            endpoint, except for `policy_terms_config` (this endpoint cannot
            change it) and each subperil's `allowed_peril_groups`.
      security:
        - authorization_header: []
components:
  schemas:
    CoverageOptionBulkUpdate:
      type: object
      description: >-
        The complete state of a coverage option: its own fields, every peril
        group, every zone.
      properties:
        bi_limit_type:
          enum:
            - GE
            - GP
          type: string
          x-spec-enum-id: f81ee74b088734af
          description: |-
            GE: Gross Earnings. GP: Gross Profits.

            * `GE` - Gross Earnings
            * `GP` - Gross Profits
        name:
          type: string
          description: Name of the coverage option.
        per_zone_terms:
          type: array
          items:
            $ref: '#/components/schemas/CoverageOptionBulkZoneTerm'
          description: Every zone on this coverage option. Required.
        peril_terms:
          type: array
          items:
            $ref: '#/components/schemas/CoverageOptionBulkPerilTerm'
          description: Every peril group on this coverage option. Required.
        default_bi_period_days:
          type: integer
          nullable: true
          description: Default BI period in days. Omit to clear it.
        uuid:
          type: string
          format: uuid
          description: >-
            UUID of the coverage option. Optional -- the URL identifies it. When
            supplied it must match, which guards a client with several options
            loaded against a mis-targeted save.
      required:
        - bi_limit_type
        - name
        - per_zone_terms
        - peril_terms
    CoverageOptionBulkUpdateResponse:
      type: object
      description: >-
        The detail representation, minus what a bulk update can neither change
        nor is asked for.


        `policy_terms_config` is dropped (this endpoint never touches it), as is
        each subperil's

        `allowed_peril_groups`.
      properties:
        bi_limit_type:
          enum:
            - GE
            - GP
            - null
          type: string
          description: |-
            * `GE` - Gross Earnings
            * `GP` - Gross Profits
          x-spec-enum-id: f81ee74b088734af
          readOnly: true
          nullable: true
        created_time:
          type: string
          format: date-time
          readOnly: true
        default_bi_period_days:
          type: integer
          readOnly: true
          nullable: true
        modified_time:
          type: string
          format: date-time
          readOnly: true
          nullable: true
        name:
          type: string
          readOnly: true
          nullable: true
        per_zone_terms:
          type: array
          items:
            $ref: '#/components/schemas/PolicyTermsZone'
        peril_sections:
          type: array
          items:
            $ref: '#/components/schemas/CoverageOptionBulkPerilSectionResponse'
        uuid:
          type: string
          format: uuid
          readOnly: true
          nullable: true
          description: UUID of the policy terms coverage option
      required:
        - bi_limit_type
        - created_time
        - default_bi_period_days
        - modified_time
        - name
        - per_zone_terms
        - peril_sections
        - uuid
    CoverageOptionBulkZoneTerm:
      type: object
      description: >-
        One zone's complete terms inside a bulk coverage option PUT.


        The split `pd_*`/`bi_*` fields only exist when
        `settings.ENABLE_ZONE_PD_BI_SPLIT` is on,

        exactly as on the single zone endpoint.
      properties:
        uuid:
          type: string
          format: uuid
          description: UUID of the zone.
        bi_days_deductible:
          type: integer
          maximum: 2147483647
          minimum: 0
          nullable: true
        bi_location_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        bi_location_deductible_format:
          enum:
            - P
            - C
            - ''
            - null
          type: string
          x-spec-enum-id: 1453737de42163e5
          nullable: true
          description: |-
            Percent or dollar?

            * `P` - Percentage
            * `C` - Currency
        bi_min_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        bi_sublimit:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        included:
          type: boolean
        is_deductible_combined:
          type: boolean
          nullable: true
        is_sublimit_combined:
          type: boolean
          nullable: true
        max_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        min_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        pd_building_location_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        pd_building_location_deductible_format:
          enum:
            - P
            - C
            - ''
            - null
          type: string
          x-spec-enum-id: 1453737de42163e5
          nullable: true
          description: |-
            Percent or dollar?

            * `P` - Percentage
            * `C` - Currency
        pd_contents_location_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        pd_contents_location_deductible_format:
          enum:
            - P
            - C
            - ''
            - null
          type: string
          x-spec-enum-id: 1453737de42163e5
          nullable: true
          description: |-
            Percent or dollar?

            * `P` - Percentage
            * `C` - Currency
        pd_min_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        pd_sublimit:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        per_location_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        per_location_deductible_format:
          enum:
            - P
            - C
            - ''
            - null
          type: string
          x-spec-enum-id: 1453737de42163e5
          nullable: true
          description: |-
            Percent or dollar?

            * `P` - Percentage
            * `C` - Currency
        per_location_deductible_type:
          enum:
            - S
            - C
            - CT
            - CB
            - PL
            - ''
            - null
          type: string
          description: |-
            * `S` - Sitedeductible
            * `C` - Perunitcoverage
            * `CT` - Combinedwithtimeelement
            * `CB` - Applytopropertydamage
            * `PL` - Percentofloss
          x-spec-enum-id: c999e4d4dffff517
          nullable: true
        peril_group:
          type: string
          format: uuid
          nullable: true
          description: UUID of the peril group
        sublimit:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
      required:
        - uuid
    CoverageOptionBulkPerilTerm:
      type: object
      description: >-
        One peril group's complete terms inside a bulk coverage option PUT.


        `display_name` is required rather than resettable: it has no meaningful
        default, so leaving it

        out of a PUT would blank the group's name. `is_bi_split_allowed` is
        read-only everywhere and so

        is not settable. Which `pd_*` deductible fields exist depends on

        `settings.ENABLE_PD_BUILDING_CONTENTS_SPLIT`, exactly as on the single
        peril group endpoint.
      properties:
        display_name:
          type: string
          nullable: true
          description: >-
            Display name for the peril group, e.g., Earthquake, Earthquake 2,
            Hurricane, etc.
          maxLength: 50
        subperils:
          type: array
          items:
            $ref: '#/components/schemas/CoverageOptionBulkSubperil'
          description: Every subperil of this group. Required; send `[]` if it has none.
        uuid:
          type: string
          format: uuid
          description: UUID of the peril group.
        agg_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        agg_limit:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        bi_days_deductible:
          type: integer
          maximum: 2147483647
          minimum: 0
          nullable: true
        bi_location_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        bi_location_deductible_format:
          enum:
            - P
            - C
            - ''
            - null
          type: string
          x-spec-enum-id: 1453737de42163e5
          nullable: true
          description: |-
            Percent or dollar?

            * `P` - Percentage
            * `C` - Currency
        bi_max_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        bi_min_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        bi_sublimit:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        included:
          type: boolean
        is_deductible_combined:
          type: boolean
          nullable: true
        is_sublimit_combined:
          type: boolean
          nullable: true
        location_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        location_deductible_format:
          enum:
            - P
            - C
            - ''
            - null
          type: string
          x-spec-enum-id: 1453737de42163e5
          nullable: true
          description: |-
            Percent or dollar?

            * `P` - Percentage
            * `C` - Currency
        location_deductible_type:
          enum:
            - S
            - C
            - CT
            - CB
            - PL
            - ''
            - null
          type: string
          description: |-
            * `S` - Sitedeductible
            * `C` - Perunitcoverage
            * `CT` - Combinedwithtimeelement
            * `CB` - Applytopropertydamage
            * `PL` - Percentofloss
          x-spec-enum-id: c999e4d4dffff517
          nullable: true
        max_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        min_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        pd_building_location_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        pd_building_location_deductible_format:
          enum:
            - P
            - C
            - ''
            - null
          type: string
          x-spec-enum-id: 1453737de42163e5
          nullable: true
          description: |-
            Percent or dollar?

            * `P` - Percentage
            * `C` - Currency
        pd_contents_location_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        pd_contents_location_deductible_format:
          enum:
            - P
            - C
            - ''
            - null
          type: string
          x-spec-enum-id: 1453737de42163e5
          nullable: true
          description: |-
            Percent or dollar?

            * `P` - Percentage
            * `C` - Currency
        pd_max_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        pd_min_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        pd_sublimit:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        self_insured_retentions:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        sublimit:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
      required:
        - display_name
        - subperils
        - uuid
    PolicyTermsZone:
      type: object
      properties:
        bi_days_deductible:
          type: integer
          readOnly: true
          nullable: true
        bi_location_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        bi_location_deductible_format:
          enum:
            - P
            - C
            - null
          type: string
          x-spec-enum-id: 1453737de42163e5
          readOnly: true
          nullable: true
          description: |-
            Percent or dollar?

            * `P` - Percentage
            * `C` - Currency
        bi_min_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        bi_sublimit:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        deductible_type:
          type: string
          readOnly: true
          nullable: true
        included:
          type: boolean
          readOnly: true
        is_deductible_combined:
          type: boolean
          readOnly: true
          nullable: true
        is_sublimit_combined:
          type: boolean
          readOnly: true
          nullable: true
        location_count:
          type: integer
          readOnly: true
          nullable: true
          description: >-
            Number of locations that fall under this zone. Should be calculated
            on change.
        max_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        min_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        pd_building_location_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        pd_building_location_deductible_format:
          enum:
            - P
            - C
            - null
          type: string
          x-spec-enum-id: 1453737de42163e5
          readOnly: true
          nullable: true
          description: |-
            Percent or dollar?

            * `P` - Percentage
            * `C` - Currency
        pd_contents_location_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        pd_contents_location_deductible_format:
          enum:
            - P
            - C
            - null
          type: string
          x-spec-enum-id: 1453737de42163e5
          readOnly: true
          nullable: true
          description: |-
            Percent or dollar?

            * `P` - Percentage
            * `C` - Currency
        pd_min_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        pd_sublimit:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        per_location_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        per_location_deductible_format:
          enum:
            - P
            - C
            - null
          type: string
          x-spec-enum-id: 1453737de42163e5
          readOnly: true
          nullable: true
          description: |-
            Percent or dollar?

            * `P` - Percentage
            * `C` - Currency
        per_location_deductible_type:
          enum:
            - S
            - C
            - CT
            - CB
            - PL
            - null
          type: string
          description: |-
            * `S` - Sitedeductible
            * `C` - Perunitcoverage
            * `CT` - Combinedwithtimeelement
            * `CB` - Applytopropertydamage
            * `PL` - Percentofloss
          x-spec-enum-id: c999e4d4dffff517
          readOnly: true
          nullable: true
        peril_class:
          enum:
            - HU
            - EQ
            - IF
            - SCS
            - AOP
            - WF
            - TE
            - NC
          type: string
          description: |-
            * `HU` - Hu
            * `EQ` - Eq
            * `IF` - Flood
            * `SCS` - Severeconvectivestorm
            * `AOP` - Aop
            * `WF` - Wildfire
            * `TE` - Terrorism
            * `NC` - Noncat
          x-spec-enum-id: b72e536a6e65a035
          readOnly: true
        peril_group_uuid:
          type: string
          readOnly: true
        sublimit:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        tiv:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
          description: Total Insured Value for this zone.
        uuid:
          type: string
          format: uuid
          readOnly: true
          nullable: true
          description: UUID of the zone
        zone:
          enum:
            - TriCounty
            - Tier1
            - Tier1 TX-VA
            - Tier1 TX-NC
            - Tier1 MD-ME
            - Tier1 VA-ME
            - Tier2
            - AK
            - CA
            - CO
            - FL
            - HI
            - OK
            - NewMadrid
            - PacNW
            - PR
            - TX
            - Inland TX
            - SFHA
            - MFHA
            - High Hazard
            - AllOther
            - Unknown
            - Custom1
            - Custom2
            - Custom3
            - Custom4
            - null
          type: string
          description: |-
            * `TriCounty` - Tricounty
            * `Tier1` - Tier1
            * `Tier1 TX-VA` - Tier1Txtova
            * `Tier1 TX-NC` - Tier1Txtonc
            * `Tier1 MD-ME` - Tier1Mdtome
            * `Tier1 VA-ME` - Tier1Vatome
            * `Tier2` - Tier2
            * `AK` - Ak
            * `CA` - Ca
            * `CO` - Co
            * `FL` - Fl
            * `HI` - Hi
            * `OK` - Ok
            * `NewMadrid` - Newmadrid
            * `PacNW` - Pacnw
            * `PR` - Pr
            * `TX` - Tx
            * `Inland TX` - Inlandtexas
            * `SFHA` - Sfha
            * `MFHA` - Mfha
            * `High Hazard` - Highhazard
            * `AllOther` - Allother
            * `Unknown` - Unknown
            * `Custom1` - Custom1
            * `Custom2` - Custom2
            * `Custom3` - Custom3
            * `Custom4` - Custom4
          x-spec-enum-id: 796960033c99fd8c
          readOnly: true
          nullable: true
      required:
        - bi_days_deductible
        - bi_location_deductible
        - bi_location_deductible_format
        - bi_min_deductible
        - bi_sublimit
        - deductible_type
        - included
        - is_deductible_combined
        - is_sublimit_combined
        - location_count
        - max_deductible
        - min_deductible
        - pd_building_location_deductible
        - pd_building_location_deductible_format
        - pd_contents_location_deductible
        - pd_contents_location_deductible_format
        - pd_min_deductible
        - pd_sublimit
        - per_location_deductible
        - per_location_deductible_format
        - per_location_deductible_type
        - peril_class
        - peril_group_uuid
        - sublimit
        - tiv
        - uuid
        - zone
    CoverageOptionBulkPerilSectionResponse:
      type: object
      properties:
        name:
          type: string
          readOnly: true
        peril_groups:
          type: array
          items:
            $ref: '#/components/schemas/CoverageOptionBulkPerilGroupResponse'
        uuid:
          type: string
          format: uuid
          readOnly: true
          nullable: true
          description: UUID of the peril section
      required:
        - name
        - peril_groups
        - uuid
    CoverageOptionBulkSubperil:
      type: object
      description: >-
        A term entry in a bulk payload declares every field optional except its
        identifiers.


        Which of the mutually-exclusive `pd_*`/`bi_*` vs combined fields are
        valid depends on the

        entry's own toggles, so requiredness can't be declared statically -- the
        PUT handler expands

        each entry to the applicable field set and resets whatever the body left
        out. A nested

        serializer also can't opt into `partial` on its own (DRF resolves it
        from ``self.root``), and

        marking the whole payload partial would make the identifying `uuid`s
        optional too.
      properties:
        uuid:
          type: string
          format: uuid
          description: UUID of the subperil. Must belong to the enclosing peril group.
        included:
          type: boolean
      required:
        - uuid
    CoverageOptionBulkPerilGroupResponse:
      type: object
      description: >-
        Identical to the detail peril group, but with the trimmed subperils
        above.
      properties:
        agg_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        agg_limit:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        bi_days_deductible:
          type: integer
          readOnly: true
          nullable: true
        bi_location_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        bi_location_deductible_format:
          enum:
            - P
            - C
            - null
          type: string
          x-spec-enum-id: 1453737de42163e5
          readOnly: true
          nullable: true
          description: |-
            Percent or dollar?

            * `P` - Percentage
            * `C` - Currency
        bi_max_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        bi_min_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        bi_sublimit:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        display_name:
          type: string
          readOnly: true
          nullable: true
          description: >-
            Display name for the peril group, e.g., Earthquake, Earthquake 2,
            Hurricane, etc.
        group_label:
          type: string
          readOnly: true
          description: Peril group label, e.g., EQ, EQ2, HU, IF, etc.
        included:
          type: boolean
          readOnly: true
        is_bi_split_allowed:
          type: boolean
          readOnly: true
          nullable: true
        is_deductible_combined:
          type: boolean
          readOnly: true
          nullable: true
        is_sublimit_combined:
          type: boolean
          readOnly: true
          nullable: true
        is_user_created:
          type: boolean
          readOnly: true
          nullable: true
          description: If user created this, set to True.
        location_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        location_deductible_format:
          enum:
            - P
            - C
            - null
          type: string
          x-spec-enum-id: 1453737de42163e5
          readOnly: true
          nullable: true
          description: |-
            Percent or dollar?

            * `P` - Percentage
            * `C` - Currency
        location_deductible_type:
          enum:
            - S
            - C
            - CT
            - CB
            - PL
            - null
          type: string
          description: |-
            * `S` - Sitedeductible
            * `C` - Perunitcoverage
            * `CT` - Combinedwithtimeelement
            * `CB` - Applytopropertydamage
            * `PL` - Percentofloss
          x-spec-enum-id: c999e4d4dffff517
          readOnly: true
          nullable: true
        max_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        min_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        pd_building_location_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        pd_building_location_deductible_format:
          enum:
            - P
            - C
            - null
          type: string
          x-spec-enum-id: 1453737de42163e5
          readOnly: true
          nullable: true
          description: |-
            Percent or dollar?

            * `P` - Percentage
            * `C` - Currency
        pd_contents_location_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        pd_contents_location_deductible_format:
          enum:
            - P
            - C
            - null
          type: string
          x-spec-enum-id: 1453737de42163e5
          readOnly: true
          nullable: true
          description: |-
            Percent or dollar?

            * `P` - Percentage
            * `C` - Currency
        pd_max_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        pd_min_deductible:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        pd_sublimit:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        section_name:
          type: string
        section_uuid:
          type: string
          format: uuid
        self_insured_retentions:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        sublimit:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        subperils:
          type: array
          items:
            $ref: '#/components/schemas/CoverageOptionBulkSubperilResponse'
        uuid:
          type: string
          format: uuid
          readOnly: true
          nullable: true
          description: UUID of the peril group
      required:
        - agg_deductible
        - agg_limit
        - bi_days_deductible
        - bi_location_deductible
        - bi_location_deductible_format
        - bi_max_deductible
        - bi_min_deductible
        - bi_sublimit
        - display_name
        - group_label
        - included
        - is_bi_split_allowed
        - is_deductible_combined
        - is_sublimit_combined
        - is_user_created
        - location_deductible
        - location_deductible_format
        - location_deductible_type
        - max_deductible
        - min_deductible
        - pd_building_location_deductible
        - pd_building_location_deductible_format
        - pd_contents_location_deductible
        - pd_contents_location_deductible_format
        - pd_max_deductible
        - pd_min_deductible
        - pd_sublimit
        - section_name
        - section_uuid
        - self_insured_retentions
        - sublimit
        - subperils
        - uuid
    CoverageOptionBulkSubperilResponse:
      type: object
      description: Subperil response for the bulk update, without `allowed_peril_groups`.
      properties:
        included:
          type: boolean
          readOnly: true
        name:
          type: string
          readOnly: true
        peril_group_uuid:
          type: string
          format: uuid
        peril_type:
          enum:
            - HU_Wind
            - HU_Surge
            - HU_PrecipitationFlood
            - EQ_Shake
            - EQ_Fire
            - EQ_Sprinkler
            - EQ_Landslide
            - EQ_Tsunami
            - EQ_Liquefaction
            - InlandFlood
            - Wildfire
            - Smoke
            - WinterStorm
            - SevereConvectiveStorm
            - Hail
            - StraightLineWind
            - Tornado
            - SevereStorm
            - Terrorism
            - NonCat
          type: string
          description: |-
            * `HU_Wind` - Hu_Wind
            * `HU_Surge` - Hu_Surge
            * `HU_PrecipitationFlood` - Hu_Precipitationflood
            * `EQ_Shake` - Eq_Shake
            * `EQ_Fire` - Eq_Fire
            * `EQ_Sprinkler` - Eq_Sprinkler
            * `EQ_Landslide` - Eq_Landslide
            * `EQ_Tsunami` - Eq_Tsunami
            * `EQ_Liquefaction` - Eq_Liquefaction
            * `InlandFlood` - Inlandflood
            * `Wildfire` - Wildfire
            * `Smoke` - Wf_Smoke
            * `WinterStorm` - Winterstorm
            * `SevereConvectiveStorm` - Severeconvectivestorm
            * `Hail` - Hail
            * `StraightLineWind` - Straightlinewind
            * `Tornado` - Tornado
            * `SevereStorm` - Severestorm
            * `Terrorism` - Terrorism
            * `NonCat` - Noncat
          x-spec-enum-id: 0ee0d83a25944b26
          readOnly: true
        uuid:
          type: string
          format: uuid
          readOnly: true
          nullable: true
          description: UUID of the subperil
      required:
        - included
        - name
        - peril_group_uuid
        - peril_type
        - uuid
  securitySchemes:
    authorization_header:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        Supports `Token `-prefixed API keys and `Bearer `-prefixed JWT-based
        authentication.

````