> ## 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 Layer Structure with Layers

> Replaces a layer structure and its layers outright. The body is the structure's complete state, so `name` and `layers` are both required, and every layer entry needs its own `name`; any term an entry leaves out is reset to its default rather than carried over from the layer's current values.

`layers` is the desired list in full: an entry with a `uuid` replaces that existing layer (keeping its identity and its modeling-option links), an entry without one creates a new layer, and any layer of the structure missing from the list is deleted. Send `[]` to clear them all. Names are never auto-generated or auto-suffixed here, and no two layers may share one. Layers keep their original relative order; new layers are appended. The whole request is atomic: if any layer is rejected, nothing is changed.



## OpenAPI

````yaml https://vision.dev.pingintel.com/api/schema/?format=json put /api/v1/submission/{pingid}/cat/layer-structures/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/layer-structures/bulk/{uuid}:
    put:
      tags:
        - CAT Modeling
      summary: Update Layer Structure with Layers
      description: >-
        Replaces a layer structure and its layers outright. The body is the
        structure's complete state, so `name` and `layers` are both required,
        and every layer entry needs its own `name`; any term an entry leaves out
        is reset to its default rather than carried over from the layer's
        current values.


        `layers` is the desired list in full: an entry with a `uuid` replaces
        that existing layer (keeping its identity and its modeling-option
        links), an entry without one creates a new layer, and any layer of the
        structure missing from the list is deleted. Send `[]` to clear them all.
        Names are never auto-generated or auto-suffixed here, and no two layers
        may share one. Layers keep their original relative order; new layers are
        appended. The whole request is atomic: if any layer is rejected, nothing
        is changed.
      operationId: api_v1_submission_cat_layer_structures_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/LayerStructureBulkUpdate'
            examples:
              UpdateRequest:
                value:
                  name: Structure 3 (renamed)
                  layers:
                    - uuid: 019def23-4b85-7ecb-a65c-98a92cf67f71
                      name: Primary 30
                      limit: 30000000
                      participation_percent: 100
                    - name: 10x30
                      attachment: 30000000
                      limit: 10000000
                      participation_percent: 50
                summary: Update request
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/LayerStructureBulkUpdate'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/LayerStructureBulkUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LayerStructureDetail'
              examples:
                Updated:
                  value:
                    uuid: 019def23-4b85-7ecb-a65c-98a92cf67f66
                    name: Structure 3
                    modified_time: '2026-04-29T02:12:00.000000Z'
                    created_time: '2026-04-29T02:12:00.000000Z'
                    layers:
                      - uuid: 019def23-4b85-7ecb-a65c-98a92cf67f71
                        name: Primary 25
                        included: true
                        attachment: null
                        limit: 25000000
                        participation_amount: 25000000
                        participation_percent: 100
                        premium: null
                      - uuid: 019def23-4b85-7ecb-a65c-98a92cf67f72
                        name: 10x25
                        included: true
                        attachment: 25000000
                        limit: 10000000
                        participation_amount: 5000000
                        participation_percent: 50
                        premium: null
          description: ''
      security:
        - authorization_header: []
components:
  schemas:
    LayerStructureBulkUpdate:
      type: object
      properties:
        layers:
          type: array
          items:
            $ref: '#/components/schemas/LayerStructureBulkLayerUpdate'
          description: >-
            The complete set of layers for the structure. Required; send `[]` to
            clear them.
        name:
          type: string
          description: >-
            Name of the layer structure. Required, and unique across the
            submission.
          maxLength: 100
      required:
        - layers
        - name
    LayerStructureDetail:
      type: object
      properties:
        created_time:
          type: string
          format: date-time
          readOnly: true
        layers:
          type: array
          items:
            $ref: '#/components/schemas/Layer'
        modified_time:
          type: string
          format: date-time
          readOnly: true
          nullable: true
        name:
          type: string
          readOnly: true
        uuid:
          type: string
          format: uuid
          readOnly: true
          nullable: true
          description: UUID of the policy terms layer structure
      required:
        - created_time
        - layers
        - modified_time
        - name
        - uuid
    LayerStructureBulkLayerUpdate:
      type: object
      description: >-
        A layer in a bulk update payload.


        Each entry is the layer's complete terms, so `name` is required and any
        term left out is reset

        to its default rather than carried over. `uuid` preserves an existing
        layer's identity; omit it

        (or send `null`) to create a new layer.
      properties:
        name:
          type: string
          maxLength: 100
        attachment:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        included:
          type: boolean
          default: true
        limit:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        participation_percent:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
          nullable: true
        premium:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        uuid:
          type: string
          format: uuid
          nullable: true
          description: >-
            UUID of the existing layer this entry replaces. Omit or send null to
            create a new layer.
      required:
        - name
    Layer:
      type: object
      properties:
        attachment:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        included:
          type: boolean
          readOnly: true
        limit:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        name:
          type: string
          readOnly: true
        participation_amount:
          type: integer
        participation_percent:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        premium:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        uuid:
          type: string
          format: uuid
          readOnly: true
          nullable: true
          description: UUID of the layer
      required:
        - attachment
        - included
        - limit
        - name
        - participation_amount
        - participation_percent
        - premium
        - uuid
  securitySchemes:
    authorization_header:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        Supports `Token `-prefixed API keys and `Bearer `-prefixed JWT-based
        authentication.

````