From f505a84ffe60162ef839e2f7abc17f2fc57252e0 Mon Sep 17 00:00:00 2001
From: Digital Factory <EU.BE.digital-factory@global.ntt>
Date: Thu, 15 Jun 2023 06:19:21 +0000
Subject: [PATCH] NTT Digital factory version v0.5.0 export

---
 docs/openapi.yaml                             | 113952 +++++++++++++++
 setup.py                                      |      2 +-
 src/netbox_rps_plugin/navigation.py           |      3 +-
 src/netbox_rps_plugin/tables.py               |      3 +-
 .../templates/netbox_rps_plugin/mapping.html  |     48 +-
 5 files changed, 113981 insertions(+), 27 deletions(-)
 create mode 100644 docs/openapi.yaml

diff --git a/docs/openapi.yaml b/docs/openapi.yaml
new file mode 100644
index 0000000..ee67409
--- /dev/null
+++ b/docs/openapi.yaml
@@ -0,0 +1,113952 @@
+openapi: 3.0.3
+info:
+  title: NetBox REST API
+  version: 3.5.1 (3.5)
+  license:
+    name: Apache v2 License
+paths:
+  /api/circuits/circuit-terminations/:
+    get:
+      operationId: circuits_circuit_terminations_list
+      description: Get a list of circuit termination objects.
+      parameters:
+      - in: query
+        name: cable_end
+        schema:
+          type: string
+        description: |-
+          * `A` - A
+          * `B` - B
+      - in: query
+        name: cable_end__n
+        schema:
+          type: string
+        description: |-
+          * `A` - A
+          * `B` - B
+      - in: query
+        name: cabled
+        schema:
+          type: boolean
+      - in: query
+        name: circuit_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Circuit
+        explode: true
+        style: form
+      - in: query
+        name: circuit_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Circuit
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: occupied
+        schema:
+          type: boolean
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: port_speed
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: port_speed__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: port_speed__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: port_speed__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: port_speed__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: port_speed__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: provider_network_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: ProviderNetwork (ID)
+        explode: true
+        style: form
+      - in: query
+        name: provider_network_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: ProviderNetwork (ID)
+        explode: true
+        style: form
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: site
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: term_side
+        schema:
+          type: string
+          title: Termination
+        description: |-
+          * `A` - A
+          * `Z` - Z
+      - in: query
+        name: term_side__n
+        schema:
+          type: string
+          title: Termination
+        description: |-
+          * `A` - A
+          * `Z` - Z
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: upstream_speed
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: upstream_speed__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: upstream_speed__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: upstream_speed__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: upstream_speed__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: upstream_speed__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: xconnect_id
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: xconnect_id__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: xconnect_id__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: xconnect_id__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: xconnect_id__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: xconnect_id__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: xconnect_id__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: xconnect_id__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: xconnect_id__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: xconnect_id__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: xconnect_id__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      tags:
+      - circuits
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedCircuitTerminationList'
+          description: ''
+    post:
+      operationId: circuits_circuit_terminations_create
+      description: Post a list of circuit termination objects.
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableCircuitTerminationRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableCircuitTerminationRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CircuitTermination'
+          description: ''
+    put:
+      operationId: circuits_circuit_terminations_bulk_update
+      description: Put a list of circuit termination objects.
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CircuitTerminationRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CircuitTerminationRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/CircuitTermination'
+          description: ''
+    patch:
+      operationId: circuits_circuit_terminations_bulk_partial_update
+      description: Patch a list of circuit termination objects.
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CircuitTerminationRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CircuitTerminationRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/CircuitTermination'
+          description: ''
+    delete:
+      operationId: circuits_circuit_terminations_bulk_destroy
+      description: Delete a list of circuit termination objects.
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CircuitTerminationRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CircuitTerminationRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/circuits/circuit-terminations/{id}/:
+    get:
+      operationId: circuits_circuit_terminations_retrieve
+      description: Get a circuit termination object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this circuit termination.
+        required: true
+      tags:
+      - circuits
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CircuitTermination'
+          description: ''
+    put:
+      operationId: circuits_circuit_terminations_update
+      description: Put a circuit termination object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this circuit termination.
+        required: true
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableCircuitTerminationRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableCircuitTerminationRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CircuitTermination'
+          description: ''
+    patch:
+      operationId: circuits_circuit_terminations_partial_update
+      description: Patch a circuit termination object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this circuit termination.
+        required: true
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableCircuitTerminationRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableCircuitTerminationRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CircuitTermination'
+          description: ''
+    delete:
+      operationId: circuits_circuit_terminations_destroy
+      description: Delete a circuit termination object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this circuit termination.
+        required: true
+      tags:
+      - circuits
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/circuits/circuit-terminations/{id}/paths/:
+    get:
+      operationId: circuits_circuit_terminations_paths_retrieve
+      description: Return all CablePaths which traverse a given pass-through port.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this circuit termination.
+        required: true
+      tags:
+      - circuits
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CircuitTermination'
+          description: ''
+  /api/circuits/circuit-types/:
+    get:
+      operationId: circuits_circuit_types_list
+      description: Get a list of circuit type objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: slug
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - circuits
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedCircuitTypeList'
+          description: ''
+    post:
+      operationId: circuits_circuit_types_create
+      description: Post a list of circuit type objects.
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CircuitTypeRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/CircuitTypeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CircuitType'
+          description: ''
+    put:
+      operationId: circuits_circuit_types_bulk_update
+      description: Put a list of circuit type objects.
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CircuitTypeRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CircuitTypeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/CircuitType'
+          description: ''
+    patch:
+      operationId: circuits_circuit_types_bulk_partial_update
+      description: Patch a list of circuit type objects.
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CircuitTypeRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CircuitTypeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/CircuitType'
+          description: ''
+    delete:
+      operationId: circuits_circuit_types_bulk_destroy
+      description: Delete a list of circuit type objects.
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CircuitTypeRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CircuitTypeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/circuits/circuit-types/{id}/:
+    get:
+      operationId: circuits_circuit_types_retrieve
+      description: Get a circuit type object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this circuit type.
+        required: true
+      tags:
+      - circuits
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CircuitType'
+          description: ''
+    put:
+      operationId: circuits_circuit_types_update
+      description: Put a circuit type object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this circuit type.
+        required: true
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CircuitTypeRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/CircuitTypeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CircuitType'
+          description: ''
+    patch:
+      operationId: circuits_circuit_types_partial_update
+      description: Patch a circuit type object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this circuit type.
+        required: true
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedCircuitTypeRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedCircuitTypeRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CircuitType'
+          description: ''
+    delete:
+      operationId: circuits_circuit_types_destroy
+      description: Delete a circuit type object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this circuit type.
+        required: true
+      tags:
+      - circuits
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/circuits/circuits/:
+    get:
+      operationId: circuits_circuits_list
+      description: Get a list of circuit objects.
+      parameters:
+      - in: query
+        name: cid
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: cid__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: cid__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: cid__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: cid__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: cid__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: cid__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: cid__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: cid__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: cid__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: cid__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: commit_rate
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: commit_rate__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: commit_rate__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: commit_rate__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: commit_rate__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: commit_rate__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: contact
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact
+        explode: true
+        style: form
+      - in: query
+        name: contact__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact
+        explode: true
+        style: form
+      - in: query
+        name: contact_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group
+        explode: true
+        style: form
+      - in: query
+        name: contact_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group
+        explode: true
+        style: form
+      - in: query
+        name: contact_role
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact Role
+        explode: true
+        style: form
+      - in: query
+        name: contact_role__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact Role
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: install_date
+        schema:
+          type: array
+          items:
+            type: string
+            format: date
+        explode: true
+        style: form
+      - in: query
+        name: install_date__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date
+        explode: true
+        style: form
+      - in: query
+        name: install_date__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date
+        explode: true
+        style: form
+      - in: query
+        name: install_date__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date
+        explode: true
+        style: form
+      - in: query
+        name: install_date__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date
+        explode: true
+        style: form
+      - in: query
+        name: install_date__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: provider
+        schema:
+          type: array
+          items:
+            type: string
+        description: Provider (slug)
+        explode: true
+        style: form
+      - in: query
+        name: provider__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Provider (slug)
+        explode: true
+        style: form
+      - in: query
+        name: provider_account_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: ProviderAccount (ID)
+        explode: true
+        style: form
+      - in: query
+        name: provider_account_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: ProviderAccount (ID)
+        explode: true
+        style: form
+      - in: query
+        name: provider_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Provider (ID)
+        explode: true
+        style: form
+      - in: query
+        name: provider_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Provider (ID)
+        explode: true
+        style: form
+      - in: query
+        name: provider_network_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: ProviderNetwork (ID)
+        explode: true
+        style: form
+      - in: query
+        name: provider_network_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: ProviderNetwork (ID)
+        explode: true
+        style: form
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: region
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: status
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `planned` - Planned
+          * `provisioning` - Provisioning
+          * `active` - Active
+          * `offline` - Offline
+          * `deprovisioning` - Deprovisioning
+          * `decommissioned` - Decommissioned
+        explode: true
+        style: form
+      - in: query
+        name: status__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `planned` - Planned
+          * `provisioning` - Provisioning
+          * `active` - Active
+          * `offline` - Offline
+          * `deprovisioning` - Deprovisioning
+          * `decommissioned` - Decommissioned
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tenant
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: termination_date
+        schema:
+          type: array
+          items:
+            type: string
+            format: date
+        explode: true
+        style: form
+      - in: query
+        name: termination_date__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date
+        explode: true
+        style: form
+      - in: query
+        name: termination_date__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date
+        explode: true
+        style: form
+      - in: query
+        name: termination_date__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date
+        explode: true
+        style: form
+      - in: query
+        name: termination_date__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date
+        explode: true
+        style: form
+      - in: query
+        name: termination_date__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date
+        explode: true
+        style: form
+      - in: query
+        name: type
+        schema:
+          type: array
+          items:
+            type: string
+        description: Circuit type (slug)
+        explode: true
+        style: form
+      - in: query
+        name: type__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Circuit type (slug)
+        explode: true
+        style: form
+      - in: query
+        name: type_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Circuit type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: type_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Circuit type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - circuits
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedCircuitList'
+          description: ''
+    post:
+      operationId: circuits_circuits_create
+      description: Post a list of circuit objects.
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableCircuitRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableCircuitRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Circuit'
+          description: ''
+    put:
+      operationId: circuits_circuits_bulk_update
+      description: Put a list of circuit objects.
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CircuitRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CircuitRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Circuit'
+          description: ''
+    patch:
+      operationId: circuits_circuits_bulk_partial_update
+      description: Patch a list of circuit objects.
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CircuitRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CircuitRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Circuit'
+          description: ''
+    delete:
+      operationId: circuits_circuits_bulk_destroy
+      description: Delete a list of circuit objects.
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CircuitRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CircuitRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/circuits/circuits/{id}/:
+    get:
+      operationId: circuits_circuits_retrieve
+      description: Get a circuit object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this circuit.
+        required: true
+      tags:
+      - circuits
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Circuit'
+          description: ''
+    put:
+      operationId: circuits_circuits_update
+      description: Put a circuit object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this circuit.
+        required: true
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableCircuitRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableCircuitRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Circuit'
+          description: ''
+    patch:
+      operationId: circuits_circuits_partial_update
+      description: Patch a circuit object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this circuit.
+        required: true
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableCircuitRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableCircuitRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Circuit'
+          description: ''
+    delete:
+      operationId: circuits_circuits_destroy
+      description: Delete a circuit object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this circuit.
+        required: true
+      tags:
+      - circuits
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/circuits/provider-accounts/:
+    get:
+      operationId: circuits_provider_accounts_list
+      description: Get a list of provider account objects.
+      parameters:
+      - in: query
+        name: account
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: account__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: account__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: account__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: account__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: account__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: account__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: account__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: account__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: account__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: account__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: provider
+        schema:
+          type: array
+          items:
+            type: string
+        description: Provider (slug)
+        explode: true
+        style: form
+      - in: query
+        name: provider__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Provider (slug)
+        explode: true
+        style: form
+      - in: query
+        name: provider_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Provider (ID)
+        explode: true
+        style: form
+      - in: query
+        name: provider_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Provider (ID)
+        explode: true
+        style: form
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - circuits
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedProviderAccountList'
+          description: ''
+    post:
+      operationId: circuits_provider_accounts_create
+      description: Post a list of provider account objects.
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableProviderAccountRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableProviderAccountRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ProviderAccount'
+          description: ''
+    put:
+      operationId: circuits_provider_accounts_bulk_update
+      description: Put a list of provider account objects.
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ProviderAccountRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ProviderAccountRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ProviderAccount'
+          description: ''
+    patch:
+      operationId: circuits_provider_accounts_bulk_partial_update
+      description: Patch a list of provider account objects.
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ProviderAccountRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ProviderAccountRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ProviderAccount'
+          description: ''
+    delete:
+      operationId: circuits_provider_accounts_bulk_destroy
+      description: Delete a list of provider account objects.
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ProviderAccountRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ProviderAccountRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/circuits/provider-accounts/{id}/:
+    get:
+      operationId: circuits_provider_accounts_retrieve
+      description: Get a provider account object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this provider account.
+        required: true
+      tags:
+      - circuits
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ProviderAccount'
+          description: ''
+    put:
+      operationId: circuits_provider_accounts_update
+      description: Put a provider account object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this provider account.
+        required: true
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableProviderAccountRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableProviderAccountRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ProviderAccount'
+          description: ''
+    patch:
+      operationId: circuits_provider_accounts_partial_update
+      description: Patch a provider account object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this provider account.
+        required: true
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableProviderAccountRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableProviderAccountRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ProviderAccount'
+          description: ''
+    delete:
+      operationId: circuits_provider_accounts_destroy
+      description: Delete a provider account object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this provider account.
+        required: true
+      tags:
+      - circuits
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/circuits/provider-networks/:
+    get:
+      operationId: circuits_provider_networks_list
+      description: Get a list of provider network objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: provider
+        schema:
+          type: array
+          items:
+            type: string
+        description: Provider (slug)
+        explode: true
+        style: form
+      - in: query
+        name: provider__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Provider (slug)
+        explode: true
+        style: form
+      - in: query
+        name: provider_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Provider (ID)
+        explode: true
+        style: form
+      - in: query
+        name: provider_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Provider (ID)
+        explode: true
+        style: form
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: service_id
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: service_id__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: service_id__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: service_id__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: service_id__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: service_id__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: service_id__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: service_id__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: service_id__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: service_id__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: service_id__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - circuits
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedProviderNetworkList'
+          description: ''
+    post:
+      operationId: circuits_provider_networks_create
+      description: Post a list of provider network objects.
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableProviderNetworkRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableProviderNetworkRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ProviderNetwork'
+          description: ''
+    put:
+      operationId: circuits_provider_networks_bulk_update
+      description: Put a list of provider network objects.
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ProviderNetworkRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ProviderNetworkRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ProviderNetwork'
+          description: ''
+    patch:
+      operationId: circuits_provider_networks_bulk_partial_update
+      description: Patch a list of provider network objects.
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ProviderNetworkRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ProviderNetworkRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ProviderNetwork'
+          description: ''
+    delete:
+      operationId: circuits_provider_networks_bulk_destroy
+      description: Delete a list of provider network objects.
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ProviderNetworkRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ProviderNetworkRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/circuits/provider-networks/{id}/:
+    get:
+      operationId: circuits_provider_networks_retrieve
+      description: Get a provider network object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this provider network.
+        required: true
+      tags:
+      - circuits
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ProviderNetwork'
+          description: ''
+    put:
+      operationId: circuits_provider_networks_update
+      description: Put a provider network object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this provider network.
+        required: true
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableProviderNetworkRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableProviderNetworkRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ProviderNetwork'
+          description: ''
+    patch:
+      operationId: circuits_provider_networks_partial_update
+      description: Patch a provider network object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this provider network.
+        required: true
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableProviderNetworkRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableProviderNetworkRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ProviderNetwork'
+          description: ''
+    delete:
+      operationId: circuits_provider_networks_destroy
+      description: Delete a provider network object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this provider network.
+        required: true
+      tags:
+      - circuits
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/circuits/providers/:
+    get:
+      operationId: circuits_providers_list
+      description: Get a list of provider objects.
+      parameters:
+      - in: query
+        name: asn_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: ASN (ID)
+        explode: true
+        style: form
+      - in: query
+        name: asn_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: ASN (ID)
+        explode: true
+        style: form
+      - in: query
+        name: contact
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact
+        explode: true
+        style: form
+      - in: query
+        name: contact__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact
+        explode: true
+        style: form
+      - in: query
+        name: contact_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group
+        explode: true
+        style: form
+      - in: query
+        name: contact_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group
+        explode: true
+        style: form
+      - in: query
+        name: contact_role
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact Role
+        explode: true
+        style: form
+      - in: query
+        name: contact_role__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact Role
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: region
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site
+        explode: true
+        style: form
+      - in: query
+        name: site_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site
+        explode: true
+        style: form
+      - in: query
+        name: slug
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - circuits
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedProviderList'
+          description: ''
+    post:
+      operationId: circuits_providers_create
+      description: Post a list of provider objects.
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableProviderRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableProviderRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Provider'
+          description: ''
+    put:
+      operationId: circuits_providers_bulk_update
+      description: Put a list of provider objects.
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ProviderRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ProviderRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Provider'
+          description: ''
+    patch:
+      operationId: circuits_providers_bulk_partial_update
+      description: Patch a list of provider objects.
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ProviderRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ProviderRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Provider'
+          description: ''
+    delete:
+      operationId: circuits_providers_bulk_destroy
+      description: Delete a list of provider objects.
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ProviderRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ProviderRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/circuits/providers/{id}/:
+    get:
+      operationId: circuits_providers_retrieve
+      description: Get a provider object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this provider.
+        required: true
+      tags:
+      - circuits
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Provider'
+          description: ''
+    put:
+      operationId: circuits_providers_update
+      description: Put a provider object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this provider.
+        required: true
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableProviderRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableProviderRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Provider'
+          description: ''
+    patch:
+      operationId: circuits_providers_partial_update
+      description: Patch a provider object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this provider.
+        required: true
+      tags:
+      - circuits
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableProviderRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableProviderRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Provider'
+          description: ''
+    delete:
+      operationId: circuits_providers_destroy
+      description: Delete a provider object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this provider.
+        required: true
+      tags:
+      - circuits
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/core/data-files/:
+    get:
+      operationId: core_data_files_list
+      description: Get a list of data file objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: hash
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: hash__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: hash__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: hash__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: hash__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: hash__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: hash__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: hash__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: hash__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: hash__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: hash__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: path
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: path__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: path__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: path__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: path__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: path__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: path__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: path__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: path__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: path__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: path__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: q
+        schema:
+          type: string
+      - in: query
+        name: size
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: size__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: size__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: size__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: size__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: size__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: source
+        schema:
+          type: array
+          items:
+            type: string
+        description: Data source (name)
+        explode: true
+        style: form
+      - in: query
+        name: source__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Data source (name)
+        explode: true
+        style: form
+      - in: query
+        name: source_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Data source (ID)
+        explode: true
+        style: form
+      - in: query
+        name: source_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Data source (ID)
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - core
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedDataFileList'
+          description: ''
+  /api/core/data-files/{id}/:
+    get:
+      operationId: core_data_files_retrieve
+      description: Get a data file object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this data file.
+        required: true
+      tags:
+      - core
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DataFile'
+          description: ''
+  /api/core/data-sources/:
+    get:
+      operationId: core_data_sources_list
+      description: Get a list of data source objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: enabled
+        schema:
+          type: boolean
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: status
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: status__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: type
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `local` - Local
+          * `git` - Git
+          * `amazon-s3` - Amazon S3
+        explode: true
+        style: form
+      - in: query
+        name: type__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `local` - Local
+          * `git` - Git
+          * `amazon-s3` - Amazon S3
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - core
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedDataSourceList'
+          description: ''
+    post:
+      operationId: core_data_sources_create
+      description: Post a list of data source objects.
+      tags:
+      - core
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableDataSourceRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableDataSourceRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DataSource'
+          description: ''
+    put:
+      operationId: core_data_sources_bulk_update
+      description: Put a list of data source objects.
+      tags:
+      - core
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DataSourceRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DataSourceRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/DataSource'
+          description: ''
+    patch:
+      operationId: core_data_sources_bulk_partial_update
+      description: Patch a list of data source objects.
+      tags:
+      - core
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DataSourceRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DataSourceRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/DataSource'
+          description: ''
+    delete:
+      operationId: core_data_sources_bulk_destroy
+      description: Delete a list of data source objects.
+      tags:
+      - core
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DataSourceRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DataSourceRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/core/data-sources/{id}/:
+    get:
+      operationId: core_data_sources_retrieve
+      description: Get a data source object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this data source.
+        required: true
+      tags:
+      - core
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DataSource'
+          description: ''
+    put:
+      operationId: core_data_sources_update
+      description: Put a data source object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this data source.
+        required: true
+      tags:
+      - core
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableDataSourceRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableDataSourceRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DataSource'
+          description: ''
+    patch:
+      operationId: core_data_sources_partial_update
+      description: Patch a data source object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this data source.
+        required: true
+      tags:
+      - core
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableDataSourceRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableDataSourceRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DataSource'
+          description: ''
+    delete:
+      operationId: core_data_sources_destroy
+      description: Delete a data source object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this data source.
+        required: true
+      tags:
+      - core
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/core/data-sources/{id}/sync/:
+    post:
+      operationId: core_data_sources_sync_create
+      description: Enqueue a job to synchronize the DataSource.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this data source.
+        required: true
+      tags:
+      - core
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableDataSourceRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableDataSourceRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DataSource'
+          description: ''
+  /api/core/jobs/:
+    get:
+      operationId: core_jobs_list
+      description: Retrieve a list of job results
+      parameters:
+      - in: query
+        name: completed
+        schema:
+          type: string
+          format: date-time
+      - in: query
+        name: completed__after
+        schema:
+          type: string
+          format: date-time
+      - in: query
+        name: completed__before
+        schema:
+          type: string
+          format: date-time
+      - in: query
+        name: created
+        schema:
+          type: string
+          format: date-time
+      - in: query
+        name: created__after
+        schema:
+          type: string
+          format: date-time
+      - in: query
+        name: created__before
+        schema:
+          type: string
+          format: date-time
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interval
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interval__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interval__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interval__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interval__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interval__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: object_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: object_id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: object_id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: object_id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: object_id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: object_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: object_type
+        schema:
+          type: integer
+      - in: query
+        name: object_type__n
+        schema:
+          type: integer
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: scheduled
+        schema:
+          type: string
+          format: date-time
+      - in: query
+        name: scheduled__after
+        schema:
+          type: string
+          format: date-time
+      - in: query
+        name: scheduled__before
+        schema:
+          type: string
+          format: date-time
+      - in: query
+        name: started
+        schema:
+          type: string
+          format: date-time
+      - in: query
+        name: started__after
+        schema:
+          type: string
+          format: date-time
+      - in: query
+        name: started__before
+        schema:
+          type: string
+          format: date-time
+      - in: query
+        name: status
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `pending` - Pending
+          * `scheduled` - Scheduled
+          * `running` - Running
+          * `completed` - Completed
+          * `errored` - Errored
+          * `failed` - Failed
+        explode: true
+        style: form
+      - in: query
+        name: status__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `pending` - Pending
+          * `scheduled` - Scheduled
+          * `running` - Running
+          * `completed` - Completed
+          * `errored` - Errored
+          * `failed` - Failed
+        explode: true
+        style: form
+      - in: query
+        name: user
+        schema:
+          type: integer
+      - in: query
+        name: user__n
+        schema:
+          type: integer
+      tags:
+      - core
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedJobList'
+          description: ''
+  /api/core/jobs/{id}/:
+    get:
+      operationId: core_jobs_retrieve
+      description: Retrieve a list of job results
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this job.
+        required: true
+      tags:
+      - core
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Job'
+          description: ''
+  /api/dcim/cable-terminations/:
+    get:
+      operationId: dcim_cable_terminations_list
+      description: Get a list of cable termination objects.
+      parameters:
+      - in: query
+        name: cable
+        schema:
+          type: integer
+      - in: query
+        name: cable__n
+        schema:
+          type: integer
+      - in: query
+        name: cable_end
+        schema:
+          type: string
+          title: End
+        description: |-
+          * `A` - A
+          * `B` - B
+      - in: query
+        name: cable_end__n
+        schema:
+          type: string
+          title: End
+        description: |-
+          * `A` - A
+          * `B` - B
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: termination_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: termination_id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: termination_id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: termination_id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: termination_id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: termination_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: termination_type
+        schema:
+          type: string
+      - in: query
+        name: termination_type__n
+        schema:
+          type: string
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedCableTerminationList'
+          description: ''
+    post:
+      operationId: dcim_cable_terminations_create
+      description: Post a list of cable termination objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CableTerminationRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/CableTerminationRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CableTermination'
+          description: ''
+    put:
+      operationId: dcim_cable_terminations_bulk_update
+      description: Put a list of cable termination objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CableTerminationRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CableTerminationRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/CableTermination'
+          description: ''
+    patch:
+      operationId: dcim_cable_terminations_bulk_partial_update
+      description: Patch a list of cable termination objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CableTerminationRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CableTerminationRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/CableTermination'
+          description: ''
+    delete:
+      operationId: dcim_cable_terminations_bulk_destroy
+      description: Delete a list of cable termination objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CableTerminationRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CableTerminationRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/cable-terminations/{id}/:
+    get:
+      operationId: dcim_cable_terminations_retrieve
+      description: Get a cable termination object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this cable termination.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CableTermination'
+          description: ''
+    put:
+      operationId: dcim_cable_terminations_update
+      description: Put a cable termination object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this cable termination.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CableTerminationRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/CableTerminationRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CableTermination'
+          description: ''
+    patch:
+      operationId: dcim_cable_terminations_partial_update
+      description: Patch a cable termination object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this cable termination.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedCableTerminationRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedCableTerminationRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CableTermination'
+          description: ''
+    delete:
+      operationId: dcim_cable_terminations_destroy
+      description: Delete a cable termination object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this cable termination.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/cables/:
+    get:
+      operationId: dcim_cables_list
+      description: Get a list of cable objects.
+      parameters:
+      - in: query
+        name: color
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: device
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: device_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: label
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: length
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: length__gt
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: length__gte
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: length__lt
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: length__lte
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: length__n
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: length_unit
+        schema:
+          type: string
+        description: |-
+          * `km` - Kilometers
+          * `m` - Meters
+          * `cm` - Centimeters
+          * `mi` - Miles
+          * `ft` - Feet
+          * `in` - Inches
+      - in: query
+        name: length_unit__n
+        schema:
+          type: string
+        description: |-
+          * `km` - Kilometers
+          * `m` - Meters
+          * `cm` - Centimeters
+          * `mi` - Miles
+          * `ft` - Feet
+          * `in` - Inches
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: location
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: location_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: rack
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: rack_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: site
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: site_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: status
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `connected` - Connected
+          * `planned` - Planned
+          * `decommissioning` - Decommissioning
+        explode: true
+        style: form
+      - in: query
+        name: status__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `connected` - Connected
+          * `planned` - Planned
+          * `decommissioning` - Decommissioning
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tenant
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: termination_a_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: termination_a_type
+        schema:
+          type: string
+      - in: query
+        name: termination_a_type__n
+        schema:
+          type: string
+      - in: query
+        name: termination_b_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: termination_b_type
+        schema:
+          type: string
+      - in: query
+        name: termination_b_type__n
+        schema:
+          type: string
+      - in: query
+        name: type
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `cat3` - CAT3
+          * `cat5` - CAT5
+          * `cat5e` - CAT5e
+          * `cat6` - CAT6
+          * `cat6a` - CAT6a
+          * `cat7` - CAT7
+          * `cat7a` - CAT7a
+          * `cat8` - CAT8
+          * `dac-active` - Direct Attach Copper (Active)
+          * `dac-passive` - Direct Attach Copper (Passive)
+          * `mrj21-trunk` - MRJ21 Trunk
+          * `coaxial` - Coaxial
+          * `mmf` - Multimode Fiber
+          * `mmf-om1` - Multimode Fiber (OM1)
+          * `mmf-om2` - Multimode Fiber (OM2)
+          * `mmf-om3` - Multimode Fiber (OM3)
+          * `mmf-om4` - Multimode Fiber (OM4)
+          * `mmf-om5` - Multimode Fiber (OM5)
+          * `smf` - Singlemode Fiber
+          * `smf-os1` - Singlemode Fiber (OS1)
+          * `smf-os2` - Singlemode Fiber (OS2)
+          * `aoc` - Active Optical Cabling (AOC)
+          * `power` - Power
+        explode: true
+        style: form
+      - in: query
+        name: type__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `cat3` - CAT3
+          * `cat5` - CAT5
+          * `cat5e` - CAT5e
+          * `cat6` - CAT6
+          * `cat6a` - CAT6a
+          * `cat7` - CAT7
+          * `cat7a` - CAT7a
+          * `cat8` - CAT8
+          * `dac-active` - Direct Attach Copper (Active)
+          * `dac-passive` - Direct Attach Copper (Passive)
+          * `mrj21-trunk` - MRJ21 Trunk
+          * `coaxial` - Coaxial
+          * `mmf` - Multimode Fiber
+          * `mmf-om1` - Multimode Fiber (OM1)
+          * `mmf-om2` - Multimode Fiber (OM2)
+          * `mmf-om3` - Multimode Fiber (OM3)
+          * `mmf-om4` - Multimode Fiber (OM4)
+          * `mmf-om5` - Multimode Fiber (OM5)
+          * `smf` - Singlemode Fiber
+          * `smf-os1` - Singlemode Fiber (OS1)
+          * `smf-os2` - Singlemode Fiber (OS2)
+          * `aoc` - Active Optical Cabling (AOC)
+          * `power` - Power
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedCableList'
+          description: ''
+    post:
+      operationId: dcim_cables_create
+      description: Post a list of cable objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableCableRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableCableRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Cable'
+          description: ''
+    put:
+      operationId: dcim_cables_bulk_update
+      description: Put a list of cable objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CableRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CableRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Cable'
+          description: ''
+    patch:
+      operationId: dcim_cables_bulk_partial_update
+      description: Patch a list of cable objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CableRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CableRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Cable'
+          description: ''
+    delete:
+      operationId: dcim_cables_bulk_destroy
+      description: Delete a list of cable objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CableRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CableRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/cables/{id}/:
+    get:
+      operationId: dcim_cables_retrieve
+      description: Get a cable object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this cable.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Cable'
+          description: ''
+    put:
+      operationId: dcim_cables_update
+      description: Put a cable object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this cable.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableCableRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableCableRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Cable'
+          description: ''
+    patch:
+      operationId: dcim_cables_partial_update
+      description: Patch a cable object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this cable.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableCableRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableCableRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Cable'
+          description: ''
+    delete:
+      operationId: dcim_cables_destroy
+      description: Delete a cable object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this cable.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/connected-device/:
+    get:
+      operationId: dcim_connected_device_retrieve
+      description: |-
+        This endpoint allows a user to determine what device (if any) is connected to a given peer device and peer
+        interface. This is useful in a situation where a device boots with no configuration, but can detect its neighbors
+        via a protocol such as LLDP. Two query parameters must be included in the request:
+
+        * `peer_device`: The name of the peer device
+        * `peer_interface`: The name of the peer interface
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: object
+                additionalProperties: {}
+          description: ''
+  /api/dcim/console-port-templates/:
+    get:
+      operationId: dcim_console_port_templates_list
+      description: Get a list of console port template objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: devicetype_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Device type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: devicetype_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Device type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: moduletype_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Module type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: moduletype_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Module type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: type
+        schema:
+          type: string
+        description: |-
+          * `de-9` - DE-9
+          * `db-25` - DB-25
+          * `rj-11` - RJ-11
+          * `rj-12` - RJ-12
+          * `rj-45` - RJ-45
+          * `mini-din-8` - Mini-DIN 8
+          * `usb-a` - USB Type A
+          * `usb-b` - USB Type B
+          * `usb-c` - USB Type C
+          * `usb-mini-a` - USB Mini A
+          * `usb-mini-b` - USB Mini B
+          * `usb-micro-a` - USB Micro A
+          * `usb-micro-b` - USB Micro B
+          * `usb-micro-ab` - USB Micro AB
+          * `other` - Other
+      - in: query
+        name: type__n
+        schema:
+          type: string
+        description: |-
+          * `de-9` - DE-9
+          * `db-25` - DB-25
+          * `rj-11` - RJ-11
+          * `rj-12` - RJ-12
+          * `rj-45` - RJ-45
+          * `mini-din-8` - Mini-DIN 8
+          * `usb-a` - USB Type A
+          * `usb-b` - USB Type B
+          * `usb-c` - USB Type C
+          * `usb-mini-a` - USB Mini A
+          * `usb-mini-b` - USB Mini B
+          * `usb-micro-a` - USB Micro A
+          * `usb-micro-b` - USB Micro B
+          * `usb-micro-ab` - USB Micro AB
+          * `other` - Other
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedConsolePortTemplateList'
+          description: ''
+    post:
+      operationId: dcim_console_port_templates_create
+      description: Post a list of console port template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableConsolePortTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableConsolePortTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConsolePortTemplate'
+          description: ''
+    put:
+      operationId: dcim_console_port_templates_bulk_update
+      description: Put a list of console port template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConsolePortTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConsolePortTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ConsolePortTemplate'
+          description: ''
+    patch:
+      operationId: dcim_console_port_templates_bulk_partial_update
+      description: Patch a list of console port template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConsolePortTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConsolePortTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ConsolePortTemplate'
+          description: ''
+    delete:
+      operationId: dcim_console_port_templates_bulk_destroy
+      description: Delete a list of console port template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConsolePortTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConsolePortTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/console-port-templates/{id}/:
+    get:
+      operationId: dcim_console_port_templates_retrieve
+      description: Get a console port template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this console port template.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConsolePortTemplate'
+          description: ''
+    put:
+      operationId: dcim_console_port_templates_update
+      description: Put a console port template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this console port template.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableConsolePortTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableConsolePortTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConsolePortTemplate'
+          description: ''
+    patch:
+      operationId: dcim_console_port_templates_partial_update
+      description: Patch a console port template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this console port template.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableConsolePortTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableConsolePortTemplateRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConsolePortTemplate'
+          description: ''
+    delete:
+      operationId: dcim_console_port_templates_destroy
+      description: Delete a console port template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this console port template.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/console-ports/:
+    get:
+      operationId: dcim_console_ports_list
+      description: Get a list of console port objects.
+      parameters:
+      - in: query
+        name: cable_end
+        schema:
+          type: string
+        description: |-
+          * `A` - A
+          * `B` - B
+      - in: query
+        name: cable_end__n
+        schema:
+          type: string
+        description: |-
+          * `A` - A
+          * `B` - B
+      - in: query
+        name: cabled
+        schema:
+          type: boolean
+      - in: query
+        name: connected
+        schema:
+          type: boolean
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: device
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+        description: Device (name)
+        explode: true
+        style: form
+      - in: query
+        name: device__n
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+        description: Device (name)
+        explode: true
+        style: form
+      - in: query
+        name: device_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device (ID)
+        explode: true
+        style: form
+      - in: query
+        name: device_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device (ID)
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: label
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: location
+        schema:
+          type: array
+          items:
+            type: string
+        description: Location (slug)
+        explode: true
+        style: form
+      - in: query
+        name: location__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Location (slug)
+        explode: true
+        style: form
+      - in: query
+        name: location_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - in: query
+        name: location_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - in: query
+        name: module_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Module (ID)
+        explode: true
+        style: form
+      - in: query
+        name: module_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Module (ID)
+        explode: true
+        style: form
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: occupied
+        schema:
+          type: boolean
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: rack
+        schema:
+          type: array
+          items:
+            type: string
+        description: Rack (name)
+        explode: true
+        style: form
+      - in: query
+        name: rack__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Rack (name)
+        explode: true
+        style: form
+      - in: query
+        name: rack_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Rack (ID)
+        explode: true
+        style: form
+      - in: query
+        name: rack_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Rack (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site name (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site name (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: type
+        schema:
+          type: array
+          items:
+            type: string
+        description: Physical port type
+        explode: true
+        style: form
+      - in: query
+        name: type__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Physical port type
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: virtual_chassis
+        schema:
+          type: array
+          items:
+            type: string
+        description: Virtual Chassis
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Virtual Chassis
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Virtual Chassis (ID)
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Virtual Chassis (ID)
+        explode: true
+        style: form
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedConsolePortList'
+          description: ''
+    post:
+      operationId: dcim_console_ports_create
+      description: Post a list of console port objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableConsolePortRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableConsolePortRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConsolePort'
+          description: ''
+    put:
+      operationId: dcim_console_ports_bulk_update
+      description: Put a list of console port objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConsolePortRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConsolePortRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ConsolePort'
+          description: ''
+    patch:
+      operationId: dcim_console_ports_bulk_partial_update
+      description: Patch a list of console port objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConsolePortRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConsolePortRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ConsolePort'
+          description: ''
+    delete:
+      operationId: dcim_console_ports_bulk_destroy
+      description: Delete a list of console port objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConsolePortRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConsolePortRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/console-ports/{id}/:
+    get:
+      operationId: dcim_console_ports_retrieve
+      description: Get a console port object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this console port.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConsolePort'
+          description: ''
+    put:
+      operationId: dcim_console_ports_update
+      description: Put a console port object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this console port.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableConsolePortRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableConsolePortRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConsolePort'
+          description: ''
+    patch:
+      operationId: dcim_console_ports_partial_update
+      description: Patch a console port object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this console port.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableConsolePortRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableConsolePortRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConsolePort'
+          description: ''
+    delete:
+      operationId: dcim_console_ports_destroy
+      description: Delete a console port object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this console port.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/console-ports/{id}/trace/:
+    get:
+      operationId: dcim_console_ports_trace_retrieve
+      description: Trace a complete cable path and return each segment as a three-tuple
+        of (termination, cable, termination).
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this console port.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConsolePort'
+          description: ''
+  /api/dcim/console-server-port-templates/:
+    get:
+      operationId: dcim_console_server_port_templates_list
+      description: Get a list of console server port template objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: devicetype_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Device type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: devicetype_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Device type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: moduletype_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Module type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: moduletype_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Module type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: type
+        schema:
+          type: string
+        description: |-
+          * `de-9` - DE-9
+          * `db-25` - DB-25
+          * `rj-11` - RJ-11
+          * `rj-12` - RJ-12
+          * `rj-45` - RJ-45
+          * `mini-din-8` - Mini-DIN 8
+          * `usb-a` - USB Type A
+          * `usb-b` - USB Type B
+          * `usb-c` - USB Type C
+          * `usb-mini-a` - USB Mini A
+          * `usb-mini-b` - USB Mini B
+          * `usb-micro-a` - USB Micro A
+          * `usb-micro-b` - USB Micro B
+          * `usb-micro-ab` - USB Micro AB
+          * `other` - Other
+      - in: query
+        name: type__n
+        schema:
+          type: string
+        description: |-
+          * `de-9` - DE-9
+          * `db-25` - DB-25
+          * `rj-11` - RJ-11
+          * `rj-12` - RJ-12
+          * `rj-45` - RJ-45
+          * `mini-din-8` - Mini-DIN 8
+          * `usb-a` - USB Type A
+          * `usb-b` - USB Type B
+          * `usb-c` - USB Type C
+          * `usb-mini-a` - USB Mini A
+          * `usb-mini-b` - USB Mini B
+          * `usb-micro-a` - USB Micro A
+          * `usb-micro-b` - USB Micro B
+          * `usb-micro-ab` - USB Micro AB
+          * `other` - Other
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedConsoleServerPortTemplateList'
+          description: ''
+    post:
+      operationId: dcim_console_server_port_templates_create
+      description: Post a list of console server port template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableConsoleServerPortTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableConsoleServerPortTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConsoleServerPortTemplate'
+          description: ''
+    put:
+      operationId: dcim_console_server_port_templates_bulk_update
+      description: Put a list of console server port template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConsoleServerPortTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConsoleServerPortTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ConsoleServerPortTemplate'
+          description: ''
+    patch:
+      operationId: dcim_console_server_port_templates_bulk_partial_update
+      description: Patch a list of console server port template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConsoleServerPortTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConsoleServerPortTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ConsoleServerPortTemplate'
+          description: ''
+    delete:
+      operationId: dcim_console_server_port_templates_bulk_destroy
+      description: Delete a list of console server port template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConsoleServerPortTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConsoleServerPortTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/console-server-port-templates/{id}/:
+    get:
+      operationId: dcim_console_server_port_templates_retrieve
+      description: Get a console server port template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this console server port template.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConsoleServerPortTemplate'
+          description: ''
+    put:
+      operationId: dcim_console_server_port_templates_update
+      description: Put a console server port template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this console server port template.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableConsoleServerPortTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableConsoleServerPortTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConsoleServerPortTemplate'
+          description: ''
+    patch:
+      operationId: dcim_console_server_port_templates_partial_update
+      description: Patch a console server port template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this console server port template.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableConsoleServerPortTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableConsoleServerPortTemplateRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConsoleServerPortTemplate'
+          description: ''
+    delete:
+      operationId: dcim_console_server_port_templates_destroy
+      description: Delete a console server port template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this console server port template.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/console-server-ports/:
+    get:
+      operationId: dcim_console_server_ports_list
+      description: Get a list of console server port objects.
+      parameters:
+      - in: query
+        name: cable_end
+        schema:
+          type: string
+        description: |-
+          * `A` - A
+          * `B` - B
+      - in: query
+        name: cable_end__n
+        schema:
+          type: string
+        description: |-
+          * `A` - A
+          * `B` - B
+      - in: query
+        name: cabled
+        schema:
+          type: boolean
+      - in: query
+        name: connected
+        schema:
+          type: boolean
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: device
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+        description: Device (name)
+        explode: true
+        style: form
+      - in: query
+        name: device__n
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+        description: Device (name)
+        explode: true
+        style: form
+      - in: query
+        name: device_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device (ID)
+        explode: true
+        style: form
+      - in: query
+        name: device_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device (ID)
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: label
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: location
+        schema:
+          type: array
+          items:
+            type: string
+        description: Location (slug)
+        explode: true
+        style: form
+      - in: query
+        name: location__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Location (slug)
+        explode: true
+        style: form
+      - in: query
+        name: location_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - in: query
+        name: location_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - in: query
+        name: module_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Module (ID)
+        explode: true
+        style: form
+      - in: query
+        name: module_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Module (ID)
+        explode: true
+        style: form
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: occupied
+        schema:
+          type: boolean
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: rack
+        schema:
+          type: array
+          items:
+            type: string
+        description: Rack (name)
+        explode: true
+        style: form
+      - in: query
+        name: rack__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Rack (name)
+        explode: true
+        style: form
+      - in: query
+        name: rack_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Rack (ID)
+        explode: true
+        style: form
+      - in: query
+        name: rack_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Rack (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site name (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site name (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: type
+        schema:
+          type: array
+          items:
+            type: string
+        description: Physical port type
+        explode: true
+        style: form
+      - in: query
+        name: type__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Physical port type
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: virtual_chassis
+        schema:
+          type: array
+          items:
+            type: string
+        description: Virtual Chassis
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Virtual Chassis
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Virtual Chassis (ID)
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Virtual Chassis (ID)
+        explode: true
+        style: form
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedConsoleServerPortList'
+          description: ''
+    post:
+      operationId: dcim_console_server_ports_create
+      description: Post a list of console server port objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableConsoleServerPortRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableConsoleServerPortRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConsoleServerPort'
+          description: ''
+    put:
+      operationId: dcim_console_server_ports_bulk_update
+      description: Put a list of console server port objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConsoleServerPortRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConsoleServerPortRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ConsoleServerPort'
+          description: ''
+    patch:
+      operationId: dcim_console_server_ports_bulk_partial_update
+      description: Patch a list of console server port objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConsoleServerPortRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConsoleServerPortRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ConsoleServerPort'
+          description: ''
+    delete:
+      operationId: dcim_console_server_ports_bulk_destroy
+      description: Delete a list of console server port objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConsoleServerPortRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConsoleServerPortRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/console-server-ports/{id}/:
+    get:
+      operationId: dcim_console_server_ports_retrieve
+      description: Get a console server port object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this console server port.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConsoleServerPort'
+          description: ''
+    put:
+      operationId: dcim_console_server_ports_update
+      description: Put a console server port object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this console server port.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableConsoleServerPortRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableConsoleServerPortRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConsoleServerPort'
+          description: ''
+    patch:
+      operationId: dcim_console_server_ports_partial_update
+      description: Patch a console server port object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this console server port.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableConsoleServerPortRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableConsoleServerPortRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConsoleServerPort'
+          description: ''
+    delete:
+      operationId: dcim_console_server_ports_destroy
+      description: Delete a console server port object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this console server port.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/console-server-ports/{id}/trace/:
+    get:
+      operationId: dcim_console_server_ports_trace_retrieve
+      description: Trace a complete cable path and return each segment as a three-tuple
+        of (termination, cable, termination).
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this console server port.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConsoleServerPort'
+          description: ''
+  /api/dcim/device-bay-templates/:
+    get:
+      operationId: dcim_device_bay_templates_list
+      description: Get a list of device bay template objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: devicetype_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: devicetype_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedDeviceBayTemplateList'
+          description: ''
+    post:
+      operationId: dcim_device_bay_templates_create
+      description: Post a list of device bay template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableDeviceBayTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableDeviceBayTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DeviceBayTemplate'
+          description: ''
+    put:
+      operationId: dcim_device_bay_templates_bulk_update
+      description: Put a list of device bay template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceBayTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceBayTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/DeviceBayTemplate'
+          description: ''
+    patch:
+      operationId: dcim_device_bay_templates_bulk_partial_update
+      description: Patch a list of device bay template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceBayTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceBayTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/DeviceBayTemplate'
+          description: ''
+    delete:
+      operationId: dcim_device_bay_templates_bulk_destroy
+      description: Delete a list of device bay template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceBayTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceBayTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/device-bay-templates/{id}/:
+    get:
+      operationId: dcim_device_bay_templates_retrieve
+      description: Get a device bay template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this device bay template.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DeviceBayTemplate'
+          description: ''
+    put:
+      operationId: dcim_device_bay_templates_update
+      description: Put a device bay template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this device bay template.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableDeviceBayTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableDeviceBayTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DeviceBayTemplate'
+          description: ''
+    patch:
+      operationId: dcim_device_bay_templates_partial_update
+      description: Patch a device bay template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this device bay template.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableDeviceBayTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableDeviceBayTemplateRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DeviceBayTemplate'
+          description: ''
+    delete:
+      operationId: dcim_device_bay_templates_destroy
+      description: Delete a device bay template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this device bay template.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/device-bays/:
+    get:
+      operationId: dcim_device_bays_list
+      description: Get a list of device bay objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: device
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+        description: Device (name)
+        explode: true
+        style: form
+      - in: query
+        name: device__n
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+        description: Device (name)
+        explode: true
+        style: form
+      - in: query
+        name: device_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device (ID)
+        explode: true
+        style: form
+      - in: query
+        name: device_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device (ID)
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: label
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: location
+        schema:
+          type: array
+          items:
+            type: string
+        description: Location (slug)
+        explode: true
+        style: form
+      - in: query
+        name: location__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Location (slug)
+        explode: true
+        style: form
+      - in: query
+        name: location_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - in: query
+        name: location_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: rack
+        schema:
+          type: array
+          items:
+            type: string
+        description: Rack (name)
+        explode: true
+        style: form
+      - in: query
+        name: rack__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Rack (name)
+        explode: true
+        style: form
+      - in: query
+        name: rack_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Rack (ID)
+        explode: true
+        style: form
+      - in: query
+        name: rack_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Rack (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site name (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site name (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: virtual_chassis
+        schema:
+          type: array
+          items:
+            type: string
+        description: Virtual Chassis
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Virtual Chassis
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Virtual Chassis (ID)
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Virtual Chassis (ID)
+        explode: true
+        style: form
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedDeviceBayList'
+          description: ''
+    post:
+      operationId: dcim_device_bays_create
+      description: Post a list of device bay objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableDeviceBayRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableDeviceBayRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DeviceBay'
+          description: ''
+    put:
+      operationId: dcim_device_bays_bulk_update
+      description: Put a list of device bay objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceBayRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceBayRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/DeviceBay'
+          description: ''
+    patch:
+      operationId: dcim_device_bays_bulk_partial_update
+      description: Patch a list of device bay objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceBayRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceBayRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/DeviceBay'
+          description: ''
+    delete:
+      operationId: dcim_device_bays_bulk_destroy
+      description: Delete a list of device bay objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceBayRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceBayRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/device-bays/{id}/:
+    get:
+      operationId: dcim_device_bays_retrieve
+      description: Get a device bay object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this device bay.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DeviceBay'
+          description: ''
+    put:
+      operationId: dcim_device_bays_update
+      description: Put a device bay object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this device bay.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableDeviceBayRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableDeviceBayRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DeviceBay'
+          description: ''
+    patch:
+      operationId: dcim_device_bays_partial_update
+      description: Patch a device bay object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this device bay.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableDeviceBayRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableDeviceBayRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DeviceBay'
+          description: ''
+    delete:
+      operationId: dcim_device_bays_destroy
+      description: Delete a device bay object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this device bay.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/device-roles/:
+    get:
+      operationId: dcim_device_roles_list
+      description: Get a list of device role objects.
+      parameters:
+      - in: query
+        name: color
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: config_template_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Config template (ID)
+        explode: true
+        style: form
+      - in: query
+        name: config_template_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Config template (ID)
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: slug
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: vm_role
+        schema:
+          type: boolean
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedDeviceRoleList'
+          description: ''
+    post:
+      operationId: dcim_device_roles_create
+      description: Post a list of device role objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableDeviceRoleRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableDeviceRoleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DeviceRole'
+          description: ''
+    put:
+      operationId: dcim_device_roles_bulk_update
+      description: Put a list of device role objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceRoleRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceRoleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/DeviceRole'
+          description: ''
+    patch:
+      operationId: dcim_device_roles_bulk_partial_update
+      description: Patch a list of device role objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceRoleRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceRoleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/DeviceRole'
+          description: ''
+    delete:
+      operationId: dcim_device_roles_bulk_destroy
+      description: Delete a list of device role objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceRoleRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceRoleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/device-roles/{id}/:
+    get:
+      operationId: dcim_device_roles_retrieve
+      description: Get a device role object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this device role.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DeviceRole'
+          description: ''
+    put:
+      operationId: dcim_device_roles_update
+      description: Put a device role object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this device role.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableDeviceRoleRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableDeviceRoleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DeviceRole'
+          description: ''
+    patch:
+      operationId: dcim_device_roles_partial_update
+      description: Patch a device role object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this device role.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableDeviceRoleRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableDeviceRoleRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DeviceRole'
+          description: ''
+    delete:
+      operationId: dcim_device_roles_destroy
+      description: Delete a device role object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this device role.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/device-types/:
+    get:
+      operationId: dcim_device_types_list
+      description: Get a list of device type objects.
+      parameters:
+      - in: query
+        name: airflow
+        schema:
+          type: string
+        description: |-
+          * `front-to-rear` - Front to rear
+          * `rear-to-front` - Rear to front
+          * `left-to-right` - Left to right
+          * `right-to-left` - Right to left
+          * `side-to-rear` - Side to rear
+          * `passive` - Passive
+          * `mixed` - Mixed
+      - in: query
+        name: airflow__n
+        schema:
+          type: string
+        description: |-
+          * `front-to-rear` - Front to rear
+          * `rear-to-front` - Rear to front
+          * `left-to-right` - Left to right
+          * `right-to-left` - Right to left
+          * `side-to-rear` - Side to rear
+          * `passive` - Passive
+          * `mixed` - Mixed
+      - in: query
+        name: console_ports
+        schema:
+          type: boolean
+        description: Has console ports
+      - in: query
+        name: console_server_ports
+        schema:
+          type: boolean
+        description: Has console server ports
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: default_platform
+        schema:
+          type: array
+          items:
+            type: string
+        description: Default platform (slug)
+        explode: true
+        style: form
+      - in: query
+        name: default_platform__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Default platform (slug)
+        explode: true
+        style: form
+      - in: query
+        name: default_platform_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Default platform (ID)
+        explode: true
+        style: form
+      - in: query
+        name: default_platform_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Default platform (ID)
+        explode: true
+        style: form
+      - in: query
+        name: device_bays
+        schema:
+          type: boolean
+        description: Has device bays
+      - in: query
+        name: has_front_image
+        schema:
+          type: boolean
+        description: Has a front image
+      - in: query
+        name: has_rear_image
+        schema:
+          type: boolean
+        description: Has a rear image
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interfaces
+        schema:
+          type: boolean
+        description: Has interfaces
+      - in: query
+        name: inventory_items
+        schema:
+          type: boolean
+        description: Has inventory items
+      - in: query
+        name: is_full_depth
+        schema:
+          type: boolean
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: manufacturer
+        schema:
+          type: array
+          items:
+            type: string
+        description: Manufacturer (slug)
+        explode: true
+        style: form
+      - in: query
+        name: manufacturer__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Manufacturer (slug)
+        explode: true
+        style: form
+      - in: query
+        name: manufacturer_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Manufacturer (ID)
+        explode: true
+        style: form
+      - in: query
+        name: manufacturer_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Manufacturer (ID)
+        explode: true
+        style: form
+      - in: query
+        name: model
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: model__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: model__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: model__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: model__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: model__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: model__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: model__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: model__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: model__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: model__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: module_bays
+        schema:
+          type: boolean
+        description: Has module bays
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: part_number
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_number__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_number__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_number__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_number__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_number__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_number__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_number__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_number__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_number__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_number__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: pass_through_ports
+        schema:
+          type: boolean
+        description: Has pass-through ports
+      - in: query
+        name: power_outlets
+        schema:
+          type: boolean
+        description: Has power outlets
+      - in: query
+        name: power_ports
+        schema:
+          type: boolean
+        description: Has power ports
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: slug
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: subdevice_role
+        schema:
+          type: string
+          title: Parent/child status
+        description: Parent devices house child devices in device bays. Leave blank
+          if this device type is neither a parent nor a child.
+      - in: query
+        name: subdevice_role__n
+        schema:
+          type: string
+          title: Parent/child status
+        description: Parent devices house child devices in device bays. Leave blank
+          if this device type is neither a parent nor a child.
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: u_height
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: u_height__gt
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: u_height__gte
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: u_height__lt
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: u_height__lte
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: u_height__n
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: weight
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: weight__gt
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: weight__gte
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: weight__lt
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: weight__lte
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: weight__n
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: weight_unit
+        schema:
+          type: string
+        description: |-
+          * `kg` - Kilograms
+          * `g` - Grams
+          * `lb` - Pounds
+          * `oz` - Ounces
+      - in: query
+        name: weight_unit__n
+        schema:
+          type: string
+        description: |-
+          * `kg` - Kilograms
+          * `g` - Grams
+          * `lb` - Pounds
+          * `oz` - Ounces
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedDeviceTypeList'
+          description: ''
+    post:
+      operationId: dcim_device_types_create
+      description: Post a list of device type objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableDeviceTypeRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableDeviceTypeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DeviceType'
+          description: ''
+    put:
+      operationId: dcim_device_types_bulk_update
+      description: Put a list of device type objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceTypeRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceTypeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/DeviceType'
+          description: ''
+    patch:
+      operationId: dcim_device_types_bulk_partial_update
+      description: Patch a list of device type objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceTypeRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceTypeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/DeviceType'
+          description: ''
+    delete:
+      operationId: dcim_device_types_bulk_destroy
+      description: Delete a list of device type objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceTypeRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceTypeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/device-types/{id}/:
+    get:
+      operationId: dcim_device_types_retrieve
+      description: Get a device type object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this device type.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DeviceType'
+          description: ''
+    put:
+      operationId: dcim_device_types_update
+      description: Put a device type object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this device type.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableDeviceTypeRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableDeviceTypeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DeviceType'
+          description: ''
+    patch:
+      operationId: dcim_device_types_partial_update
+      description: Patch a device type object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this device type.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableDeviceTypeRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableDeviceTypeRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DeviceType'
+          description: ''
+    delete:
+      operationId: dcim_device_types_destroy
+      description: Delete a device type object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this device type.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/devices/:
+    get:
+      operationId: dcim_devices_list
+      description: Get a list of device objects.
+      parameters:
+      - in: query
+        name: airflow
+        schema:
+          type: string
+        description: |-
+          * `front-to-rear` - Front to rear
+          * `rear-to-front` - Rear to front
+          * `left-to-right` - Left to right
+          * `right-to-left` - Right to left
+          * `side-to-rear` - Side to rear
+          * `passive` - Passive
+          * `mixed` - Mixed
+      - in: query
+        name: airflow__n
+        schema:
+          type: string
+        description: |-
+          * `front-to-rear` - Front to rear
+          * `rear-to-front` - Rear to front
+          * `left-to-right` - Left to right
+          * `right-to-left` - Right to left
+          * `side-to-rear` - Side to rear
+          * `passive` - Passive
+          * `mixed` - Mixed
+      - in: query
+        name: asset_tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: cluster_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: VM cluster (ID)
+        explode: true
+        style: form
+      - in: query
+        name: cluster_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: VM cluster (ID)
+        explode: true
+        style: form
+      - in: query
+        name: config_template_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Config template (ID)
+        explode: true
+        style: form
+      - in: query
+        name: config_template_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Config template (ID)
+        explode: true
+        style: form
+      - in: query
+        name: console_ports
+        schema:
+          type: boolean
+        description: Has console ports
+      - in: query
+        name: console_server_ports
+        schema:
+          type: boolean
+        description: Has console server ports
+      - in: query
+        name: contact
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact
+        explode: true
+        style: form
+      - in: query
+        name: contact__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact
+        explode: true
+        style: form
+      - in: query
+        name: contact_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group
+        explode: true
+        style: form
+      - in: query
+        name: contact_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group
+        explode: true
+        style: form
+      - in: query
+        name: contact_role
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact Role
+        explode: true
+        style: form
+      - in: query
+        name: contact_role__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact Role
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: device_bays
+        schema:
+          type: boolean
+        description: Has device bays
+      - in: query
+        name: device_type
+        schema:
+          type: array
+          items:
+            type: string
+        description: Device type (slug)
+        explode: true
+        style: form
+      - in: query
+        name: device_type__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Device type (slug)
+        explode: true
+        style: form
+      - in: query
+        name: device_type_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: device_type_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: face
+        schema:
+          type: string
+          title: Rack face
+        description: |-
+          * `front` - Front
+          * `rear` - Rear
+      - in: query
+        name: face__n
+        schema:
+          type: string
+          title: Rack face
+        description: |-
+          * `front` - Front
+          * `rear` - Rear
+      - in: query
+        name: has_primary_ip
+        schema:
+          type: boolean
+        description: Has a primary IP
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interfaces
+        schema:
+          type: boolean
+        description: Has interfaces
+      - in: query
+        name: is_full_depth
+        schema:
+          type: boolean
+        description: Is full depth
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: local_context_data
+        schema:
+          type: boolean
+        description: Has local config context data
+      - in: query
+        name: location_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - in: query
+        name: location_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - in: query
+        name: mac_address
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: manufacturer
+        schema:
+          type: array
+          items:
+            type: string
+        description: Manufacturer (slug)
+        explode: true
+        style: form
+      - in: query
+        name: manufacturer__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Manufacturer (slug)
+        explode: true
+        style: form
+      - in: query
+        name: manufacturer_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Manufacturer (ID)
+        explode: true
+        style: form
+      - in: query
+        name: manufacturer_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Manufacturer (ID)
+        explode: true
+        style: form
+      - in: query
+        name: model
+        schema:
+          type: array
+          items:
+            type: string
+        description: Device model (slug)
+        explode: true
+        style: form
+      - in: query
+        name: model__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Device model (slug)
+        explode: true
+        style: form
+      - in: query
+        name: module_bays
+        schema:
+          type: boolean
+        description: Has module bays
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: parent_device_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Parent Device (ID)
+        explode: true
+        style: form
+      - in: query
+        name: parent_device_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Parent Device (ID)
+        explode: true
+        style: form
+      - in: query
+        name: pass_through_ports
+        schema:
+          type: boolean
+        description: Has pass-through ports
+      - in: query
+        name: platform
+        schema:
+          type: array
+          items:
+            type: string
+        description: Platform (slug)
+        explode: true
+        style: form
+      - in: query
+        name: platform__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Platform (slug)
+        explode: true
+        style: form
+      - in: query
+        name: platform_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Platform (ID)
+        explode: true
+        style: form
+      - in: query
+        name: platform_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Platform (ID)
+        explode: true
+        style: form
+      - in: query
+        name: position
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: position__gt
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: position__gte
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: position__lt
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: position__lte
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: position__n
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: power_outlets
+        schema:
+          type: boolean
+        description: Has power outlets
+      - in: query
+        name: power_ports
+        schema:
+          type: boolean
+        description: Has power ports
+      - in: query
+        name: primary_ip4_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Primary IPv4 (ID)
+        explode: true
+        style: form
+      - in: query
+        name: primary_ip4_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Primary IPv4 (ID)
+        explode: true
+        style: form
+      - in: query
+        name: primary_ip6_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Primary IPv6 (ID)
+        explode: true
+        style: form
+      - in: query
+        name: primary_ip6_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Primary IPv6 (ID)
+        explode: true
+        style: form
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: rack_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Rack (ID)
+        explode: true
+        style: form
+      - in: query
+        name: rack_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Rack (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: role
+        schema:
+          type: array
+          items:
+            type: string
+        description: Role (slug)
+        explode: true
+        style: form
+      - in: query
+        name: role__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Role (slug)
+        explode: true
+        style: form
+      - in: query
+        name: role_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Role (ID)
+        explode: true
+        style: form
+      - in: query
+        name: role_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Role (ID)
+        explode: true
+        style: form
+      - in: query
+        name: serial
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: site
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site name (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site name (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: status
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `offline` - Offline
+          * `active` - Active
+          * `planned` - Planned
+          * `staged` - Staged
+          * `failed` - Failed
+          * `inventory` - Inventory
+          * `decommissioning` - Decommissioning
+        explode: true
+        style: form
+      - in: query
+        name: status__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `offline` - Offline
+          * `active` - Active
+          * `planned` - Planned
+          * `staged` - Staged
+          * `failed` - Failed
+          * `inventory` - Inventory
+          * `decommissioning` - Decommissioning
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tenant
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: vc_position
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: vc_position__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: vc_position__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: vc_position__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: vc_position__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: vc_position__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: vc_priority
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: vc_priority__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: vc_priority__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: vc_priority__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: vc_priority__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: vc_priority__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Virtual chassis (ID)
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Virtual chassis (ID)
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis_member
+        schema:
+          type: boolean
+        description: Is a virtual chassis member
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedDeviceWithConfigContextList'
+          description: ''
+    post:
+      operationId: dcim_devices_create
+      description: Post a list of device objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableDeviceWithConfigContextRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableDeviceWithConfigContextRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DeviceWithConfigContext'
+          description: ''
+    put:
+      operationId: dcim_devices_bulk_update
+      description: Put a list of device objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceWithConfigContextRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceWithConfigContextRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/DeviceWithConfigContext'
+          description: ''
+    patch:
+      operationId: dcim_devices_bulk_partial_update
+      description: Patch a list of device objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceWithConfigContextRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceWithConfigContextRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/DeviceWithConfigContext'
+          description: ''
+    delete:
+      operationId: dcim_devices_bulk_destroy
+      description: Delete a list of device objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceWithConfigContextRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/DeviceWithConfigContextRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/devices/{id}/:
+    get:
+      operationId: dcim_devices_retrieve
+      description: Get a device object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this device.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DeviceWithConfigContext'
+          description: ''
+    put:
+      operationId: dcim_devices_update
+      description: Put a device object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this device.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableDeviceWithConfigContextRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableDeviceWithConfigContextRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DeviceWithConfigContext'
+          description: ''
+    patch:
+      operationId: dcim_devices_partial_update
+      description: Patch a device object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this device.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableDeviceWithConfigContextRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableDeviceWithConfigContextRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DeviceWithConfigContext'
+          description: ''
+    delete:
+      operationId: dcim_devices_destroy
+      description: Delete a device object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this device.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/devices/{id}/render-config/:
+    post:
+      operationId: dcim_devices_render_config_create
+      description: Resolve and render the preferred ConfigTemplate for this Device.
+      parameters:
+      - in: query
+        name: format
+        schema:
+          type: string
+          enum:
+          - json
+          - txt
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this device.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableDeviceWithConfigContextRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableDeviceWithConfigContextRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DeviceWithConfigContext'
+            text/plain:
+              schema:
+                $ref: '#/components/schemas/DeviceWithConfigContext'
+          description: ''
+  /api/dcim/front-port-templates/:
+    get:
+      operationId: dcim_front_port_templates_list
+      description: Get a list of front port template objects.
+      parameters:
+      - in: query
+        name: color
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: devicetype_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Device type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: devicetype_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Device type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: moduletype_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Module type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: moduletype_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Module type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: type
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `8p8c` - 8P8C
+          * `8p6c` - 8P6C
+          * `8p4c` - 8P4C
+          * `8p2c` - 8P2C
+          * `6p6c` - 6P6C
+          * `6p4c` - 6P4C
+          * `6p2c` - 6P2C
+          * `4p4c` - 4P4C
+          * `4p2c` - 4P2C
+          * `gg45` - GG45
+          * `tera-4p` - TERA 4P
+          * `tera-2p` - TERA 2P
+          * `tera-1p` - TERA 1P
+          * `110-punch` - 110 Punch
+          * `bnc` - BNC
+          * `f` - F Connector
+          * `n` - N Connector
+          * `mrj21` - MRJ21
+          * `fc` - FC
+          * `lc` - LC
+          * `lc-pc` - LC/PC
+          * `lc-upc` - LC/UPC
+          * `lc-apc` - LC/APC
+          * `lsh` - LSH
+          * `lsh-pc` - LSH/PC
+          * `lsh-upc` - LSH/UPC
+          * `lsh-apc` - LSH/APC
+          * `mpo` - MPO
+          * `mtrj` - MTRJ
+          * `sc` - SC
+          * `sc-pc` - SC/PC
+          * `sc-upc` - SC/UPC
+          * `sc-apc` - SC/APC
+          * `st` - ST
+          * `cs` - CS
+          * `sn` - SN
+          * `sma-905` - SMA 905
+          * `sma-906` - SMA 906
+          * `urm-p2` - URM-P2
+          * `urm-p4` - URM-P4
+          * `urm-p8` - URM-P8
+          * `splice` - Splice
+          * `other` - Other
+        explode: true
+        style: form
+      - in: query
+        name: type__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `8p8c` - 8P8C
+          * `8p6c` - 8P6C
+          * `8p4c` - 8P4C
+          * `8p2c` - 8P2C
+          * `6p6c` - 6P6C
+          * `6p4c` - 6P4C
+          * `6p2c` - 6P2C
+          * `4p4c` - 4P4C
+          * `4p2c` - 4P2C
+          * `gg45` - GG45
+          * `tera-4p` - TERA 4P
+          * `tera-2p` - TERA 2P
+          * `tera-1p` - TERA 1P
+          * `110-punch` - 110 Punch
+          * `bnc` - BNC
+          * `f` - F Connector
+          * `n` - N Connector
+          * `mrj21` - MRJ21
+          * `fc` - FC
+          * `lc` - LC
+          * `lc-pc` - LC/PC
+          * `lc-upc` - LC/UPC
+          * `lc-apc` - LC/APC
+          * `lsh` - LSH
+          * `lsh-pc` - LSH/PC
+          * `lsh-upc` - LSH/UPC
+          * `lsh-apc` - LSH/APC
+          * `mpo` - MPO
+          * `mtrj` - MTRJ
+          * `sc` - SC
+          * `sc-pc` - SC/PC
+          * `sc-upc` - SC/UPC
+          * `sc-apc` - SC/APC
+          * `st` - ST
+          * `cs` - CS
+          * `sn` - SN
+          * `sma-905` - SMA 905
+          * `sma-906` - SMA 906
+          * `urm-p2` - URM-P2
+          * `urm-p4` - URM-P4
+          * `urm-p8` - URM-P8
+          * `splice` - Splice
+          * `other` - Other
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedFrontPortTemplateList'
+          description: ''
+    post:
+      operationId: dcim_front_port_templates_create
+      description: Post a list of front port template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableFrontPortTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableFrontPortTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/FrontPortTemplate'
+          description: ''
+    put:
+      operationId: dcim_front_port_templates_bulk_update
+      description: Put a list of front port template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/FrontPortTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/FrontPortTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/FrontPortTemplate'
+          description: ''
+    patch:
+      operationId: dcim_front_port_templates_bulk_partial_update
+      description: Patch a list of front port template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/FrontPortTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/FrontPortTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/FrontPortTemplate'
+          description: ''
+    delete:
+      operationId: dcim_front_port_templates_bulk_destroy
+      description: Delete a list of front port template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/FrontPortTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/FrontPortTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/front-port-templates/{id}/:
+    get:
+      operationId: dcim_front_port_templates_retrieve
+      description: Get a front port template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this front port template.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/FrontPortTemplate'
+          description: ''
+    put:
+      operationId: dcim_front_port_templates_update
+      description: Put a front port template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this front port template.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableFrontPortTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableFrontPortTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/FrontPortTemplate'
+          description: ''
+    patch:
+      operationId: dcim_front_port_templates_partial_update
+      description: Patch a front port template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this front port template.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableFrontPortTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableFrontPortTemplateRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/FrontPortTemplate'
+          description: ''
+    delete:
+      operationId: dcim_front_port_templates_destroy
+      description: Delete a front port template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this front port template.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/front-ports/:
+    get:
+      operationId: dcim_front_ports_list
+      description: Get a list of front port objects.
+      parameters:
+      - in: query
+        name: cable_end
+        schema:
+          type: string
+        description: |-
+          * `A` - A
+          * `B` - B
+      - in: query
+        name: cable_end__n
+        schema:
+          type: string
+        description: |-
+          * `A` - A
+          * `B` - B
+      - in: query
+        name: cabled
+        schema:
+          type: boolean
+      - in: query
+        name: color
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: device
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+        description: Device (name)
+        explode: true
+        style: form
+      - in: query
+        name: device__n
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+        description: Device (name)
+        explode: true
+        style: form
+      - in: query
+        name: device_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device (ID)
+        explode: true
+        style: form
+      - in: query
+        name: device_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device (ID)
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: label
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: location
+        schema:
+          type: array
+          items:
+            type: string
+        description: Location (slug)
+        explode: true
+        style: form
+      - in: query
+        name: location__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Location (slug)
+        explode: true
+        style: form
+      - in: query
+        name: location_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - in: query
+        name: location_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - in: query
+        name: module_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Module (ID)
+        explode: true
+        style: form
+      - in: query
+        name: module_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Module (ID)
+        explode: true
+        style: form
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: occupied
+        schema:
+          type: boolean
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: rack
+        schema:
+          type: array
+          items:
+            type: string
+        description: Rack (name)
+        explode: true
+        style: form
+      - in: query
+        name: rack__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Rack (name)
+        explode: true
+        style: form
+      - in: query
+        name: rack_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Rack (ID)
+        explode: true
+        style: form
+      - in: query
+        name: rack_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Rack (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site name (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site name (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: type
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `8p8c` - 8P8C
+          * `8p6c` - 8P6C
+          * `8p4c` - 8P4C
+          * `8p2c` - 8P2C
+          * `6p6c` - 6P6C
+          * `6p4c` - 6P4C
+          * `6p2c` - 6P2C
+          * `4p4c` - 4P4C
+          * `4p2c` - 4P2C
+          * `gg45` - GG45
+          * `tera-4p` - TERA 4P
+          * `tera-2p` - TERA 2P
+          * `tera-1p` - TERA 1P
+          * `110-punch` - 110 Punch
+          * `bnc` - BNC
+          * `f` - F Connector
+          * `n` - N Connector
+          * `mrj21` - MRJ21
+          * `fc` - FC
+          * `lc` - LC
+          * `lc-pc` - LC/PC
+          * `lc-upc` - LC/UPC
+          * `lc-apc` - LC/APC
+          * `lsh` - LSH
+          * `lsh-pc` - LSH/PC
+          * `lsh-upc` - LSH/UPC
+          * `lsh-apc` - LSH/APC
+          * `mpo` - MPO
+          * `mtrj` - MTRJ
+          * `sc` - SC
+          * `sc-pc` - SC/PC
+          * `sc-upc` - SC/UPC
+          * `sc-apc` - SC/APC
+          * `st` - ST
+          * `cs` - CS
+          * `sn` - SN
+          * `sma-905` - SMA 905
+          * `sma-906` - SMA 906
+          * `urm-p2` - URM-P2
+          * `urm-p4` - URM-P4
+          * `urm-p8` - URM-P8
+          * `splice` - Splice
+          * `other` - Other
+        explode: true
+        style: form
+      - in: query
+        name: type__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `8p8c` - 8P8C
+          * `8p6c` - 8P6C
+          * `8p4c` - 8P4C
+          * `8p2c` - 8P2C
+          * `6p6c` - 6P6C
+          * `6p4c` - 6P4C
+          * `6p2c` - 6P2C
+          * `4p4c` - 4P4C
+          * `4p2c` - 4P2C
+          * `gg45` - GG45
+          * `tera-4p` - TERA 4P
+          * `tera-2p` - TERA 2P
+          * `tera-1p` - TERA 1P
+          * `110-punch` - 110 Punch
+          * `bnc` - BNC
+          * `f` - F Connector
+          * `n` - N Connector
+          * `mrj21` - MRJ21
+          * `fc` - FC
+          * `lc` - LC
+          * `lc-pc` - LC/PC
+          * `lc-upc` - LC/UPC
+          * `lc-apc` - LC/APC
+          * `lsh` - LSH
+          * `lsh-pc` - LSH/PC
+          * `lsh-upc` - LSH/UPC
+          * `lsh-apc` - LSH/APC
+          * `mpo` - MPO
+          * `mtrj` - MTRJ
+          * `sc` - SC
+          * `sc-pc` - SC/PC
+          * `sc-upc` - SC/UPC
+          * `sc-apc` - SC/APC
+          * `st` - ST
+          * `cs` - CS
+          * `sn` - SN
+          * `sma-905` - SMA 905
+          * `sma-906` - SMA 906
+          * `urm-p2` - URM-P2
+          * `urm-p4` - URM-P4
+          * `urm-p8` - URM-P8
+          * `splice` - Splice
+          * `other` - Other
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: virtual_chassis
+        schema:
+          type: array
+          items:
+            type: string
+        description: Virtual Chassis
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Virtual Chassis
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Virtual Chassis (ID)
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Virtual Chassis (ID)
+        explode: true
+        style: form
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedFrontPortList'
+          description: ''
+    post:
+      operationId: dcim_front_ports_create
+      description: Post a list of front port objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableFrontPortRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableFrontPortRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/FrontPort'
+          description: ''
+    put:
+      operationId: dcim_front_ports_bulk_update
+      description: Put a list of front port objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/FrontPortRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/FrontPortRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/FrontPort'
+          description: ''
+    patch:
+      operationId: dcim_front_ports_bulk_partial_update
+      description: Patch a list of front port objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/FrontPortRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/FrontPortRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/FrontPort'
+          description: ''
+    delete:
+      operationId: dcim_front_ports_bulk_destroy
+      description: Delete a list of front port objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/FrontPortRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/FrontPortRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/front-ports/{id}/:
+    get:
+      operationId: dcim_front_ports_retrieve
+      description: Get a front port object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this front port.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/FrontPort'
+          description: ''
+    put:
+      operationId: dcim_front_ports_update
+      description: Put a front port object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this front port.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableFrontPortRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableFrontPortRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/FrontPort'
+          description: ''
+    patch:
+      operationId: dcim_front_ports_partial_update
+      description: Patch a front port object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this front port.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableFrontPortRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableFrontPortRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/FrontPort'
+          description: ''
+    delete:
+      operationId: dcim_front_ports_destroy
+      description: Delete a front port object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this front port.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/front-ports/{id}/paths/:
+    get:
+      operationId: dcim_front_ports_paths_retrieve
+      description: Return all CablePaths which traverse a given pass-through port.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this front port.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/FrontPort'
+          description: ''
+  /api/dcim/interface-templates/:
+    get:
+      operationId: dcim_interface_templates_list
+      description: Get a list of interface template objects.
+      parameters:
+      - in: query
+        name: bridge_id
+        schema:
+          type: array
+          items:
+            type: integer
+        explode: true
+        style: form
+      - in: query
+        name: bridge_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: devicetype_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Device type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: devicetype_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Device type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: enabled
+        schema:
+          type: boolean
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: mgmt_only
+        schema:
+          type: boolean
+      - in: query
+        name: moduletype_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Module type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: moduletype_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Module type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: poe_mode
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `pd` - PD
+          * `pse` - PSE
+        explode: true
+        style: form
+      - in: query
+        name: poe_mode__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `pd` - PD
+          * `pse` - PSE
+        explode: true
+        style: form
+      - in: query
+        name: poe_type
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `type1-ieee802.3af` - 802.3af (Type 1)
+          * `type2-ieee802.3at` - 802.3at (Type 2)
+          * `type3-ieee802.3bt` - 802.3bt (Type 3)
+          * `type4-ieee802.3bt` - 802.3bt (Type 4)
+          * `passive-24v-2pair` - Passive 24V (2-pair)
+          * `passive-24v-4pair` - Passive 24V (4-pair)
+          * `passive-48v-2pair` - Passive 48V (2-pair)
+          * `passive-48v-4pair` - Passive 48V (4-pair)
+        explode: true
+        style: form
+      - in: query
+        name: poe_type__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `type1-ieee802.3af` - 802.3af (Type 1)
+          * `type2-ieee802.3at` - 802.3at (Type 2)
+          * `type3-ieee802.3bt` - 802.3bt (Type 3)
+          * `type4-ieee802.3bt` - 802.3bt (Type 4)
+          * `passive-24v-2pair` - Passive 24V (2-pair)
+          * `passive-24v-4pair` - Passive 24V (4-pair)
+          * `passive-48v-2pair` - Passive 48V (2-pair)
+          * `passive-48v-4pair` - Passive 48V (4-pair)
+        explode: true
+        style: form
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: type
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `virtual` - Virtual
+          * `bridge` - Bridge
+          * `lag` - Link Aggregation Group (LAG)
+          * `100base-fx` - 100BASE-FX (10/100ME FIBER)
+          * `100base-lfx` - 100BASE-LFX (10/100ME FIBER)
+          * `100base-tx` - 100BASE-TX (10/100ME)
+          * `100base-t1` - 100BASE-T1 (10/100ME Single Pair)
+          * `1000base-t` - 1000BASE-T (1GE)
+          * `2.5gbase-t` - 2.5GBASE-T (2.5GE)
+          * `5gbase-t` - 5GBASE-T (5GE)
+          * `10gbase-t` - 10GBASE-T (10GE)
+          * `10gbase-cx4` - 10GBASE-CX4 (10GE)
+          * `1000base-x-gbic` - GBIC (1GE)
+          * `1000base-x-sfp` - SFP (1GE)
+          * `10gbase-x-sfpp` - SFP+ (10GE)
+          * `10gbase-x-xfp` - XFP (10GE)
+          * `10gbase-x-xenpak` - XENPAK (10GE)
+          * `10gbase-x-x2` - X2 (10GE)
+          * `25gbase-x-sfp28` - SFP28 (25GE)
+          * `50gbase-x-sfp56` - SFP56 (50GE)
+          * `40gbase-x-qsfpp` - QSFP+ (40GE)
+          * `50gbase-x-sfp28` - QSFP28 (50GE)
+          * `100gbase-x-cfp` - CFP (100GE)
+          * `100gbase-x-cfp2` - CFP2 (100GE)
+          * `200gbase-x-cfp2` - CFP2 (200GE)
+          * `100gbase-x-cfp4` - CFP4 (100GE)
+          * `100gbase-x-cpak` - Cisco CPAK (100GE)
+          * `100gbase-x-qsfp28` - QSFP28 (100GE)
+          * `200gbase-x-qsfp56` - QSFP56 (200GE)
+          * `400gbase-x-qsfpdd` - QSFP-DD (400GE)
+          * `400gbase-x-osfp` - OSFP (400GE)
+          * `800gbase-x-qsfpdd` - QSFP-DD (800GE)
+          * `800gbase-x-osfp` - OSFP (800GE)
+          * `1000base-kx` - 1000BASE-KX (1GE)
+          * `10gbase-kr` - 10GBASE-KR (10GE)
+          * `10gbase-kx4` - 10GBASE-KX4 (10GE)
+          * `25gbase-kr` - 25GBASE-KR (25GE)
+          * `40gbase-kr4` - 40GBASE-KR4 (40GE)
+          * `50gbase-kr` - 50GBASE-KR (50GE)
+          * `100gbase-kp4` - 100GBASE-KP4 (100GE)
+          * `100gbase-kr2` - 100GBASE-KR2 (100GE)
+          * `100gbase-kr4` - 100GBASE-KR4 (100GE)
+          * `ieee802.11a` - IEEE 802.11a
+          * `ieee802.11g` - IEEE 802.11b/g
+          * `ieee802.11n` - IEEE 802.11n
+          * `ieee802.11ac` - IEEE 802.11ac
+          * `ieee802.11ad` - IEEE 802.11ad
+          * `ieee802.11ax` - IEEE 802.11ax
+          * `ieee802.11ay` - IEEE 802.11ay
+          * `ieee802.15.1` - IEEE 802.15.1 (Bluetooth)
+          * `other-wireless` - Other (Wireless)
+          * `gsm` - GSM
+          * `cdma` - CDMA
+          * `lte` - LTE
+          * `sonet-oc3` - OC-3/STM-1
+          * `sonet-oc12` - OC-12/STM-4
+          * `sonet-oc48` - OC-48/STM-16
+          * `sonet-oc192` - OC-192/STM-64
+          * `sonet-oc768` - OC-768/STM-256
+          * `sonet-oc1920` - OC-1920/STM-640
+          * `sonet-oc3840` - OC-3840/STM-1234
+          * `1gfc-sfp` - SFP (1GFC)
+          * `2gfc-sfp` - SFP (2GFC)
+          * `4gfc-sfp` - SFP (4GFC)
+          * `8gfc-sfpp` - SFP+ (8GFC)
+          * `16gfc-sfpp` - SFP+ (16GFC)
+          * `32gfc-sfp28` - SFP28 (32GFC)
+          * `64gfc-qsfpp` - QSFP+ (64GFC)
+          * `128gfc-qsfp28` - QSFP28 (128GFC)
+          * `infiniband-sdr` - SDR (2 Gbps)
+          * `infiniband-ddr` - DDR (4 Gbps)
+          * `infiniband-qdr` - QDR (8 Gbps)
+          * `infiniband-fdr10` - FDR10 (10 Gbps)
+          * `infiniband-fdr` - FDR (13.5 Gbps)
+          * `infiniband-edr` - EDR (25 Gbps)
+          * `infiniband-hdr` - HDR (50 Gbps)
+          * `infiniband-ndr` - NDR (100 Gbps)
+          * `infiniband-xdr` - XDR (250 Gbps)
+          * `t1` - T1 (1.544 Mbps)
+          * `e1` - E1 (2.048 Mbps)
+          * `t3` - T3 (45 Mbps)
+          * `e3` - E3 (34 Mbps)
+          * `xdsl` - xDSL
+          * `docsis` - DOCSIS
+          * `gpon` - GPON (2.5 Gbps / 1.25 Gps)
+          * `xg-pon` - XG-PON (10 Gbps / 2.5 Gbps)
+          * `xgs-pon` - XGS-PON (10 Gbps)
+          * `ng-pon2` - NG-PON2 (TWDM-PON) (4x10 Gbps)
+          * `epon` - EPON (1 Gbps)
+          * `10g-epon` - 10G-EPON (10 Gbps)
+          * `cisco-stackwise` - Cisco StackWise
+          * `cisco-stackwise-plus` - Cisco StackWise Plus
+          * `cisco-flexstack` - Cisco FlexStack
+          * `cisco-flexstack-plus` - Cisco FlexStack Plus
+          * `cisco-stackwise-80` - Cisco StackWise-80
+          * `cisco-stackwise-160` - Cisco StackWise-160
+          * `cisco-stackwise-320` - Cisco StackWise-320
+          * `cisco-stackwise-480` - Cisco StackWise-480
+          * `cisco-stackwise-1t` - Cisco StackWise-1T
+          * `juniper-vcp` - Juniper VCP
+          * `extreme-summitstack` - Extreme SummitStack
+          * `extreme-summitstack-128` - Extreme SummitStack-128
+          * `extreme-summitstack-256` - Extreme SummitStack-256
+          * `extreme-summitstack-512` - Extreme SummitStack-512
+          * `other` - Other
+        explode: true
+        style: form
+      - in: query
+        name: type__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `virtual` - Virtual
+          * `bridge` - Bridge
+          * `lag` - Link Aggregation Group (LAG)
+          * `100base-fx` - 100BASE-FX (10/100ME FIBER)
+          * `100base-lfx` - 100BASE-LFX (10/100ME FIBER)
+          * `100base-tx` - 100BASE-TX (10/100ME)
+          * `100base-t1` - 100BASE-T1 (10/100ME Single Pair)
+          * `1000base-t` - 1000BASE-T (1GE)
+          * `2.5gbase-t` - 2.5GBASE-T (2.5GE)
+          * `5gbase-t` - 5GBASE-T (5GE)
+          * `10gbase-t` - 10GBASE-T (10GE)
+          * `10gbase-cx4` - 10GBASE-CX4 (10GE)
+          * `1000base-x-gbic` - GBIC (1GE)
+          * `1000base-x-sfp` - SFP (1GE)
+          * `10gbase-x-sfpp` - SFP+ (10GE)
+          * `10gbase-x-xfp` - XFP (10GE)
+          * `10gbase-x-xenpak` - XENPAK (10GE)
+          * `10gbase-x-x2` - X2 (10GE)
+          * `25gbase-x-sfp28` - SFP28 (25GE)
+          * `50gbase-x-sfp56` - SFP56 (50GE)
+          * `40gbase-x-qsfpp` - QSFP+ (40GE)
+          * `50gbase-x-sfp28` - QSFP28 (50GE)
+          * `100gbase-x-cfp` - CFP (100GE)
+          * `100gbase-x-cfp2` - CFP2 (100GE)
+          * `200gbase-x-cfp2` - CFP2 (200GE)
+          * `100gbase-x-cfp4` - CFP4 (100GE)
+          * `100gbase-x-cpak` - Cisco CPAK (100GE)
+          * `100gbase-x-qsfp28` - QSFP28 (100GE)
+          * `200gbase-x-qsfp56` - QSFP56 (200GE)
+          * `400gbase-x-qsfpdd` - QSFP-DD (400GE)
+          * `400gbase-x-osfp` - OSFP (400GE)
+          * `800gbase-x-qsfpdd` - QSFP-DD (800GE)
+          * `800gbase-x-osfp` - OSFP (800GE)
+          * `1000base-kx` - 1000BASE-KX (1GE)
+          * `10gbase-kr` - 10GBASE-KR (10GE)
+          * `10gbase-kx4` - 10GBASE-KX4 (10GE)
+          * `25gbase-kr` - 25GBASE-KR (25GE)
+          * `40gbase-kr4` - 40GBASE-KR4 (40GE)
+          * `50gbase-kr` - 50GBASE-KR (50GE)
+          * `100gbase-kp4` - 100GBASE-KP4 (100GE)
+          * `100gbase-kr2` - 100GBASE-KR2 (100GE)
+          * `100gbase-kr4` - 100GBASE-KR4 (100GE)
+          * `ieee802.11a` - IEEE 802.11a
+          * `ieee802.11g` - IEEE 802.11b/g
+          * `ieee802.11n` - IEEE 802.11n
+          * `ieee802.11ac` - IEEE 802.11ac
+          * `ieee802.11ad` - IEEE 802.11ad
+          * `ieee802.11ax` - IEEE 802.11ax
+          * `ieee802.11ay` - IEEE 802.11ay
+          * `ieee802.15.1` - IEEE 802.15.1 (Bluetooth)
+          * `other-wireless` - Other (Wireless)
+          * `gsm` - GSM
+          * `cdma` - CDMA
+          * `lte` - LTE
+          * `sonet-oc3` - OC-3/STM-1
+          * `sonet-oc12` - OC-12/STM-4
+          * `sonet-oc48` - OC-48/STM-16
+          * `sonet-oc192` - OC-192/STM-64
+          * `sonet-oc768` - OC-768/STM-256
+          * `sonet-oc1920` - OC-1920/STM-640
+          * `sonet-oc3840` - OC-3840/STM-1234
+          * `1gfc-sfp` - SFP (1GFC)
+          * `2gfc-sfp` - SFP (2GFC)
+          * `4gfc-sfp` - SFP (4GFC)
+          * `8gfc-sfpp` - SFP+ (8GFC)
+          * `16gfc-sfpp` - SFP+ (16GFC)
+          * `32gfc-sfp28` - SFP28 (32GFC)
+          * `64gfc-qsfpp` - QSFP+ (64GFC)
+          * `128gfc-qsfp28` - QSFP28 (128GFC)
+          * `infiniband-sdr` - SDR (2 Gbps)
+          * `infiniband-ddr` - DDR (4 Gbps)
+          * `infiniband-qdr` - QDR (8 Gbps)
+          * `infiniband-fdr10` - FDR10 (10 Gbps)
+          * `infiniband-fdr` - FDR (13.5 Gbps)
+          * `infiniband-edr` - EDR (25 Gbps)
+          * `infiniband-hdr` - HDR (50 Gbps)
+          * `infiniband-ndr` - NDR (100 Gbps)
+          * `infiniband-xdr` - XDR (250 Gbps)
+          * `t1` - T1 (1.544 Mbps)
+          * `e1` - E1 (2.048 Mbps)
+          * `t3` - T3 (45 Mbps)
+          * `e3` - E3 (34 Mbps)
+          * `xdsl` - xDSL
+          * `docsis` - DOCSIS
+          * `gpon` - GPON (2.5 Gbps / 1.25 Gps)
+          * `xg-pon` - XG-PON (10 Gbps / 2.5 Gbps)
+          * `xgs-pon` - XGS-PON (10 Gbps)
+          * `ng-pon2` - NG-PON2 (TWDM-PON) (4x10 Gbps)
+          * `epon` - EPON (1 Gbps)
+          * `10g-epon` - 10G-EPON (10 Gbps)
+          * `cisco-stackwise` - Cisco StackWise
+          * `cisco-stackwise-plus` - Cisco StackWise Plus
+          * `cisco-flexstack` - Cisco FlexStack
+          * `cisco-flexstack-plus` - Cisco FlexStack Plus
+          * `cisco-stackwise-80` - Cisco StackWise-80
+          * `cisco-stackwise-160` - Cisco StackWise-160
+          * `cisco-stackwise-320` - Cisco StackWise-320
+          * `cisco-stackwise-480` - Cisco StackWise-480
+          * `cisco-stackwise-1t` - Cisco StackWise-1T
+          * `juniper-vcp` - Juniper VCP
+          * `extreme-summitstack` - Extreme SummitStack
+          * `extreme-summitstack-128` - Extreme SummitStack-128
+          * `extreme-summitstack-256` - Extreme SummitStack-256
+          * `extreme-summitstack-512` - Extreme SummitStack-512
+          * `other` - Other
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedInterfaceTemplateList'
+          description: ''
+    post:
+      operationId: dcim_interface_templates_create
+      description: Post a list of interface template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableInterfaceTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableInterfaceTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/InterfaceTemplate'
+          description: ''
+    put:
+      operationId: dcim_interface_templates_bulk_update
+      description: Put a list of interface template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InterfaceTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InterfaceTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/InterfaceTemplate'
+          description: ''
+    patch:
+      operationId: dcim_interface_templates_bulk_partial_update
+      description: Patch a list of interface template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InterfaceTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InterfaceTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/InterfaceTemplate'
+          description: ''
+    delete:
+      operationId: dcim_interface_templates_bulk_destroy
+      description: Delete a list of interface template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InterfaceTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InterfaceTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/interface-templates/{id}/:
+    get:
+      operationId: dcim_interface_templates_retrieve
+      description: Get a interface template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this interface template.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/InterfaceTemplate'
+          description: ''
+    put:
+      operationId: dcim_interface_templates_update
+      description: Put a interface template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this interface template.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableInterfaceTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableInterfaceTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/InterfaceTemplate'
+          description: ''
+    patch:
+      operationId: dcim_interface_templates_partial_update
+      description: Patch a interface template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this interface template.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableInterfaceTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableInterfaceTemplateRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/InterfaceTemplate'
+          description: ''
+    delete:
+      operationId: dcim_interface_templates_destroy
+      description: Delete a interface template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this interface template.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/interfaces/:
+    get:
+      operationId: dcim_interfaces_list
+      description: Get a list of interface objects.
+      parameters:
+      - in: query
+        name: bridge_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Bridged interface (ID)
+        explode: true
+        style: form
+      - in: query
+        name: bridge_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Bridged interface (ID)
+        explode: true
+        style: form
+      - in: query
+        name: cable_end
+        schema:
+          type: string
+        description: |-
+          * `A` - A
+          * `B` - B
+      - in: query
+        name: cable_end__n
+        schema:
+          type: string
+        description: |-
+          * `A` - A
+          * `B` - B
+      - in: query
+        name: cabled
+        schema:
+          type: boolean
+      - in: query
+        name: connected
+        schema:
+          type: boolean
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: device
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: device_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: duplex
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+        description: |-
+          * `half` - Half
+          * `full` - Full
+          * `auto` - Auto
+        explode: true
+        style: form
+      - in: query
+        name: duplex__n
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+        description: |-
+          * `half` - Half
+          * `full` - Full
+          * `auto` - Auto
+        explode: true
+        style: form
+      - in: query
+        name: enabled
+        schema:
+          type: boolean
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: kind
+        schema:
+          type: string
+        description: Kind of interface
+      - in: query
+        name: l2vpn
+        schema:
+          type: array
+          items:
+            type: integer
+            maximum: 9223372036854775807
+            minimum: -9223372036854775808
+            format: int64
+            nullable: true
+        description: L2VPN
+        explode: true
+        style: form
+      - in: query
+        name: l2vpn__n
+        schema:
+          type: array
+          items:
+            type: integer
+            maximum: 9223372036854775807
+            minimum: -9223372036854775808
+            format: int64
+            nullable: true
+        description: L2VPN
+        explode: true
+        style: form
+      - in: query
+        name: l2vpn_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: L2VPN (ID)
+        explode: true
+        style: form
+      - in: query
+        name: l2vpn_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: L2VPN (ID)
+        explode: true
+        style: form
+      - in: query
+        name: label
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: lag_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: LAG interface (ID)
+        explode: true
+        style: form
+      - in: query
+        name: lag_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: LAG interface (ID)
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: location
+        schema:
+          type: array
+          items:
+            type: string
+        description: Location (slug)
+        explode: true
+        style: form
+      - in: query
+        name: location__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Location (slug)
+        explode: true
+        style: form
+      - in: query
+        name: location_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - in: query
+        name: location_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - in: query
+        name: mac_address
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mgmt_only
+        schema:
+          type: boolean
+      - in: query
+        name: mode
+        schema:
+          type: string
+        description: IEEE 802.1Q tagging strategy
+      - in: query
+        name: mode__n
+        schema:
+          type: string
+        description: IEEE 802.1Q tagging strategy
+      - in: query
+        name: module_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Module (ID)
+        explode: true
+        style: form
+      - in: query
+        name: module_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Module (ID)
+        explode: true
+        style: form
+      - in: query
+        name: mtu
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: mtu__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: mtu__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: mtu__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: mtu__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: mtu__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: occupied
+        schema:
+          type: boolean
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: parent_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Parent interface (ID)
+        explode: true
+        style: form
+      - in: query
+        name: parent_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Parent interface (ID)
+        explode: true
+        style: form
+      - in: query
+        name: poe_mode
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `pd` - PD
+          * `pse` - PSE
+        explode: true
+        style: form
+      - in: query
+        name: poe_mode__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `pd` - PD
+          * `pse` - PSE
+        explode: true
+        style: form
+      - in: query
+        name: poe_type
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `type1-ieee802.3af` - 802.3af (Type 1)
+          * `type2-ieee802.3at` - 802.3at (Type 2)
+          * `type3-ieee802.3bt` - 802.3bt (Type 3)
+          * `type4-ieee802.3bt` - 802.3bt (Type 4)
+          * `passive-24v-2pair` - Passive 24V (2-pair)
+          * `passive-24v-4pair` - Passive 24V (4-pair)
+          * `passive-48v-2pair` - Passive 48V (2-pair)
+          * `passive-48v-4pair` - Passive 48V (4-pair)
+        explode: true
+        style: form
+      - in: query
+        name: poe_type__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `type1-ieee802.3af` - 802.3af (Type 1)
+          * `type2-ieee802.3at` - 802.3at (Type 2)
+          * `type3-ieee802.3bt` - 802.3bt (Type 3)
+          * `type4-ieee802.3bt` - 802.3bt (Type 4)
+          * `passive-24v-2pair` - Passive 24V (2-pair)
+          * `passive-24v-4pair` - Passive 24V (4-pair)
+          * `passive-48v-2pair` - Passive 48V (2-pair)
+          * `passive-48v-4pair` - Passive 48V (4-pair)
+        explode: true
+        style: form
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: rack
+        schema:
+          type: array
+          items:
+            type: string
+        description: Rack (name)
+        explode: true
+        style: form
+      - in: query
+        name: rack__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Rack (name)
+        explode: true
+        style: form
+      - in: query
+        name: rack_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Rack (ID)
+        explode: true
+        style: form
+      - in: query
+        name: rack_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Rack (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: rf_channel
+        schema:
+          type: array
+          items:
+            type: string
+            title: Wireless channel
+        description: |-
+          * `2.4g-1-2412-22` - 1 (2412 MHz)
+          * `2.4g-2-2417-22` - 2 (2417 MHz)
+          * `2.4g-3-2422-22` - 3 (2422 MHz)
+          * `2.4g-4-2427-22` - 4 (2427 MHz)
+          * `2.4g-5-2432-22` - 5 (2432 MHz)
+          * `2.4g-6-2437-22` - 6 (2437 MHz)
+          * `2.4g-7-2442-22` - 7 (2442 MHz)
+          * `2.4g-8-2447-22` - 8 (2447 MHz)
+          * `2.4g-9-2452-22` - 9 (2452 MHz)
+          * `2.4g-10-2457-22` - 10 (2457 MHz)
+          * `2.4g-11-2462-22` - 11 (2462 MHz)
+          * `2.4g-12-2467-22` - 12 (2467 MHz)
+          * `2.4g-13-2472-22` - 13 (2472 MHz)
+          * `5g-32-5160-20` - 32 (5160/20 MHz)
+          * `5g-34-5170-40` - 34 (5170/40 MHz)
+          * `5g-36-5180-20` - 36 (5180/20 MHz)
+          * `5g-38-5190-40` - 38 (5190/40 MHz)
+          * `5g-40-5200-20` - 40 (5200/20 MHz)
+          * `5g-42-5210-80` - 42 (5210/80 MHz)
+          * `5g-44-5220-20` - 44 (5220/20 MHz)
+          * `5g-46-5230-40` - 46 (5230/40 MHz)
+          * `5g-48-5240-20` - 48 (5240/20 MHz)
+          * `5g-50-5250-160` - 50 (5250/160 MHz)
+          * `5g-52-5260-20` - 52 (5260/20 MHz)
+          * `5g-54-5270-40` - 54 (5270/40 MHz)
+          * `5g-56-5280-20` - 56 (5280/20 MHz)
+          * `5g-58-5290-80` - 58 (5290/80 MHz)
+          * `5g-60-5300-20` - 60 (5300/20 MHz)
+          * `5g-62-5310-40` - 62 (5310/40 MHz)
+          * `5g-64-5320-20` - 64 (5320/20 MHz)
+          * `5g-100-5500-20` - 100 (5500/20 MHz)
+          * `5g-102-5510-40` - 102 (5510/40 MHz)
+          * `5g-104-5520-20` - 104 (5520/20 MHz)
+          * `5g-106-5530-80` - 106 (5530/80 MHz)
+          * `5g-108-5540-20` - 108 (5540/20 MHz)
+          * `5g-110-5550-40` - 110 (5550/40 MHz)
+          * `5g-112-5560-20` - 112 (5560/20 MHz)
+          * `5g-114-5570-160` - 114 (5570/160 MHz)
+          * `5g-116-5580-20` - 116 (5580/20 MHz)
+          * `5g-118-5590-40` - 118 (5590/40 MHz)
+          * `5g-120-5600-20` - 120 (5600/20 MHz)
+          * `5g-122-5610-80` - 122 (5610/80 MHz)
+          * `5g-124-5620-20` - 124 (5620/20 MHz)
+          * `5g-126-5630-40` - 126 (5630/40 MHz)
+          * `5g-128-5640-20` - 128 (5640/20 MHz)
+          * `5g-132-5660-20` - 132 (5660/20 MHz)
+          * `5g-134-5670-40` - 134 (5670/40 MHz)
+          * `5g-136-5680-20` - 136 (5680/20 MHz)
+          * `5g-138-5690-80` - 138 (5690/80 MHz)
+          * `5g-140-5700-20` - 140 (5700/20 MHz)
+          * `5g-142-5710-40` - 142 (5710/40 MHz)
+          * `5g-144-5720-20` - 144 (5720/20 MHz)
+          * `5g-149-5745-20` - 149 (5745/20 MHz)
+          * `5g-151-5755-40` - 151 (5755/40 MHz)
+          * `5g-153-5765-20` - 153 (5765/20 MHz)
+          * `5g-155-5775-80` - 155 (5775/80 MHz)
+          * `5g-157-5785-20` - 157 (5785/20 MHz)
+          * `5g-159-5795-40` - 159 (5795/40 MHz)
+          * `5g-161-5805-20` - 161 (5805/20 MHz)
+          * `5g-163-5815-160` - 163 (5815/160 MHz)
+          * `5g-165-5825-20` - 165 (5825/20 MHz)
+          * `5g-167-5835-40` - 167 (5835/40 MHz)
+          * `5g-169-5845-20` - 169 (5845/20 MHz)
+          * `5g-171-5855-80` - 171 (5855/80 MHz)
+          * `5g-173-5865-20` - 173 (5865/20 MHz)
+          * `5g-175-5875-40` - 175 (5875/40 MHz)
+          * `5g-177-5885-20` - 177 (5885/20 MHz)
+          * `6g-1-5955-20` - 1 (5955/20 MHz)
+          * `6g-3-5965-40` - 3 (5965/40 MHz)
+          * `6g-5-5975-20` - 5 (5975/20 MHz)
+          * `6g-7-5985-80` - 7 (5985/80 MHz)
+          * `6g-9-5995-20` - 9 (5995/20 MHz)
+          * `6g-11-6005-40` - 11 (6005/40 MHz)
+          * `6g-13-6015-20` - 13 (6015/20 MHz)
+          * `6g-15-6025-160` - 15 (6025/160 MHz)
+          * `6g-17-6035-20` - 17 (6035/20 MHz)
+          * `6g-19-6045-40` - 19 (6045/40 MHz)
+          * `6g-21-6055-20` - 21 (6055/20 MHz)
+          * `6g-23-6065-80` - 23 (6065/80 MHz)
+          * `6g-25-6075-20` - 25 (6075/20 MHz)
+          * `6g-27-6085-40` - 27 (6085/40 MHz)
+          * `6g-29-6095-20` - 29 (6095/20 MHz)
+          * `6g-31-6105-320` - 31 (6105/320 MHz)
+          * `6g-33-6115-20` - 33 (6115/20 MHz)
+          * `6g-35-6125-40` - 35 (6125/40 MHz)
+          * `6g-37-6135-20` - 37 (6135/20 MHz)
+          * `6g-39-6145-80` - 39 (6145/80 MHz)
+          * `6g-41-6155-20` - 41 (6155/20 MHz)
+          * `6g-43-6165-40` - 43 (6165/40 MHz)
+          * `6g-45-6175-20` - 45 (6175/20 MHz)
+          * `6g-47-6185-160` - 47 (6185/160 MHz)
+          * `6g-49-6195-20` - 49 (6195/20 MHz)
+          * `6g-51-6205-40` - 51 (6205/40 MHz)
+          * `6g-53-6215-20` - 53 (6215/20 MHz)
+          * `6g-55-6225-80` - 55 (6225/80 MHz)
+          * `6g-57-6235-20` - 57 (6235/20 MHz)
+          * `6g-59-6245-40` - 59 (6245/40 MHz)
+          * `6g-61-6255-20` - 61 (6255/20 MHz)
+          * `6g-65-6275-20` - 65 (6275/20 MHz)
+          * `6g-67-6285-40` - 67 (6285/40 MHz)
+          * `6g-69-6295-20` - 69 (6295/20 MHz)
+          * `6g-71-6305-80` - 71 (6305/80 MHz)
+          * `6g-73-6315-20` - 73 (6315/20 MHz)
+          * `6g-75-6325-40` - 75 (6325/40 MHz)
+          * `6g-77-6335-20` - 77 (6335/20 MHz)
+          * `6g-79-6345-160` - 79 (6345/160 MHz)
+          * `6g-81-6355-20` - 81 (6355/20 MHz)
+          * `6g-83-6365-40` - 83 (6365/40 MHz)
+          * `6g-85-6375-20` - 85 (6375/20 MHz)
+          * `6g-87-6385-80` - 87 (6385/80 MHz)
+          * `6g-89-6395-20` - 89 (6395/20 MHz)
+          * `6g-91-6405-40` - 91 (6405/40 MHz)
+          * `6g-93-6415-20` - 93 (6415/20 MHz)
+          * `6g-95-6425-320` - 95 (6425/320 MHz)
+          * `6g-97-6435-20` - 97 (6435/20 MHz)
+          * `6g-99-6445-40` - 99 (6445/40 MHz)
+          * `6g-101-6455-20` - 101 (6455/20 MHz)
+          * `6g-103-6465-80` - 103 (6465/80 MHz)
+          * `6g-105-6475-20` - 105 (6475/20 MHz)
+          * `6g-107-6485-40` - 107 (6485/40 MHz)
+          * `6g-109-6495-20` - 109 (6495/20 MHz)
+          * `6g-111-6505-160` - 111 (6505/160 MHz)
+          * `6g-113-6515-20` - 113 (6515/20 MHz)
+          * `6g-115-6525-40` - 115 (6525/40 MHz)
+          * `6g-117-6535-20` - 117 (6535/20 MHz)
+          * `6g-119-6545-80` - 119 (6545/80 MHz)
+          * `6g-121-6555-20` - 121 (6555/20 MHz)
+          * `6g-123-6565-40` - 123 (6565/40 MHz)
+          * `6g-125-6575-20` - 125 (6575/20 MHz)
+          * `6g-129-6595-20` - 129 (6595/20 MHz)
+          * `6g-131-6605-40` - 131 (6605/40 MHz)
+          * `6g-133-6615-20` - 133 (6615/20 MHz)
+          * `6g-135-6625-80` - 135 (6625/80 MHz)
+          * `6g-137-6635-20` - 137 (6635/20 MHz)
+          * `6g-139-6645-40` - 139 (6645/40 MHz)
+          * `6g-141-6655-20` - 141 (6655/20 MHz)
+          * `6g-143-6665-160` - 143 (6665/160 MHz)
+          * `6g-145-6675-20` - 145 (6675/20 MHz)
+          * `6g-147-6685-40` - 147 (6685/40 MHz)
+          * `6g-149-6695-20` - 149 (6695/20 MHz)
+          * `6g-151-6705-80` - 151 (6705/80 MHz)
+          * `6g-153-6715-20` - 153 (6715/20 MHz)
+          * `6g-155-6725-40` - 155 (6725/40 MHz)
+          * `6g-157-6735-20` - 157 (6735/20 MHz)
+          * `6g-159-6745-320` - 159 (6745/320 MHz)
+          * `6g-161-6755-20` - 161 (6755/20 MHz)
+          * `6g-163-6765-40` - 163 (6765/40 MHz)
+          * `6g-165-6775-20` - 165 (6775/20 MHz)
+          * `6g-167-6785-80` - 167 (6785/80 MHz)
+          * `6g-169-6795-20` - 169 (6795/20 MHz)
+          * `6g-171-6805-40` - 171 (6805/40 MHz)
+          * `6g-173-6815-20` - 173 (6815/20 MHz)
+          * `6g-175-6825-160` - 175 (6825/160 MHz)
+          * `6g-177-6835-20` - 177 (6835/20 MHz)
+          * `6g-179-6845-40` - 179 (6845/40 MHz)
+          * `6g-181-6855-20` - 181 (6855/20 MHz)
+          * `6g-183-6865-80` - 183 (6865/80 MHz)
+          * `6g-185-6875-20` - 185 (6875/20 MHz)
+          * `6g-187-6885-40` - 187 (6885/40 MHz)
+          * `6g-189-6895-20` - 189 (6895/20 MHz)
+          * `6g-193-6915-20` - 193 (6915/20 MHz)
+          * `6g-195-6925-40` - 195 (6925/40 MHz)
+          * `6g-197-6935-20` - 197 (6935/20 MHz)
+          * `6g-199-6945-80` - 199 (6945/80 MHz)
+          * `6g-201-6955-20` - 201 (6955/20 MHz)
+          * `6g-203-6965-40` - 203 (6965/40 MHz)
+          * `6g-205-6975-20` - 205 (6975/20 MHz)
+          * `6g-207-6985-160` - 207 (6985/160 MHz)
+          * `6g-209-6995-20` - 209 (6995/20 MHz)
+          * `6g-211-7005-40` - 211 (7005/40 MHz)
+          * `6g-213-7015-20` - 213 (7015/20 MHz)
+          * `6g-215-7025-80` - 215 (7025/80 MHz)
+          * `6g-217-7035-20` - 217 (7035/20 MHz)
+          * `6g-219-7045-40` - 219 (7045/40 MHz)
+          * `6g-221-7055-20` - 221 (7055/20 MHz)
+          * `6g-225-7075-20` - 225 (7075/20 MHz)
+          * `6g-227-7085-40` - 227 (7085/40 MHz)
+          * `6g-229-7095-20` - 229 (7095/20 MHz)
+          * `6g-233-7115-20` - 233 (7115/20 MHz)
+          * `60g-1-58320-2160` - 1 (58.32/2.16 GHz)
+          * `60g-2-60480-2160` - 2 (60.48/2.16 GHz)
+          * `60g-3-62640-2160` - 3 (62.64/2.16 GHz)
+          * `60g-4-64800-2160` - 4 (64.80/2.16 GHz)
+          * `60g-5-66960-2160` - 5 (66.96/2.16 GHz)
+          * `60g-6-69120-2160` - 6 (69.12/2.16 GHz)
+          * `60g-9-59400-4320` - 9 (59.40/4.32 GHz)
+          * `60g-10-61560-4320` - 10 (61.56/4.32 GHz)
+          * `60g-11-63720-4320` - 11 (63.72/4.32 GHz)
+          * `60g-12-65880-4320` - 12 (65.88/4.32 GHz)
+          * `60g-13-68040-4320` - 13 (68.04/4.32 GHz)
+          * `60g-17-60480-6480` - 17 (60.48/6.48 GHz)
+          * `60g-18-62640-6480` - 18 (62.64/6.48 GHz)
+          * `60g-19-64800-6480` - 19 (64.80/6.48 GHz)
+          * `60g-20-66960-6480` - 20 (66.96/6.48 GHz)
+          * `60g-25-61560-6480` - 25 (61.56/8.64 GHz)
+          * `60g-26-63720-6480` - 26 (63.72/8.64 GHz)
+          * `60g-27-65880-6480` - 27 (65.88/8.64 GHz)
+        explode: true
+        style: form
+      - in: query
+        name: rf_channel__n
+        schema:
+          type: array
+          items:
+            type: string
+            title: Wireless channel
+        description: |-
+          * `2.4g-1-2412-22` - 1 (2412 MHz)
+          * `2.4g-2-2417-22` - 2 (2417 MHz)
+          * `2.4g-3-2422-22` - 3 (2422 MHz)
+          * `2.4g-4-2427-22` - 4 (2427 MHz)
+          * `2.4g-5-2432-22` - 5 (2432 MHz)
+          * `2.4g-6-2437-22` - 6 (2437 MHz)
+          * `2.4g-7-2442-22` - 7 (2442 MHz)
+          * `2.4g-8-2447-22` - 8 (2447 MHz)
+          * `2.4g-9-2452-22` - 9 (2452 MHz)
+          * `2.4g-10-2457-22` - 10 (2457 MHz)
+          * `2.4g-11-2462-22` - 11 (2462 MHz)
+          * `2.4g-12-2467-22` - 12 (2467 MHz)
+          * `2.4g-13-2472-22` - 13 (2472 MHz)
+          * `5g-32-5160-20` - 32 (5160/20 MHz)
+          * `5g-34-5170-40` - 34 (5170/40 MHz)
+          * `5g-36-5180-20` - 36 (5180/20 MHz)
+          * `5g-38-5190-40` - 38 (5190/40 MHz)
+          * `5g-40-5200-20` - 40 (5200/20 MHz)
+          * `5g-42-5210-80` - 42 (5210/80 MHz)
+          * `5g-44-5220-20` - 44 (5220/20 MHz)
+          * `5g-46-5230-40` - 46 (5230/40 MHz)
+          * `5g-48-5240-20` - 48 (5240/20 MHz)
+          * `5g-50-5250-160` - 50 (5250/160 MHz)
+          * `5g-52-5260-20` - 52 (5260/20 MHz)
+          * `5g-54-5270-40` - 54 (5270/40 MHz)
+          * `5g-56-5280-20` - 56 (5280/20 MHz)
+          * `5g-58-5290-80` - 58 (5290/80 MHz)
+          * `5g-60-5300-20` - 60 (5300/20 MHz)
+          * `5g-62-5310-40` - 62 (5310/40 MHz)
+          * `5g-64-5320-20` - 64 (5320/20 MHz)
+          * `5g-100-5500-20` - 100 (5500/20 MHz)
+          * `5g-102-5510-40` - 102 (5510/40 MHz)
+          * `5g-104-5520-20` - 104 (5520/20 MHz)
+          * `5g-106-5530-80` - 106 (5530/80 MHz)
+          * `5g-108-5540-20` - 108 (5540/20 MHz)
+          * `5g-110-5550-40` - 110 (5550/40 MHz)
+          * `5g-112-5560-20` - 112 (5560/20 MHz)
+          * `5g-114-5570-160` - 114 (5570/160 MHz)
+          * `5g-116-5580-20` - 116 (5580/20 MHz)
+          * `5g-118-5590-40` - 118 (5590/40 MHz)
+          * `5g-120-5600-20` - 120 (5600/20 MHz)
+          * `5g-122-5610-80` - 122 (5610/80 MHz)
+          * `5g-124-5620-20` - 124 (5620/20 MHz)
+          * `5g-126-5630-40` - 126 (5630/40 MHz)
+          * `5g-128-5640-20` - 128 (5640/20 MHz)
+          * `5g-132-5660-20` - 132 (5660/20 MHz)
+          * `5g-134-5670-40` - 134 (5670/40 MHz)
+          * `5g-136-5680-20` - 136 (5680/20 MHz)
+          * `5g-138-5690-80` - 138 (5690/80 MHz)
+          * `5g-140-5700-20` - 140 (5700/20 MHz)
+          * `5g-142-5710-40` - 142 (5710/40 MHz)
+          * `5g-144-5720-20` - 144 (5720/20 MHz)
+          * `5g-149-5745-20` - 149 (5745/20 MHz)
+          * `5g-151-5755-40` - 151 (5755/40 MHz)
+          * `5g-153-5765-20` - 153 (5765/20 MHz)
+          * `5g-155-5775-80` - 155 (5775/80 MHz)
+          * `5g-157-5785-20` - 157 (5785/20 MHz)
+          * `5g-159-5795-40` - 159 (5795/40 MHz)
+          * `5g-161-5805-20` - 161 (5805/20 MHz)
+          * `5g-163-5815-160` - 163 (5815/160 MHz)
+          * `5g-165-5825-20` - 165 (5825/20 MHz)
+          * `5g-167-5835-40` - 167 (5835/40 MHz)
+          * `5g-169-5845-20` - 169 (5845/20 MHz)
+          * `5g-171-5855-80` - 171 (5855/80 MHz)
+          * `5g-173-5865-20` - 173 (5865/20 MHz)
+          * `5g-175-5875-40` - 175 (5875/40 MHz)
+          * `5g-177-5885-20` - 177 (5885/20 MHz)
+          * `6g-1-5955-20` - 1 (5955/20 MHz)
+          * `6g-3-5965-40` - 3 (5965/40 MHz)
+          * `6g-5-5975-20` - 5 (5975/20 MHz)
+          * `6g-7-5985-80` - 7 (5985/80 MHz)
+          * `6g-9-5995-20` - 9 (5995/20 MHz)
+          * `6g-11-6005-40` - 11 (6005/40 MHz)
+          * `6g-13-6015-20` - 13 (6015/20 MHz)
+          * `6g-15-6025-160` - 15 (6025/160 MHz)
+          * `6g-17-6035-20` - 17 (6035/20 MHz)
+          * `6g-19-6045-40` - 19 (6045/40 MHz)
+          * `6g-21-6055-20` - 21 (6055/20 MHz)
+          * `6g-23-6065-80` - 23 (6065/80 MHz)
+          * `6g-25-6075-20` - 25 (6075/20 MHz)
+          * `6g-27-6085-40` - 27 (6085/40 MHz)
+          * `6g-29-6095-20` - 29 (6095/20 MHz)
+          * `6g-31-6105-320` - 31 (6105/320 MHz)
+          * `6g-33-6115-20` - 33 (6115/20 MHz)
+          * `6g-35-6125-40` - 35 (6125/40 MHz)
+          * `6g-37-6135-20` - 37 (6135/20 MHz)
+          * `6g-39-6145-80` - 39 (6145/80 MHz)
+          * `6g-41-6155-20` - 41 (6155/20 MHz)
+          * `6g-43-6165-40` - 43 (6165/40 MHz)
+          * `6g-45-6175-20` - 45 (6175/20 MHz)
+          * `6g-47-6185-160` - 47 (6185/160 MHz)
+          * `6g-49-6195-20` - 49 (6195/20 MHz)
+          * `6g-51-6205-40` - 51 (6205/40 MHz)
+          * `6g-53-6215-20` - 53 (6215/20 MHz)
+          * `6g-55-6225-80` - 55 (6225/80 MHz)
+          * `6g-57-6235-20` - 57 (6235/20 MHz)
+          * `6g-59-6245-40` - 59 (6245/40 MHz)
+          * `6g-61-6255-20` - 61 (6255/20 MHz)
+          * `6g-65-6275-20` - 65 (6275/20 MHz)
+          * `6g-67-6285-40` - 67 (6285/40 MHz)
+          * `6g-69-6295-20` - 69 (6295/20 MHz)
+          * `6g-71-6305-80` - 71 (6305/80 MHz)
+          * `6g-73-6315-20` - 73 (6315/20 MHz)
+          * `6g-75-6325-40` - 75 (6325/40 MHz)
+          * `6g-77-6335-20` - 77 (6335/20 MHz)
+          * `6g-79-6345-160` - 79 (6345/160 MHz)
+          * `6g-81-6355-20` - 81 (6355/20 MHz)
+          * `6g-83-6365-40` - 83 (6365/40 MHz)
+          * `6g-85-6375-20` - 85 (6375/20 MHz)
+          * `6g-87-6385-80` - 87 (6385/80 MHz)
+          * `6g-89-6395-20` - 89 (6395/20 MHz)
+          * `6g-91-6405-40` - 91 (6405/40 MHz)
+          * `6g-93-6415-20` - 93 (6415/20 MHz)
+          * `6g-95-6425-320` - 95 (6425/320 MHz)
+          * `6g-97-6435-20` - 97 (6435/20 MHz)
+          * `6g-99-6445-40` - 99 (6445/40 MHz)
+          * `6g-101-6455-20` - 101 (6455/20 MHz)
+          * `6g-103-6465-80` - 103 (6465/80 MHz)
+          * `6g-105-6475-20` - 105 (6475/20 MHz)
+          * `6g-107-6485-40` - 107 (6485/40 MHz)
+          * `6g-109-6495-20` - 109 (6495/20 MHz)
+          * `6g-111-6505-160` - 111 (6505/160 MHz)
+          * `6g-113-6515-20` - 113 (6515/20 MHz)
+          * `6g-115-6525-40` - 115 (6525/40 MHz)
+          * `6g-117-6535-20` - 117 (6535/20 MHz)
+          * `6g-119-6545-80` - 119 (6545/80 MHz)
+          * `6g-121-6555-20` - 121 (6555/20 MHz)
+          * `6g-123-6565-40` - 123 (6565/40 MHz)
+          * `6g-125-6575-20` - 125 (6575/20 MHz)
+          * `6g-129-6595-20` - 129 (6595/20 MHz)
+          * `6g-131-6605-40` - 131 (6605/40 MHz)
+          * `6g-133-6615-20` - 133 (6615/20 MHz)
+          * `6g-135-6625-80` - 135 (6625/80 MHz)
+          * `6g-137-6635-20` - 137 (6635/20 MHz)
+          * `6g-139-6645-40` - 139 (6645/40 MHz)
+          * `6g-141-6655-20` - 141 (6655/20 MHz)
+          * `6g-143-6665-160` - 143 (6665/160 MHz)
+          * `6g-145-6675-20` - 145 (6675/20 MHz)
+          * `6g-147-6685-40` - 147 (6685/40 MHz)
+          * `6g-149-6695-20` - 149 (6695/20 MHz)
+          * `6g-151-6705-80` - 151 (6705/80 MHz)
+          * `6g-153-6715-20` - 153 (6715/20 MHz)
+          * `6g-155-6725-40` - 155 (6725/40 MHz)
+          * `6g-157-6735-20` - 157 (6735/20 MHz)
+          * `6g-159-6745-320` - 159 (6745/320 MHz)
+          * `6g-161-6755-20` - 161 (6755/20 MHz)
+          * `6g-163-6765-40` - 163 (6765/40 MHz)
+          * `6g-165-6775-20` - 165 (6775/20 MHz)
+          * `6g-167-6785-80` - 167 (6785/80 MHz)
+          * `6g-169-6795-20` - 169 (6795/20 MHz)
+          * `6g-171-6805-40` - 171 (6805/40 MHz)
+          * `6g-173-6815-20` - 173 (6815/20 MHz)
+          * `6g-175-6825-160` - 175 (6825/160 MHz)
+          * `6g-177-6835-20` - 177 (6835/20 MHz)
+          * `6g-179-6845-40` - 179 (6845/40 MHz)
+          * `6g-181-6855-20` - 181 (6855/20 MHz)
+          * `6g-183-6865-80` - 183 (6865/80 MHz)
+          * `6g-185-6875-20` - 185 (6875/20 MHz)
+          * `6g-187-6885-40` - 187 (6885/40 MHz)
+          * `6g-189-6895-20` - 189 (6895/20 MHz)
+          * `6g-193-6915-20` - 193 (6915/20 MHz)
+          * `6g-195-6925-40` - 195 (6925/40 MHz)
+          * `6g-197-6935-20` - 197 (6935/20 MHz)
+          * `6g-199-6945-80` - 199 (6945/80 MHz)
+          * `6g-201-6955-20` - 201 (6955/20 MHz)
+          * `6g-203-6965-40` - 203 (6965/40 MHz)
+          * `6g-205-6975-20` - 205 (6975/20 MHz)
+          * `6g-207-6985-160` - 207 (6985/160 MHz)
+          * `6g-209-6995-20` - 209 (6995/20 MHz)
+          * `6g-211-7005-40` - 211 (7005/40 MHz)
+          * `6g-213-7015-20` - 213 (7015/20 MHz)
+          * `6g-215-7025-80` - 215 (7025/80 MHz)
+          * `6g-217-7035-20` - 217 (7035/20 MHz)
+          * `6g-219-7045-40` - 219 (7045/40 MHz)
+          * `6g-221-7055-20` - 221 (7055/20 MHz)
+          * `6g-225-7075-20` - 225 (7075/20 MHz)
+          * `6g-227-7085-40` - 227 (7085/40 MHz)
+          * `6g-229-7095-20` - 229 (7095/20 MHz)
+          * `6g-233-7115-20` - 233 (7115/20 MHz)
+          * `60g-1-58320-2160` - 1 (58.32/2.16 GHz)
+          * `60g-2-60480-2160` - 2 (60.48/2.16 GHz)
+          * `60g-3-62640-2160` - 3 (62.64/2.16 GHz)
+          * `60g-4-64800-2160` - 4 (64.80/2.16 GHz)
+          * `60g-5-66960-2160` - 5 (66.96/2.16 GHz)
+          * `60g-6-69120-2160` - 6 (69.12/2.16 GHz)
+          * `60g-9-59400-4320` - 9 (59.40/4.32 GHz)
+          * `60g-10-61560-4320` - 10 (61.56/4.32 GHz)
+          * `60g-11-63720-4320` - 11 (63.72/4.32 GHz)
+          * `60g-12-65880-4320` - 12 (65.88/4.32 GHz)
+          * `60g-13-68040-4320` - 13 (68.04/4.32 GHz)
+          * `60g-17-60480-6480` - 17 (60.48/6.48 GHz)
+          * `60g-18-62640-6480` - 18 (62.64/6.48 GHz)
+          * `60g-19-64800-6480` - 19 (64.80/6.48 GHz)
+          * `60g-20-66960-6480` - 20 (66.96/6.48 GHz)
+          * `60g-25-61560-6480` - 25 (61.56/8.64 GHz)
+          * `60g-26-63720-6480` - 26 (63.72/8.64 GHz)
+          * `60g-27-65880-6480` - 27 (65.88/8.64 GHz)
+        explode: true
+        style: form
+      - in: query
+        name: rf_channel_frequency
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: rf_channel_frequency__gt
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: rf_channel_frequency__gte
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: rf_channel_frequency__lt
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: rf_channel_frequency__lte
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: rf_channel_frequency__n
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: rf_channel_width
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: rf_channel_width__gt
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: rf_channel_width__gte
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: rf_channel_width__lt
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: rf_channel_width__lte
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: rf_channel_width__n
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: rf_role
+        schema:
+          type: array
+          items:
+            type: string
+            title: Wireless role
+        description: |-
+          * `ap` - Access point
+          * `station` - Station
+        explode: true
+        style: form
+      - in: query
+        name: rf_role__n
+        schema:
+          type: array
+          items:
+            type: string
+            title: Wireless role
+        description: |-
+          * `ap` - Access point
+          * `station` - Station
+        explode: true
+        style: form
+      - in: query
+        name: site
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site name (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site name (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: speed
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: speed__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: speed__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: speed__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: speed__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: speed__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tx_power
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: tx_power__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: tx_power__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: tx_power__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: tx_power__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: tx_power__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: type
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `virtual` - Virtual
+          * `bridge` - Bridge
+          * `lag` - Link Aggregation Group (LAG)
+          * `100base-fx` - 100BASE-FX (10/100ME FIBER)
+          * `100base-lfx` - 100BASE-LFX (10/100ME FIBER)
+          * `100base-tx` - 100BASE-TX (10/100ME)
+          * `100base-t1` - 100BASE-T1 (10/100ME Single Pair)
+          * `1000base-t` - 1000BASE-T (1GE)
+          * `2.5gbase-t` - 2.5GBASE-T (2.5GE)
+          * `5gbase-t` - 5GBASE-T (5GE)
+          * `10gbase-t` - 10GBASE-T (10GE)
+          * `10gbase-cx4` - 10GBASE-CX4 (10GE)
+          * `1000base-x-gbic` - GBIC (1GE)
+          * `1000base-x-sfp` - SFP (1GE)
+          * `10gbase-x-sfpp` - SFP+ (10GE)
+          * `10gbase-x-xfp` - XFP (10GE)
+          * `10gbase-x-xenpak` - XENPAK (10GE)
+          * `10gbase-x-x2` - X2 (10GE)
+          * `25gbase-x-sfp28` - SFP28 (25GE)
+          * `50gbase-x-sfp56` - SFP56 (50GE)
+          * `40gbase-x-qsfpp` - QSFP+ (40GE)
+          * `50gbase-x-sfp28` - QSFP28 (50GE)
+          * `100gbase-x-cfp` - CFP (100GE)
+          * `100gbase-x-cfp2` - CFP2 (100GE)
+          * `200gbase-x-cfp2` - CFP2 (200GE)
+          * `100gbase-x-cfp4` - CFP4 (100GE)
+          * `100gbase-x-cpak` - Cisco CPAK (100GE)
+          * `100gbase-x-qsfp28` - QSFP28 (100GE)
+          * `200gbase-x-qsfp56` - QSFP56 (200GE)
+          * `400gbase-x-qsfpdd` - QSFP-DD (400GE)
+          * `400gbase-x-osfp` - OSFP (400GE)
+          * `800gbase-x-qsfpdd` - QSFP-DD (800GE)
+          * `800gbase-x-osfp` - OSFP (800GE)
+          * `1000base-kx` - 1000BASE-KX (1GE)
+          * `10gbase-kr` - 10GBASE-KR (10GE)
+          * `10gbase-kx4` - 10GBASE-KX4 (10GE)
+          * `25gbase-kr` - 25GBASE-KR (25GE)
+          * `40gbase-kr4` - 40GBASE-KR4 (40GE)
+          * `50gbase-kr` - 50GBASE-KR (50GE)
+          * `100gbase-kp4` - 100GBASE-KP4 (100GE)
+          * `100gbase-kr2` - 100GBASE-KR2 (100GE)
+          * `100gbase-kr4` - 100GBASE-KR4 (100GE)
+          * `ieee802.11a` - IEEE 802.11a
+          * `ieee802.11g` - IEEE 802.11b/g
+          * `ieee802.11n` - IEEE 802.11n
+          * `ieee802.11ac` - IEEE 802.11ac
+          * `ieee802.11ad` - IEEE 802.11ad
+          * `ieee802.11ax` - IEEE 802.11ax
+          * `ieee802.11ay` - IEEE 802.11ay
+          * `ieee802.15.1` - IEEE 802.15.1 (Bluetooth)
+          * `other-wireless` - Other (Wireless)
+          * `gsm` - GSM
+          * `cdma` - CDMA
+          * `lte` - LTE
+          * `sonet-oc3` - OC-3/STM-1
+          * `sonet-oc12` - OC-12/STM-4
+          * `sonet-oc48` - OC-48/STM-16
+          * `sonet-oc192` - OC-192/STM-64
+          * `sonet-oc768` - OC-768/STM-256
+          * `sonet-oc1920` - OC-1920/STM-640
+          * `sonet-oc3840` - OC-3840/STM-1234
+          * `1gfc-sfp` - SFP (1GFC)
+          * `2gfc-sfp` - SFP (2GFC)
+          * `4gfc-sfp` - SFP (4GFC)
+          * `8gfc-sfpp` - SFP+ (8GFC)
+          * `16gfc-sfpp` - SFP+ (16GFC)
+          * `32gfc-sfp28` - SFP28 (32GFC)
+          * `64gfc-qsfpp` - QSFP+ (64GFC)
+          * `128gfc-qsfp28` - QSFP28 (128GFC)
+          * `infiniband-sdr` - SDR (2 Gbps)
+          * `infiniband-ddr` - DDR (4 Gbps)
+          * `infiniband-qdr` - QDR (8 Gbps)
+          * `infiniband-fdr10` - FDR10 (10 Gbps)
+          * `infiniband-fdr` - FDR (13.5 Gbps)
+          * `infiniband-edr` - EDR (25 Gbps)
+          * `infiniband-hdr` - HDR (50 Gbps)
+          * `infiniband-ndr` - NDR (100 Gbps)
+          * `infiniband-xdr` - XDR (250 Gbps)
+          * `t1` - T1 (1.544 Mbps)
+          * `e1` - E1 (2.048 Mbps)
+          * `t3` - T3 (45 Mbps)
+          * `e3` - E3 (34 Mbps)
+          * `xdsl` - xDSL
+          * `docsis` - DOCSIS
+          * `gpon` - GPON (2.5 Gbps / 1.25 Gps)
+          * `xg-pon` - XG-PON (10 Gbps / 2.5 Gbps)
+          * `xgs-pon` - XGS-PON (10 Gbps)
+          * `ng-pon2` - NG-PON2 (TWDM-PON) (4x10 Gbps)
+          * `epon` - EPON (1 Gbps)
+          * `10g-epon` - 10G-EPON (10 Gbps)
+          * `cisco-stackwise` - Cisco StackWise
+          * `cisco-stackwise-plus` - Cisco StackWise Plus
+          * `cisco-flexstack` - Cisco FlexStack
+          * `cisco-flexstack-plus` - Cisco FlexStack Plus
+          * `cisco-stackwise-80` - Cisco StackWise-80
+          * `cisco-stackwise-160` - Cisco StackWise-160
+          * `cisco-stackwise-320` - Cisco StackWise-320
+          * `cisco-stackwise-480` - Cisco StackWise-480
+          * `cisco-stackwise-1t` - Cisco StackWise-1T
+          * `juniper-vcp` - Juniper VCP
+          * `extreme-summitstack` - Extreme SummitStack
+          * `extreme-summitstack-128` - Extreme SummitStack-128
+          * `extreme-summitstack-256` - Extreme SummitStack-256
+          * `extreme-summitstack-512` - Extreme SummitStack-512
+          * `other` - Other
+        explode: true
+        style: form
+      - in: query
+        name: type__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `virtual` - Virtual
+          * `bridge` - Bridge
+          * `lag` - Link Aggregation Group (LAG)
+          * `100base-fx` - 100BASE-FX (10/100ME FIBER)
+          * `100base-lfx` - 100BASE-LFX (10/100ME FIBER)
+          * `100base-tx` - 100BASE-TX (10/100ME)
+          * `100base-t1` - 100BASE-T1 (10/100ME Single Pair)
+          * `1000base-t` - 1000BASE-T (1GE)
+          * `2.5gbase-t` - 2.5GBASE-T (2.5GE)
+          * `5gbase-t` - 5GBASE-T (5GE)
+          * `10gbase-t` - 10GBASE-T (10GE)
+          * `10gbase-cx4` - 10GBASE-CX4 (10GE)
+          * `1000base-x-gbic` - GBIC (1GE)
+          * `1000base-x-sfp` - SFP (1GE)
+          * `10gbase-x-sfpp` - SFP+ (10GE)
+          * `10gbase-x-xfp` - XFP (10GE)
+          * `10gbase-x-xenpak` - XENPAK (10GE)
+          * `10gbase-x-x2` - X2 (10GE)
+          * `25gbase-x-sfp28` - SFP28 (25GE)
+          * `50gbase-x-sfp56` - SFP56 (50GE)
+          * `40gbase-x-qsfpp` - QSFP+ (40GE)
+          * `50gbase-x-sfp28` - QSFP28 (50GE)
+          * `100gbase-x-cfp` - CFP (100GE)
+          * `100gbase-x-cfp2` - CFP2 (100GE)
+          * `200gbase-x-cfp2` - CFP2 (200GE)
+          * `100gbase-x-cfp4` - CFP4 (100GE)
+          * `100gbase-x-cpak` - Cisco CPAK (100GE)
+          * `100gbase-x-qsfp28` - QSFP28 (100GE)
+          * `200gbase-x-qsfp56` - QSFP56 (200GE)
+          * `400gbase-x-qsfpdd` - QSFP-DD (400GE)
+          * `400gbase-x-osfp` - OSFP (400GE)
+          * `800gbase-x-qsfpdd` - QSFP-DD (800GE)
+          * `800gbase-x-osfp` - OSFP (800GE)
+          * `1000base-kx` - 1000BASE-KX (1GE)
+          * `10gbase-kr` - 10GBASE-KR (10GE)
+          * `10gbase-kx4` - 10GBASE-KX4 (10GE)
+          * `25gbase-kr` - 25GBASE-KR (25GE)
+          * `40gbase-kr4` - 40GBASE-KR4 (40GE)
+          * `50gbase-kr` - 50GBASE-KR (50GE)
+          * `100gbase-kp4` - 100GBASE-KP4 (100GE)
+          * `100gbase-kr2` - 100GBASE-KR2 (100GE)
+          * `100gbase-kr4` - 100GBASE-KR4 (100GE)
+          * `ieee802.11a` - IEEE 802.11a
+          * `ieee802.11g` - IEEE 802.11b/g
+          * `ieee802.11n` - IEEE 802.11n
+          * `ieee802.11ac` - IEEE 802.11ac
+          * `ieee802.11ad` - IEEE 802.11ad
+          * `ieee802.11ax` - IEEE 802.11ax
+          * `ieee802.11ay` - IEEE 802.11ay
+          * `ieee802.15.1` - IEEE 802.15.1 (Bluetooth)
+          * `other-wireless` - Other (Wireless)
+          * `gsm` - GSM
+          * `cdma` - CDMA
+          * `lte` - LTE
+          * `sonet-oc3` - OC-3/STM-1
+          * `sonet-oc12` - OC-12/STM-4
+          * `sonet-oc48` - OC-48/STM-16
+          * `sonet-oc192` - OC-192/STM-64
+          * `sonet-oc768` - OC-768/STM-256
+          * `sonet-oc1920` - OC-1920/STM-640
+          * `sonet-oc3840` - OC-3840/STM-1234
+          * `1gfc-sfp` - SFP (1GFC)
+          * `2gfc-sfp` - SFP (2GFC)
+          * `4gfc-sfp` - SFP (4GFC)
+          * `8gfc-sfpp` - SFP+ (8GFC)
+          * `16gfc-sfpp` - SFP+ (16GFC)
+          * `32gfc-sfp28` - SFP28 (32GFC)
+          * `64gfc-qsfpp` - QSFP+ (64GFC)
+          * `128gfc-qsfp28` - QSFP28 (128GFC)
+          * `infiniband-sdr` - SDR (2 Gbps)
+          * `infiniband-ddr` - DDR (4 Gbps)
+          * `infiniband-qdr` - QDR (8 Gbps)
+          * `infiniband-fdr10` - FDR10 (10 Gbps)
+          * `infiniband-fdr` - FDR (13.5 Gbps)
+          * `infiniband-edr` - EDR (25 Gbps)
+          * `infiniband-hdr` - HDR (50 Gbps)
+          * `infiniband-ndr` - NDR (100 Gbps)
+          * `infiniband-xdr` - XDR (250 Gbps)
+          * `t1` - T1 (1.544 Mbps)
+          * `e1` - E1 (2.048 Mbps)
+          * `t3` - T3 (45 Mbps)
+          * `e3` - E3 (34 Mbps)
+          * `xdsl` - xDSL
+          * `docsis` - DOCSIS
+          * `gpon` - GPON (2.5 Gbps / 1.25 Gps)
+          * `xg-pon` - XG-PON (10 Gbps / 2.5 Gbps)
+          * `xgs-pon` - XGS-PON (10 Gbps)
+          * `ng-pon2` - NG-PON2 (TWDM-PON) (4x10 Gbps)
+          * `epon` - EPON (1 Gbps)
+          * `10g-epon` - 10G-EPON (10 Gbps)
+          * `cisco-stackwise` - Cisco StackWise
+          * `cisco-stackwise-plus` - Cisco StackWise Plus
+          * `cisco-flexstack` - Cisco FlexStack
+          * `cisco-flexstack-plus` - Cisco FlexStack Plus
+          * `cisco-stackwise-80` - Cisco StackWise-80
+          * `cisco-stackwise-160` - Cisco StackWise-160
+          * `cisco-stackwise-320` - Cisco StackWise-320
+          * `cisco-stackwise-480` - Cisco StackWise-480
+          * `cisco-stackwise-1t` - Cisco StackWise-1T
+          * `juniper-vcp` - Juniper VCP
+          * `extreme-summitstack` - Extreme SummitStack
+          * `extreme-summitstack-128` - Extreme SummitStack-128
+          * `extreme-summitstack-256` - Extreme SummitStack-256
+          * `extreme-summitstack-512` - Extreme SummitStack-512
+          * `other` - Other
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: vdc
+        schema:
+          type: array
+          items:
+            type: string
+        description: Virtual Device Context
+        explode: true
+        style: form
+      - in: query
+        name: vdc__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Virtual Device Context
+        explode: true
+        style: form
+      - in: query
+        name: vdc_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Virtual Device Context
+        explode: true
+        style: form
+      - in: query
+        name: vdc_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Virtual Device Context
+        explode: true
+        style: form
+      - in: query
+        name: vdc_identifier
+        schema:
+          type: array
+          items:
+            type: integer
+            maximum: 32767
+            minimum: 0
+            nullable: true
+        description: Virtual Device Context (Identifier)
+        explode: true
+        style: form
+      - in: query
+        name: vdc_identifier__n
+        schema:
+          type: array
+          items:
+            type: integer
+            maximum: 32767
+            minimum: 0
+            nullable: true
+        description: Virtual Device Context (Identifier)
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis
+        schema:
+          type: array
+          items:
+            type: string
+        description: Virtual Chassis
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Virtual Chassis
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Virtual Chassis (ID)
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Virtual Chassis (ID)
+        explode: true
+        style: form
+      - in: query
+        name: vlan
+        schema:
+          type: string
+        description: Assigned VID
+      - in: query
+        name: vlan_id
+        schema:
+          type: string
+        description: Assigned VLAN
+      - in: query
+        name: vrf
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+            title: Route distinguisher
+        description: VRF (RD)
+        explode: true
+        style: form
+      - in: query
+        name: vrf__n
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+            title: Route distinguisher
+        description: VRF (RD)
+        explode: true
+        style: form
+      - in: query
+        name: vrf_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: VRF
+        explode: true
+        style: form
+      - in: query
+        name: vrf_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: VRF
+        explode: true
+        style: form
+      - in: query
+        name: wwn
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: wwn__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: wwn__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: wwn__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: wwn__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: wwn__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: wwn__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: wwn__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: wwn__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: wwn__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedInterfaceList'
+          description: ''
+    post:
+      operationId: dcim_interfaces_create
+      description: Post a list of interface objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableInterfaceRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableInterfaceRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Interface'
+          description: ''
+    put:
+      operationId: dcim_interfaces_bulk_update
+      description: Put a list of interface objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InterfaceRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InterfaceRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Interface'
+          description: ''
+    patch:
+      operationId: dcim_interfaces_bulk_partial_update
+      description: Patch a list of interface objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InterfaceRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InterfaceRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Interface'
+          description: ''
+    delete:
+      operationId: dcim_interfaces_bulk_destroy
+      description: Delete a list of interface objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InterfaceRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InterfaceRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/interfaces/{id}/:
+    get:
+      operationId: dcim_interfaces_retrieve
+      description: Get a interface object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this interface.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Interface'
+          description: ''
+    put:
+      operationId: dcim_interfaces_update
+      description: Put a interface object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this interface.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableInterfaceRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableInterfaceRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Interface'
+          description: ''
+    patch:
+      operationId: dcim_interfaces_partial_update
+      description: Patch a interface object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this interface.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableInterfaceRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableInterfaceRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Interface'
+          description: ''
+    delete:
+      operationId: dcim_interfaces_destroy
+      description: Delete a interface object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this interface.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/interfaces/{id}/trace/:
+    get:
+      operationId: dcim_interfaces_trace_retrieve
+      description: Trace a complete cable path and return each segment as a three-tuple
+        of (termination, cable, termination).
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this interface.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Interface'
+          description: ''
+  /api/dcim/inventory-item-roles/:
+    get:
+      operationId: dcim_inventory_item_roles_list
+      description: Get a list of inventory item role objects.
+      parameters:
+      - in: query
+        name: color
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: slug
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedInventoryItemRoleList'
+          description: ''
+    post:
+      operationId: dcim_inventory_item_roles_create
+      description: Post a list of inventory item role objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/InventoryItemRoleRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/InventoryItemRoleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/InventoryItemRole'
+          description: ''
+    put:
+      operationId: dcim_inventory_item_roles_bulk_update
+      description: Put a list of inventory item role objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InventoryItemRoleRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InventoryItemRoleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/InventoryItemRole'
+          description: ''
+    patch:
+      operationId: dcim_inventory_item_roles_bulk_partial_update
+      description: Patch a list of inventory item role objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InventoryItemRoleRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InventoryItemRoleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/InventoryItemRole'
+          description: ''
+    delete:
+      operationId: dcim_inventory_item_roles_bulk_destroy
+      description: Delete a list of inventory item role objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InventoryItemRoleRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InventoryItemRoleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/inventory-item-roles/{id}/:
+    get:
+      operationId: dcim_inventory_item_roles_retrieve
+      description: Get a inventory item role object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this inventory item role.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/InventoryItemRole'
+          description: ''
+    put:
+      operationId: dcim_inventory_item_roles_update
+      description: Put a inventory item role object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this inventory item role.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/InventoryItemRoleRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/InventoryItemRoleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/InventoryItemRole'
+          description: ''
+    patch:
+      operationId: dcim_inventory_item_roles_partial_update
+      description: Patch a inventory item role object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this inventory item role.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedInventoryItemRoleRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedInventoryItemRoleRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/InventoryItemRole'
+          description: ''
+    delete:
+      operationId: dcim_inventory_item_roles_destroy
+      description: Delete a inventory item role object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this inventory item role.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/inventory-item-templates/:
+    get:
+      operationId: dcim_inventory_item_templates_list
+      description: Get a list of inventory item template objects.
+      parameters:
+      - in: query
+        name: component_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: component_id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: component_id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: component_id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: component_id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: component_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: component_type
+        schema:
+          type: string
+      - in: query
+        name: component_type__n
+        schema:
+          type: string
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: devicetype_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: devicetype_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: label
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: manufacturer
+        schema:
+          type: array
+          items:
+            type: string
+        description: Manufacturer (slug)
+        explode: true
+        style: form
+      - in: query
+        name: manufacturer__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Manufacturer (slug)
+        explode: true
+        style: form
+      - in: query
+        name: manufacturer_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Manufacturer (ID)
+        explode: true
+        style: form
+      - in: query
+        name: manufacturer_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Manufacturer (ID)
+        explode: true
+        style: form
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: parent_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Parent inventory item (ID)
+        explode: true
+        style: form
+      - in: query
+        name: parent_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Parent inventory item (ID)
+        explode: true
+        style: form
+      - in: query
+        name: part_id
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_id__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_id__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_id__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_id__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_id__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_id__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_id__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_id__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_id__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_id__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: role
+        schema:
+          type: array
+          items:
+            type: string
+        description: Role (slug)
+        explode: true
+        style: form
+      - in: query
+        name: role__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Role (slug)
+        explode: true
+        style: form
+      - in: query
+        name: role_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Role (ID)
+        explode: true
+        style: form
+      - in: query
+        name: role_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Role (ID)
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedInventoryItemTemplateList'
+          description: ''
+    post:
+      operationId: dcim_inventory_item_templates_create
+      description: Post a list of inventory item template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableInventoryItemTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableInventoryItemTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/InventoryItemTemplate'
+          description: ''
+    put:
+      operationId: dcim_inventory_item_templates_bulk_update
+      description: Put a list of inventory item template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InventoryItemTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InventoryItemTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/InventoryItemTemplate'
+          description: ''
+    patch:
+      operationId: dcim_inventory_item_templates_bulk_partial_update
+      description: Patch a list of inventory item template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InventoryItemTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InventoryItemTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/InventoryItemTemplate'
+          description: ''
+    delete:
+      operationId: dcim_inventory_item_templates_bulk_destroy
+      description: Delete a list of inventory item template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InventoryItemTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InventoryItemTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/inventory-item-templates/{id}/:
+    get:
+      operationId: dcim_inventory_item_templates_retrieve
+      description: Get a inventory item template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this inventory item template.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/InventoryItemTemplate'
+          description: ''
+    put:
+      operationId: dcim_inventory_item_templates_update
+      description: Put a inventory item template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this inventory item template.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableInventoryItemTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableInventoryItemTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/InventoryItemTemplate'
+          description: ''
+    patch:
+      operationId: dcim_inventory_item_templates_partial_update
+      description: Patch a inventory item template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this inventory item template.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableInventoryItemTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableInventoryItemTemplateRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/InventoryItemTemplate'
+          description: ''
+    delete:
+      operationId: dcim_inventory_item_templates_destroy
+      description: Delete a inventory item template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this inventory item template.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/inventory-items/:
+    get:
+      operationId: dcim_inventory_items_list
+      description: Get a list of inventory item objects.
+      parameters:
+      - in: query
+        name: asset_tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: component_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: component_id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: component_id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: component_id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: component_id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: component_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: component_type
+        schema:
+          type: string
+      - in: query
+        name: component_type__n
+        schema:
+          type: string
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: device
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+        description: Device (name)
+        explode: true
+        style: form
+      - in: query
+        name: device__n
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+        description: Device (name)
+        explode: true
+        style: form
+      - in: query
+        name: device_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device (ID)
+        explode: true
+        style: form
+      - in: query
+        name: device_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device (ID)
+        explode: true
+        style: form
+      - in: query
+        name: discovered
+        schema:
+          type: boolean
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: label
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: location
+        schema:
+          type: array
+          items:
+            type: string
+        description: Location (slug)
+        explode: true
+        style: form
+      - in: query
+        name: location__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Location (slug)
+        explode: true
+        style: form
+      - in: query
+        name: location_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - in: query
+        name: location_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - in: query
+        name: manufacturer
+        schema:
+          type: array
+          items:
+            type: string
+        description: Manufacturer (slug)
+        explode: true
+        style: form
+      - in: query
+        name: manufacturer__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Manufacturer (slug)
+        explode: true
+        style: form
+      - in: query
+        name: manufacturer_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Manufacturer (ID)
+        explode: true
+        style: form
+      - in: query
+        name: manufacturer_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Manufacturer (ID)
+        explode: true
+        style: form
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: parent_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Parent inventory item (ID)
+        explode: true
+        style: form
+      - in: query
+        name: parent_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Parent inventory item (ID)
+        explode: true
+        style: form
+      - in: query
+        name: part_id
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_id__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_id__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_id__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_id__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_id__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_id__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_id__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_id__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_id__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_id__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: rack
+        schema:
+          type: array
+          items:
+            type: string
+        description: Rack (name)
+        explode: true
+        style: form
+      - in: query
+        name: rack__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Rack (name)
+        explode: true
+        style: form
+      - in: query
+        name: rack_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Rack (ID)
+        explode: true
+        style: form
+      - in: query
+        name: rack_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Rack (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: role
+        schema:
+          type: array
+          items:
+            type: string
+        description: Role (slug)
+        explode: true
+        style: form
+      - in: query
+        name: role__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Role (slug)
+        explode: true
+        style: form
+      - in: query
+        name: role_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Role (ID)
+        explode: true
+        style: form
+      - in: query
+        name: role_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Role (ID)
+        explode: true
+        style: form
+      - in: query
+        name: serial
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: site
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site name (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site name (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: virtual_chassis
+        schema:
+          type: array
+          items:
+            type: string
+        description: Virtual Chassis
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Virtual Chassis
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Virtual Chassis (ID)
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Virtual Chassis (ID)
+        explode: true
+        style: form
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedInventoryItemList'
+          description: ''
+    post:
+      operationId: dcim_inventory_items_create
+      description: Post a list of inventory item objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableInventoryItemRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableInventoryItemRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/InventoryItem'
+          description: ''
+    put:
+      operationId: dcim_inventory_items_bulk_update
+      description: Put a list of inventory item objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InventoryItemRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InventoryItemRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/InventoryItem'
+          description: ''
+    patch:
+      operationId: dcim_inventory_items_bulk_partial_update
+      description: Patch a list of inventory item objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InventoryItemRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InventoryItemRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/InventoryItem'
+          description: ''
+    delete:
+      operationId: dcim_inventory_items_bulk_destroy
+      description: Delete a list of inventory item objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InventoryItemRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/InventoryItemRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/inventory-items/{id}/:
+    get:
+      operationId: dcim_inventory_items_retrieve
+      description: Get a inventory item object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this inventory item.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/InventoryItem'
+          description: ''
+    put:
+      operationId: dcim_inventory_items_update
+      description: Put a inventory item object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this inventory item.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableInventoryItemRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableInventoryItemRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/InventoryItem'
+          description: ''
+    patch:
+      operationId: dcim_inventory_items_partial_update
+      description: Patch a inventory item object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this inventory item.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableInventoryItemRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableInventoryItemRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/InventoryItem'
+          description: ''
+    delete:
+      operationId: dcim_inventory_items_destroy
+      description: Delete a inventory item object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this inventory item.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/locations/:
+    get:
+      operationId: dcim_locations_list
+      description: Get a list of location objects.
+      parameters:
+      - in: query
+        name: contact
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact
+        explode: true
+        style: form
+      - in: query
+        name: contact__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact
+        explode: true
+        style: form
+      - in: query
+        name: contact_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group
+        explode: true
+        style: form
+      - in: query
+        name: contact_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group
+        explode: true
+        style: form
+      - in: query
+        name: contact_role
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact Role
+        explode: true
+        style: form
+      - in: query
+        name: contact_role__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact Role
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: parent
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (slug)
+        explode: true
+        style: form
+      - in: query
+        name: parent__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (slug)
+        explode: true
+        style: form
+      - in: query
+        name: parent_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - in: query
+        name: parent_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: region
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: slug
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: status
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `planned` - Planned
+          * `staging` - Staging
+          * `active` - Active
+          * `decommissioning` - Decommissioning
+          * `retired` - Retired
+        explode: true
+        style: form
+      - in: query
+        name: status__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `planned` - Planned
+          * `staging` - Staging
+          * `active` - Active
+          * `decommissioning` - Decommissioning
+          * `retired` - Retired
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tenant
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedLocationList'
+          description: ''
+    post:
+      operationId: dcim_locations_create
+      description: Post a list of location objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableLocationRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableLocationRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Location'
+          description: ''
+    put:
+      operationId: dcim_locations_bulk_update
+      description: Put a list of location objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/LocationRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/LocationRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Location'
+          description: ''
+    patch:
+      operationId: dcim_locations_bulk_partial_update
+      description: Patch a list of location objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/LocationRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/LocationRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Location'
+          description: ''
+    delete:
+      operationId: dcim_locations_bulk_destroy
+      description: Delete a list of location objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/LocationRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/LocationRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/locations/{id}/:
+    get:
+      operationId: dcim_locations_retrieve
+      description: Get a location object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this location.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Location'
+          description: ''
+    put:
+      operationId: dcim_locations_update
+      description: Put a location object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this location.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableLocationRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableLocationRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Location'
+          description: ''
+    patch:
+      operationId: dcim_locations_partial_update
+      description: Patch a location object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this location.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableLocationRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableLocationRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Location'
+          description: ''
+    delete:
+      operationId: dcim_locations_destroy
+      description: Delete a location object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this location.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/manufacturers/:
+    get:
+      operationId: dcim_manufacturers_list
+      description: Get a list of manufacturer objects.
+      parameters:
+      - in: query
+        name: contact
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact
+        explode: true
+        style: form
+      - in: query
+        name: contact__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact
+        explode: true
+        style: form
+      - in: query
+        name: contact_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group
+        explode: true
+        style: form
+      - in: query
+        name: contact_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group
+        explode: true
+        style: form
+      - in: query
+        name: contact_role
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact Role
+        explode: true
+        style: form
+      - in: query
+        name: contact_role__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact Role
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: slug
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedManufacturerList'
+          description: ''
+    post:
+      operationId: dcim_manufacturers_create
+      description: Post a list of manufacturer objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ManufacturerRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ManufacturerRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Manufacturer'
+          description: ''
+    put:
+      operationId: dcim_manufacturers_bulk_update
+      description: Put a list of manufacturer objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ManufacturerRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ManufacturerRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Manufacturer'
+          description: ''
+    patch:
+      operationId: dcim_manufacturers_bulk_partial_update
+      description: Patch a list of manufacturer objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ManufacturerRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ManufacturerRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Manufacturer'
+          description: ''
+    delete:
+      operationId: dcim_manufacturers_bulk_destroy
+      description: Delete a list of manufacturer objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ManufacturerRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ManufacturerRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/manufacturers/{id}/:
+    get:
+      operationId: dcim_manufacturers_retrieve
+      description: Get a manufacturer object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this manufacturer.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Manufacturer'
+          description: ''
+    put:
+      operationId: dcim_manufacturers_update
+      description: Put a manufacturer object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this manufacturer.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ManufacturerRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ManufacturerRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Manufacturer'
+          description: ''
+    patch:
+      operationId: dcim_manufacturers_partial_update
+      description: Patch a manufacturer object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this manufacturer.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedManufacturerRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedManufacturerRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Manufacturer'
+          description: ''
+    delete:
+      operationId: dcim_manufacturers_destroy
+      description: Delete a manufacturer object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this manufacturer.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/module-bay-templates/:
+    get:
+      operationId: dcim_module_bay_templates_list
+      description: Get a list of module bay template objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: devicetype_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: devicetype_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedModuleBayTemplateList'
+          description: ''
+    post:
+      operationId: dcim_module_bay_templates_create
+      description: Post a list of module bay template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableModuleBayTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableModuleBayTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ModuleBayTemplate'
+          description: ''
+    put:
+      operationId: dcim_module_bay_templates_bulk_update
+      description: Put a list of module bay template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ModuleBayTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ModuleBayTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ModuleBayTemplate'
+          description: ''
+    patch:
+      operationId: dcim_module_bay_templates_bulk_partial_update
+      description: Patch a list of module bay template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ModuleBayTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ModuleBayTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ModuleBayTemplate'
+          description: ''
+    delete:
+      operationId: dcim_module_bay_templates_bulk_destroy
+      description: Delete a list of module bay template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ModuleBayTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ModuleBayTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/module-bay-templates/{id}/:
+    get:
+      operationId: dcim_module_bay_templates_retrieve
+      description: Get a module bay template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this module bay template.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ModuleBayTemplate'
+          description: ''
+    put:
+      operationId: dcim_module_bay_templates_update
+      description: Put a module bay template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this module bay template.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableModuleBayTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableModuleBayTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ModuleBayTemplate'
+          description: ''
+    patch:
+      operationId: dcim_module_bay_templates_partial_update
+      description: Patch a module bay template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this module bay template.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableModuleBayTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableModuleBayTemplateRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ModuleBayTemplate'
+          description: ''
+    delete:
+      operationId: dcim_module_bay_templates_destroy
+      description: Delete a module bay template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this module bay template.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/module-bays/:
+    get:
+      operationId: dcim_module_bays_list
+      description: Get a list of module bay objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: device
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+        description: Device (name)
+        explode: true
+        style: form
+      - in: query
+        name: device__n
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+        description: Device (name)
+        explode: true
+        style: form
+      - in: query
+        name: device_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device (ID)
+        explode: true
+        style: form
+      - in: query
+        name: device_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device (ID)
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: label
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: location
+        schema:
+          type: array
+          items:
+            type: string
+        description: Location (slug)
+        explode: true
+        style: form
+      - in: query
+        name: location__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Location (slug)
+        explode: true
+        style: form
+      - in: query
+        name: location_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - in: query
+        name: location_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: rack
+        schema:
+          type: array
+          items:
+            type: string
+        description: Rack (name)
+        explode: true
+        style: form
+      - in: query
+        name: rack__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Rack (name)
+        explode: true
+        style: form
+      - in: query
+        name: rack_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Rack (ID)
+        explode: true
+        style: form
+      - in: query
+        name: rack_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Rack (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site name (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site name (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: virtual_chassis
+        schema:
+          type: array
+          items:
+            type: string
+        description: Virtual Chassis
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Virtual Chassis
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Virtual Chassis (ID)
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Virtual Chassis (ID)
+        explode: true
+        style: form
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedModuleBayList'
+          description: ''
+    post:
+      operationId: dcim_module_bays_create
+      description: Post a list of module bay objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableModuleBayRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableModuleBayRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ModuleBay'
+          description: ''
+    put:
+      operationId: dcim_module_bays_bulk_update
+      description: Put a list of module bay objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ModuleBayRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ModuleBayRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ModuleBay'
+          description: ''
+    patch:
+      operationId: dcim_module_bays_bulk_partial_update
+      description: Patch a list of module bay objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ModuleBayRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ModuleBayRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ModuleBay'
+          description: ''
+    delete:
+      operationId: dcim_module_bays_bulk_destroy
+      description: Delete a list of module bay objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ModuleBayRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ModuleBayRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/module-bays/{id}/:
+    get:
+      operationId: dcim_module_bays_retrieve
+      description: Get a module bay object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this module bay.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ModuleBay'
+          description: ''
+    put:
+      operationId: dcim_module_bays_update
+      description: Put a module bay object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this module bay.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableModuleBayRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableModuleBayRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ModuleBay'
+          description: ''
+    patch:
+      operationId: dcim_module_bays_partial_update
+      description: Patch a module bay object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this module bay.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableModuleBayRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableModuleBayRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ModuleBay'
+          description: ''
+    delete:
+      operationId: dcim_module_bays_destroy
+      description: Delete a module bay object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this module bay.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/module-types/:
+    get:
+      operationId: dcim_module_types_list
+      description: Get a list of module type objects.
+      parameters:
+      - in: query
+        name: console_ports
+        schema:
+          type: boolean
+        description: Has console ports
+      - in: query
+        name: console_server_ports
+        schema:
+          type: boolean
+        description: Has console server ports
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interfaces
+        schema:
+          type: boolean
+        description: Has interfaces
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: manufacturer
+        schema:
+          type: array
+          items:
+            type: string
+        description: Manufacturer (slug)
+        explode: true
+        style: form
+      - in: query
+        name: manufacturer__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Manufacturer (slug)
+        explode: true
+        style: form
+      - in: query
+        name: manufacturer_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Manufacturer (ID)
+        explode: true
+        style: form
+      - in: query
+        name: manufacturer_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Manufacturer (ID)
+        explode: true
+        style: form
+      - in: query
+        name: model
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: model__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: model__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: model__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: model__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: model__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: model__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: model__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: model__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: model__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: model__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: part_number
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_number__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_number__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_number__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_number__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_number__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_number__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_number__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_number__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_number__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: part_number__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: pass_through_ports
+        schema:
+          type: boolean
+        description: Has pass-through ports
+      - in: query
+        name: power_outlets
+        schema:
+          type: boolean
+        description: Has power outlets
+      - in: query
+        name: power_ports
+        schema:
+          type: boolean
+        description: Has power ports
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: weight
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: weight__gt
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: weight__gte
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: weight__lt
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: weight__lte
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: weight__n
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: weight_unit
+        schema:
+          type: string
+        description: |-
+          * `kg` - Kilograms
+          * `g` - Grams
+          * `lb` - Pounds
+          * `oz` - Ounces
+      - in: query
+        name: weight_unit__n
+        schema:
+          type: string
+        description: |-
+          * `kg` - Kilograms
+          * `g` - Grams
+          * `lb` - Pounds
+          * `oz` - Ounces
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedModuleTypeList'
+          description: ''
+    post:
+      operationId: dcim_module_types_create
+      description: Post a list of module type objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableModuleTypeRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableModuleTypeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ModuleType'
+          description: ''
+    put:
+      operationId: dcim_module_types_bulk_update
+      description: Put a list of module type objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ModuleTypeRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ModuleTypeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ModuleType'
+          description: ''
+    patch:
+      operationId: dcim_module_types_bulk_partial_update
+      description: Patch a list of module type objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ModuleTypeRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ModuleTypeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ModuleType'
+          description: ''
+    delete:
+      operationId: dcim_module_types_bulk_destroy
+      description: Delete a list of module type objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ModuleTypeRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ModuleTypeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/module-types/{id}/:
+    get:
+      operationId: dcim_module_types_retrieve
+      description: Get a module type object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this module type.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ModuleType'
+          description: ''
+    put:
+      operationId: dcim_module_types_update
+      description: Put a module type object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this module type.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableModuleTypeRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableModuleTypeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ModuleType'
+          description: ''
+    patch:
+      operationId: dcim_module_types_partial_update
+      description: Patch a module type object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this module type.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableModuleTypeRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableModuleTypeRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ModuleType'
+          description: ''
+    delete:
+      operationId: dcim_module_types_destroy
+      description: Delete a module type object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this module type.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/modules/:
+    get:
+      operationId: dcim_modules_list
+      description: Get a list of module objects.
+      parameters:
+      - in: query
+        name: asset_tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: device_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device (ID)
+        explode: true
+        style: form
+      - in: query
+        name: device_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device (ID)
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: manufacturer
+        schema:
+          type: array
+          items:
+            type: string
+        description: Manufacturer (slug)
+        explode: true
+        style: form
+      - in: query
+        name: manufacturer__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Manufacturer (slug)
+        explode: true
+        style: form
+      - in: query
+        name: manufacturer_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Manufacturer (ID)
+        explode: true
+        style: form
+      - in: query
+        name: manufacturer_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Manufacturer (ID)
+        explode: true
+        style: form
+      - in: query
+        name: module_bay_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Module Bay (ID)
+        explode: true
+        style: form
+      - in: query
+        name: module_bay_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Module Bay (ID)
+        explode: true
+        style: form
+      - in: query
+        name: module_type
+        schema:
+          type: array
+          items:
+            type: string
+        description: Module type (model)
+        explode: true
+        style: form
+      - in: query
+        name: module_type__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Module type (model)
+        explode: true
+        style: form
+      - in: query
+        name: module_type_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Module type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: module_type_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Module type (ID)
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: serial
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: status
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `offline` - Offline
+          * `active` - Active
+          * `planned` - Planned
+          * `staged` - Staged
+          * `failed` - Failed
+          * `decommissioning` - Decommissioning
+        explode: true
+        style: form
+      - in: query
+        name: status__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `offline` - Offline
+          * `active` - Active
+          * `planned` - Planned
+          * `staged` - Staged
+          * `failed` - Failed
+          * `decommissioning` - Decommissioning
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedModuleList'
+          description: ''
+    post:
+      operationId: dcim_modules_create
+      description: Post a list of module objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableModuleRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableModuleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Module'
+          description: ''
+    put:
+      operationId: dcim_modules_bulk_update
+      description: Put a list of module objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ModuleRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ModuleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Module'
+          description: ''
+    patch:
+      operationId: dcim_modules_bulk_partial_update
+      description: Patch a list of module objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ModuleRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ModuleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Module'
+          description: ''
+    delete:
+      operationId: dcim_modules_bulk_destroy
+      description: Delete a list of module objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ModuleRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ModuleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/modules/{id}/:
+    get:
+      operationId: dcim_modules_retrieve
+      description: Get a module object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this module.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Module'
+          description: ''
+    put:
+      operationId: dcim_modules_update
+      description: Put a module object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this module.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableModuleRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableModuleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Module'
+          description: ''
+    patch:
+      operationId: dcim_modules_partial_update
+      description: Patch a module object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this module.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableModuleRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableModuleRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Module'
+          description: ''
+    delete:
+      operationId: dcim_modules_destroy
+      description: Delete a module object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this module.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/platforms/:
+    get:
+      operationId: dcim_platforms_list
+      description: Get a list of platform objects.
+      parameters:
+      - in: query
+        name: config_template_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Config template (ID)
+        explode: true
+        style: form
+      - in: query
+        name: config_template_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Config template (ID)
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: manufacturer
+        schema:
+          type: array
+          items:
+            type: string
+        description: Manufacturer (slug)
+        explode: true
+        style: form
+      - in: query
+        name: manufacturer__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Manufacturer (slug)
+        explode: true
+        style: form
+      - in: query
+        name: manufacturer_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Manufacturer (ID)
+        explode: true
+        style: form
+      - in: query
+        name: manufacturer_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Manufacturer (ID)
+        explode: true
+        style: form
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: napalm_driver
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: napalm_driver__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: napalm_driver__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: napalm_driver__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: napalm_driver__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: napalm_driver__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: napalm_driver__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: napalm_driver__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: napalm_driver__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: napalm_driver__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: napalm_driver__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: slug
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedPlatformList'
+          description: ''
+    post:
+      operationId: dcim_platforms_create
+      description: Post a list of platform objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritablePlatformRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritablePlatformRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Platform'
+          description: ''
+    put:
+      operationId: dcim_platforms_bulk_update
+      description: Put a list of platform objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PlatformRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PlatformRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Platform'
+          description: ''
+    patch:
+      operationId: dcim_platforms_bulk_partial_update
+      description: Patch a list of platform objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PlatformRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PlatformRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Platform'
+          description: ''
+    delete:
+      operationId: dcim_platforms_bulk_destroy
+      description: Delete a list of platform objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PlatformRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PlatformRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/platforms/{id}/:
+    get:
+      operationId: dcim_platforms_retrieve
+      description: Get a platform object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this platform.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Platform'
+          description: ''
+    put:
+      operationId: dcim_platforms_update
+      description: Put a platform object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this platform.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritablePlatformRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritablePlatformRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Platform'
+          description: ''
+    patch:
+      operationId: dcim_platforms_partial_update
+      description: Patch a platform object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this platform.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritablePlatformRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritablePlatformRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Platform'
+          description: ''
+    delete:
+      operationId: dcim_platforms_destroy
+      description: Delete a platform object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this platform.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/power-feeds/:
+    get:
+      operationId: dcim_power_feeds_list
+      description: Get a list of power feed objects.
+      parameters:
+      - in: query
+        name: amperage
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: amperage__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: amperage__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: amperage__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: amperage__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: amperage__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: cable_end
+        schema:
+          type: string
+        description: |-
+          * `A` - A
+          * `B` - B
+      - in: query
+        name: cable_end__n
+        schema:
+          type: string
+        description: |-
+          * `A` - A
+          * `B` - B
+      - in: query
+        name: cabled
+        schema:
+          type: boolean
+      - in: query
+        name: connected
+        schema:
+          type: boolean
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: max_utilization
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: max_utilization__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: max_utilization__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: max_utilization__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: max_utilization__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: max_utilization__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: occupied
+        schema:
+          type: boolean
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: phase
+        schema:
+          type: string
+        description: |-
+          * `single-phase` - Single phase
+          * `three-phase` - Three-phase
+      - in: query
+        name: phase__n
+        schema:
+          type: string
+        description: |-
+          * `single-phase` - Single phase
+          * `three-phase` - Three-phase
+      - in: query
+        name: power_panel_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Power panel (ID)
+        explode: true
+        style: form
+      - in: query
+        name: power_panel_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Power panel (ID)
+        explode: true
+        style: form
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: rack_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Rack (ID)
+        explode: true
+        style: form
+      - in: query
+        name: rack_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Rack (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site name (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site name (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: status
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `offline` - Offline
+          * `active` - Active
+          * `planned` - Planned
+          * `failed` - Failed
+        explode: true
+        style: form
+      - in: query
+        name: status__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `offline` - Offline
+          * `active` - Active
+          * `planned` - Planned
+          * `failed` - Failed
+        explode: true
+        style: form
+      - in: query
+        name: supply
+        schema:
+          type: string
+        description: |-
+          * `ac` - AC
+          * `dc` - DC
+      - in: query
+        name: supply__n
+        schema:
+          type: string
+        description: |-
+          * `ac` - AC
+          * `dc` - DC
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: type
+        schema:
+          type: string
+        description: |-
+          * `primary` - Primary
+          * `redundant` - Redundant
+      - in: query
+        name: type__n
+        schema:
+          type: string
+        description: |-
+          * `primary` - Primary
+          * `redundant` - Redundant
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: voltage
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: voltage__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: voltage__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: voltage__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: voltage__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: voltage__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedPowerFeedList'
+          description: ''
+    post:
+      operationId: dcim_power_feeds_create
+      description: Post a list of power feed objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritablePowerFeedRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritablePowerFeedRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PowerFeed'
+          description: ''
+    put:
+      operationId: dcim_power_feeds_bulk_update
+      description: Put a list of power feed objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerFeedRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerFeedRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/PowerFeed'
+          description: ''
+    patch:
+      operationId: dcim_power_feeds_bulk_partial_update
+      description: Patch a list of power feed objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerFeedRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerFeedRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/PowerFeed'
+          description: ''
+    delete:
+      operationId: dcim_power_feeds_bulk_destroy
+      description: Delete a list of power feed objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerFeedRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerFeedRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/power-feeds/{id}/:
+    get:
+      operationId: dcim_power_feeds_retrieve
+      description: Get a power feed object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this power feed.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PowerFeed'
+          description: ''
+    put:
+      operationId: dcim_power_feeds_update
+      description: Put a power feed object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this power feed.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritablePowerFeedRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritablePowerFeedRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PowerFeed'
+          description: ''
+    patch:
+      operationId: dcim_power_feeds_partial_update
+      description: Patch a power feed object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this power feed.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritablePowerFeedRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritablePowerFeedRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PowerFeed'
+          description: ''
+    delete:
+      operationId: dcim_power_feeds_destroy
+      description: Delete a power feed object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this power feed.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/power-feeds/{id}/trace/:
+    get:
+      operationId: dcim_power_feeds_trace_retrieve
+      description: Trace a complete cable path and return each segment as a three-tuple
+        of (termination, cable, termination).
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this power feed.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PowerFeed'
+          description: ''
+  /api/dcim/power-outlet-templates/:
+    get:
+      operationId: dcim_power_outlet_templates_list
+      description: Get a list of power outlet template objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: devicetype_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Device type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: devicetype_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Device type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: feed_leg
+        schema:
+          type: array
+          items:
+            type: string
+        description: Phase (for three-phase feeds)
+        explode: true
+        style: form
+      - in: query
+        name: feed_leg__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Phase (for three-phase feeds)
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: moduletype_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Module type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: moduletype_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Module type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: type
+        schema:
+          type: string
+        description: |-
+          * `iec-60320-c5` - C5
+          * `iec-60320-c7` - C7
+          * `iec-60320-c13` - C13
+          * `iec-60320-c15` - C15
+          * `iec-60320-c19` - C19
+          * `iec-60320-c21` - C21
+          * `iec-60309-p-n-e-4h` - P+N+E 4H
+          * `iec-60309-p-n-e-6h` - P+N+E 6H
+          * `iec-60309-p-n-e-9h` - P+N+E 9H
+          * `iec-60309-2p-e-4h` - 2P+E 4H
+          * `iec-60309-2p-e-6h` - 2P+E 6H
+          * `iec-60309-2p-e-9h` - 2P+E 9H
+          * `iec-60309-3p-e-4h` - 3P+E 4H
+          * `iec-60309-3p-e-6h` - 3P+E 6H
+          * `iec-60309-3p-e-9h` - 3P+E 9H
+          * `iec-60309-3p-n-e-4h` - 3P+N+E 4H
+          * `iec-60309-3p-n-e-6h` - 3P+N+E 6H
+          * `iec-60309-3p-n-e-9h` - 3P+N+E 9H
+          * `nema-1-15r` - NEMA 1-15R
+          * `nema-5-15r` - NEMA 5-15R
+          * `nema-5-20r` - NEMA 5-20R
+          * `nema-5-30r` - NEMA 5-30R
+          * `nema-5-50r` - NEMA 5-50R
+          * `nema-6-15r` - NEMA 6-15R
+          * `nema-6-20r` - NEMA 6-20R
+          * `nema-6-30r` - NEMA 6-30R
+          * `nema-6-50r` - NEMA 6-50R
+          * `nema-10-30r` - NEMA 10-30R
+          * `nema-10-50r` - NEMA 10-50R
+          * `nema-14-20r` - NEMA 14-20R
+          * `nema-14-30r` - NEMA 14-30R
+          * `nema-14-50r` - NEMA 14-50R
+          * `nema-14-60r` - NEMA 14-60R
+          * `nema-15-15r` - NEMA 15-15R
+          * `nema-15-20r` - NEMA 15-20R
+          * `nema-15-30r` - NEMA 15-30R
+          * `nema-15-50r` - NEMA 15-50R
+          * `nema-15-60r` - NEMA 15-60R
+          * `nema-l1-15r` - NEMA L1-15R
+          * `nema-l5-15r` - NEMA L5-15R
+          * `nema-l5-20r` - NEMA L5-20R
+          * `nema-l5-30r` - NEMA L5-30R
+          * `nema-l5-50r` - NEMA L5-50R
+          * `nema-l6-15r` - NEMA L6-15R
+          * `nema-l6-20r` - NEMA L6-20R
+          * `nema-l6-30r` - NEMA L6-30R
+          * `nema-l6-50r` - NEMA L6-50R
+          * `nema-l10-30r` - NEMA L10-30R
+          * `nema-l14-20r` - NEMA L14-20R
+          * `nema-l14-30r` - NEMA L14-30R
+          * `nema-l14-50r` - NEMA L14-50R
+          * `nema-l14-60r` - NEMA L14-60R
+          * `nema-l15-20r` - NEMA L15-20R
+          * `nema-l15-30r` - NEMA L15-30R
+          * `nema-l15-50r` - NEMA L15-50R
+          * `nema-l15-60r` - NEMA L15-60R
+          * `nema-l21-20r` - NEMA L21-20R
+          * `nema-l21-30r` - NEMA L21-30R
+          * `nema-l22-30r` - NEMA L22-30R
+          * `CS6360C` - CS6360C
+          * `CS6364C` - CS6364C
+          * `CS8164C` - CS8164C
+          * `CS8264C` - CS8264C
+          * `CS8364C` - CS8364C
+          * `CS8464C` - CS8464C
+          * `ita-e` - ITA Type E (CEE 7/5)
+          * `ita-f` - ITA Type F (CEE 7/3)
+          * `ita-g` - ITA Type G (BS 1363)
+          * `ita-h` - ITA Type H
+          * `ita-i` - ITA Type I
+          * `ita-j` - ITA Type J
+          * `ita-k` - ITA Type K
+          * `ita-l` - ITA Type L (CEI 23-50)
+          * `ita-m` - ITA Type M (BS 546)
+          * `ita-n` - ITA Type N
+          * `ita-o` - ITA Type O
+          * `ita-multistandard` - ITA Multistandard
+          * `usb-a` - USB Type A
+          * `usb-micro-b` - USB Micro B
+          * `usb-c` - USB Type C
+          * `dc-terminal` - DC Terminal
+          * `hdot-cx` - HDOT Cx
+          * `saf-d-grid` - Saf-D-Grid
+          * `neutrik-powercon-20a` - Neutrik powerCON (20A)
+          * `neutrik-powercon-32a` - Neutrik powerCON (32A)
+          * `neutrik-powercon-true1` - Neutrik powerCON TRUE1
+          * `neutrik-powercon-true1-top` - Neutrik powerCON TRUE1 TOP
+          * `ubiquiti-smartpower` - Ubiquiti SmartPower
+          * `hardwired` - Hardwired
+          * `other` - Other
+      - in: query
+        name: type__n
+        schema:
+          type: string
+        description: |-
+          * `iec-60320-c5` - C5
+          * `iec-60320-c7` - C7
+          * `iec-60320-c13` - C13
+          * `iec-60320-c15` - C15
+          * `iec-60320-c19` - C19
+          * `iec-60320-c21` - C21
+          * `iec-60309-p-n-e-4h` - P+N+E 4H
+          * `iec-60309-p-n-e-6h` - P+N+E 6H
+          * `iec-60309-p-n-e-9h` - P+N+E 9H
+          * `iec-60309-2p-e-4h` - 2P+E 4H
+          * `iec-60309-2p-e-6h` - 2P+E 6H
+          * `iec-60309-2p-e-9h` - 2P+E 9H
+          * `iec-60309-3p-e-4h` - 3P+E 4H
+          * `iec-60309-3p-e-6h` - 3P+E 6H
+          * `iec-60309-3p-e-9h` - 3P+E 9H
+          * `iec-60309-3p-n-e-4h` - 3P+N+E 4H
+          * `iec-60309-3p-n-e-6h` - 3P+N+E 6H
+          * `iec-60309-3p-n-e-9h` - 3P+N+E 9H
+          * `nema-1-15r` - NEMA 1-15R
+          * `nema-5-15r` - NEMA 5-15R
+          * `nema-5-20r` - NEMA 5-20R
+          * `nema-5-30r` - NEMA 5-30R
+          * `nema-5-50r` - NEMA 5-50R
+          * `nema-6-15r` - NEMA 6-15R
+          * `nema-6-20r` - NEMA 6-20R
+          * `nema-6-30r` - NEMA 6-30R
+          * `nema-6-50r` - NEMA 6-50R
+          * `nema-10-30r` - NEMA 10-30R
+          * `nema-10-50r` - NEMA 10-50R
+          * `nema-14-20r` - NEMA 14-20R
+          * `nema-14-30r` - NEMA 14-30R
+          * `nema-14-50r` - NEMA 14-50R
+          * `nema-14-60r` - NEMA 14-60R
+          * `nema-15-15r` - NEMA 15-15R
+          * `nema-15-20r` - NEMA 15-20R
+          * `nema-15-30r` - NEMA 15-30R
+          * `nema-15-50r` - NEMA 15-50R
+          * `nema-15-60r` - NEMA 15-60R
+          * `nema-l1-15r` - NEMA L1-15R
+          * `nema-l5-15r` - NEMA L5-15R
+          * `nema-l5-20r` - NEMA L5-20R
+          * `nema-l5-30r` - NEMA L5-30R
+          * `nema-l5-50r` - NEMA L5-50R
+          * `nema-l6-15r` - NEMA L6-15R
+          * `nema-l6-20r` - NEMA L6-20R
+          * `nema-l6-30r` - NEMA L6-30R
+          * `nema-l6-50r` - NEMA L6-50R
+          * `nema-l10-30r` - NEMA L10-30R
+          * `nema-l14-20r` - NEMA L14-20R
+          * `nema-l14-30r` - NEMA L14-30R
+          * `nema-l14-50r` - NEMA L14-50R
+          * `nema-l14-60r` - NEMA L14-60R
+          * `nema-l15-20r` - NEMA L15-20R
+          * `nema-l15-30r` - NEMA L15-30R
+          * `nema-l15-50r` - NEMA L15-50R
+          * `nema-l15-60r` - NEMA L15-60R
+          * `nema-l21-20r` - NEMA L21-20R
+          * `nema-l21-30r` - NEMA L21-30R
+          * `nema-l22-30r` - NEMA L22-30R
+          * `CS6360C` - CS6360C
+          * `CS6364C` - CS6364C
+          * `CS8164C` - CS8164C
+          * `CS8264C` - CS8264C
+          * `CS8364C` - CS8364C
+          * `CS8464C` - CS8464C
+          * `ita-e` - ITA Type E (CEE 7/5)
+          * `ita-f` - ITA Type F (CEE 7/3)
+          * `ita-g` - ITA Type G (BS 1363)
+          * `ita-h` - ITA Type H
+          * `ita-i` - ITA Type I
+          * `ita-j` - ITA Type J
+          * `ita-k` - ITA Type K
+          * `ita-l` - ITA Type L (CEI 23-50)
+          * `ita-m` - ITA Type M (BS 546)
+          * `ita-n` - ITA Type N
+          * `ita-o` - ITA Type O
+          * `ita-multistandard` - ITA Multistandard
+          * `usb-a` - USB Type A
+          * `usb-micro-b` - USB Micro B
+          * `usb-c` - USB Type C
+          * `dc-terminal` - DC Terminal
+          * `hdot-cx` - HDOT Cx
+          * `saf-d-grid` - Saf-D-Grid
+          * `neutrik-powercon-20a` - Neutrik powerCON (20A)
+          * `neutrik-powercon-32a` - Neutrik powerCON (32A)
+          * `neutrik-powercon-true1` - Neutrik powerCON TRUE1
+          * `neutrik-powercon-true1-top` - Neutrik powerCON TRUE1 TOP
+          * `ubiquiti-smartpower` - Ubiquiti SmartPower
+          * `hardwired` - Hardwired
+          * `other` - Other
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedPowerOutletTemplateList'
+          description: ''
+    post:
+      operationId: dcim_power_outlet_templates_create
+      description: Post a list of power outlet template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritablePowerOutletTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritablePowerOutletTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PowerOutletTemplate'
+          description: ''
+    put:
+      operationId: dcim_power_outlet_templates_bulk_update
+      description: Put a list of power outlet template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerOutletTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerOutletTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/PowerOutletTemplate'
+          description: ''
+    patch:
+      operationId: dcim_power_outlet_templates_bulk_partial_update
+      description: Patch a list of power outlet template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerOutletTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerOutletTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/PowerOutletTemplate'
+          description: ''
+    delete:
+      operationId: dcim_power_outlet_templates_bulk_destroy
+      description: Delete a list of power outlet template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerOutletTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerOutletTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/power-outlet-templates/{id}/:
+    get:
+      operationId: dcim_power_outlet_templates_retrieve
+      description: Get a power outlet template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this power outlet template.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PowerOutletTemplate'
+          description: ''
+    put:
+      operationId: dcim_power_outlet_templates_update
+      description: Put a power outlet template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this power outlet template.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritablePowerOutletTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritablePowerOutletTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PowerOutletTemplate'
+          description: ''
+    patch:
+      operationId: dcim_power_outlet_templates_partial_update
+      description: Patch a power outlet template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this power outlet template.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritablePowerOutletTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritablePowerOutletTemplateRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PowerOutletTemplate'
+          description: ''
+    delete:
+      operationId: dcim_power_outlet_templates_destroy
+      description: Delete a power outlet template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this power outlet template.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/power-outlets/:
+    get:
+      operationId: dcim_power_outlets_list
+      description: Get a list of power outlet objects.
+      parameters:
+      - in: query
+        name: cable_end
+        schema:
+          type: string
+        description: |-
+          * `A` - A
+          * `B` - B
+      - in: query
+        name: cable_end__n
+        schema:
+          type: string
+        description: |-
+          * `A` - A
+          * `B` - B
+      - in: query
+        name: cabled
+        schema:
+          type: boolean
+      - in: query
+        name: connected
+        schema:
+          type: boolean
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: device
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+        description: Device (name)
+        explode: true
+        style: form
+      - in: query
+        name: device__n
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+        description: Device (name)
+        explode: true
+        style: form
+      - in: query
+        name: device_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device (ID)
+        explode: true
+        style: form
+      - in: query
+        name: device_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device (ID)
+        explode: true
+        style: form
+      - in: query
+        name: feed_leg
+        schema:
+          type: array
+          items:
+            type: string
+        description: Phase (for three-phase feeds)
+        explode: true
+        style: form
+      - in: query
+        name: feed_leg__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Phase (for three-phase feeds)
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: label
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: location
+        schema:
+          type: array
+          items:
+            type: string
+        description: Location (slug)
+        explode: true
+        style: form
+      - in: query
+        name: location__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Location (slug)
+        explode: true
+        style: form
+      - in: query
+        name: location_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - in: query
+        name: location_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - in: query
+        name: module_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Module (ID)
+        explode: true
+        style: form
+      - in: query
+        name: module_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Module (ID)
+        explode: true
+        style: form
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: occupied
+        schema:
+          type: boolean
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: rack
+        schema:
+          type: array
+          items:
+            type: string
+        description: Rack (name)
+        explode: true
+        style: form
+      - in: query
+        name: rack__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Rack (name)
+        explode: true
+        style: form
+      - in: query
+        name: rack_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Rack (ID)
+        explode: true
+        style: form
+      - in: query
+        name: rack_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Rack (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site name (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site name (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: type
+        schema:
+          type: array
+          items:
+            type: string
+        description: Physical port type
+        explode: true
+        style: form
+      - in: query
+        name: type__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Physical port type
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: virtual_chassis
+        schema:
+          type: array
+          items:
+            type: string
+        description: Virtual Chassis
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Virtual Chassis
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Virtual Chassis (ID)
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Virtual Chassis (ID)
+        explode: true
+        style: form
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedPowerOutletList'
+          description: ''
+    post:
+      operationId: dcim_power_outlets_create
+      description: Post a list of power outlet objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritablePowerOutletRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritablePowerOutletRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PowerOutlet'
+          description: ''
+    put:
+      operationId: dcim_power_outlets_bulk_update
+      description: Put a list of power outlet objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerOutletRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerOutletRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/PowerOutlet'
+          description: ''
+    patch:
+      operationId: dcim_power_outlets_bulk_partial_update
+      description: Patch a list of power outlet objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerOutletRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerOutletRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/PowerOutlet'
+          description: ''
+    delete:
+      operationId: dcim_power_outlets_bulk_destroy
+      description: Delete a list of power outlet objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerOutletRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerOutletRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/power-outlets/{id}/:
+    get:
+      operationId: dcim_power_outlets_retrieve
+      description: Get a power outlet object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this power outlet.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PowerOutlet'
+          description: ''
+    put:
+      operationId: dcim_power_outlets_update
+      description: Put a power outlet object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this power outlet.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritablePowerOutletRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritablePowerOutletRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PowerOutlet'
+          description: ''
+    patch:
+      operationId: dcim_power_outlets_partial_update
+      description: Patch a power outlet object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this power outlet.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritablePowerOutletRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritablePowerOutletRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PowerOutlet'
+          description: ''
+    delete:
+      operationId: dcim_power_outlets_destroy
+      description: Delete a power outlet object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this power outlet.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/power-outlets/{id}/trace/:
+    get:
+      operationId: dcim_power_outlets_trace_retrieve
+      description: Trace a complete cable path and return each segment as a three-tuple
+        of (termination, cable, termination).
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this power outlet.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PowerOutlet'
+          description: ''
+  /api/dcim/power-panels/:
+    get:
+      operationId: dcim_power_panels_list
+      description: Get a list of power panel objects.
+      parameters:
+      - in: query
+        name: contact
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact
+        explode: true
+        style: form
+      - in: query
+        name: contact__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact
+        explode: true
+        style: form
+      - in: query
+        name: contact_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group
+        explode: true
+        style: form
+      - in: query
+        name: contact_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group
+        explode: true
+        style: form
+      - in: query
+        name: contact_role
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact Role
+        explode: true
+        style: form
+      - in: query
+        name: contact_role__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact Role
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: location_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - in: query
+        name: location_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: region
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site name (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site name (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedPowerPanelList'
+          description: ''
+    post:
+      operationId: dcim_power_panels_create
+      description: Post a list of power panel objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritablePowerPanelRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritablePowerPanelRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PowerPanel'
+          description: ''
+    put:
+      operationId: dcim_power_panels_bulk_update
+      description: Put a list of power panel objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerPanelRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerPanelRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/PowerPanel'
+          description: ''
+    patch:
+      operationId: dcim_power_panels_bulk_partial_update
+      description: Patch a list of power panel objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerPanelRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerPanelRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/PowerPanel'
+          description: ''
+    delete:
+      operationId: dcim_power_panels_bulk_destroy
+      description: Delete a list of power panel objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerPanelRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerPanelRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/power-panels/{id}/:
+    get:
+      operationId: dcim_power_panels_retrieve
+      description: Get a power panel object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this power panel.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PowerPanel'
+          description: ''
+    put:
+      operationId: dcim_power_panels_update
+      description: Put a power panel object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this power panel.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritablePowerPanelRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritablePowerPanelRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PowerPanel'
+          description: ''
+    patch:
+      operationId: dcim_power_panels_partial_update
+      description: Patch a power panel object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this power panel.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritablePowerPanelRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritablePowerPanelRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PowerPanel'
+          description: ''
+    delete:
+      operationId: dcim_power_panels_destroy
+      description: Delete a power panel object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this power panel.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/power-port-templates/:
+    get:
+      operationId: dcim_power_port_templates_list
+      description: Get a list of power port template objects.
+      parameters:
+      - in: query
+        name: allocated_draw
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: allocated_draw__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: allocated_draw__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: allocated_draw__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: allocated_draw__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: allocated_draw__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: devicetype_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Device type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: devicetype_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Device type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: maximum_draw
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: maximum_draw__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: maximum_draw__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: maximum_draw__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: maximum_draw__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: maximum_draw__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: moduletype_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Module type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: moduletype_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Module type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: type
+        schema:
+          type: string
+        description: |-
+          * `iec-60320-c6` - C6
+          * `iec-60320-c8` - C8
+          * `iec-60320-c14` - C14
+          * `iec-60320-c16` - C16
+          * `iec-60320-c20` - C20
+          * `iec-60320-c22` - C22
+          * `iec-60309-p-n-e-4h` - P+N+E 4H
+          * `iec-60309-p-n-e-6h` - P+N+E 6H
+          * `iec-60309-p-n-e-9h` - P+N+E 9H
+          * `iec-60309-2p-e-4h` - 2P+E 4H
+          * `iec-60309-2p-e-6h` - 2P+E 6H
+          * `iec-60309-2p-e-9h` - 2P+E 9H
+          * `iec-60309-3p-e-4h` - 3P+E 4H
+          * `iec-60309-3p-e-6h` - 3P+E 6H
+          * `iec-60309-3p-e-9h` - 3P+E 9H
+          * `iec-60309-3p-n-e-4h` - 3P+N+E 4H
+          * `iec-60309-3p-n-e-6h` - 3P+N+E 6H
+          * `iec-60309-3p-n-e-9h` - 3P+N+E 9H
+          * `nema-1-15p` - NEMA 1-15P
+          * `nema-5-15p` - NEMA 5-15P
+          * `nema-5-20p` - NEMA 5-20P
+          * `nema-5-30p` - NEMA 5-30P
+          * `nema-5-50p` - NEMA 5-50P
+          * `nema-6-15p` - NEMA 6-15P
+          * `nema-6-20p` - NEMA 6-20P
+          * `nema-6-30p` - NEMA 6-30P
+          * `nema-6-50p` - NEMA 6-50P
+          * `nema-10-30p` - NEMA 10-30P
+          * `nema-10-50p` - NEMA 10-50P
+          * `nema-14-20p` - NEMA 14-20P
+          * `nema-14-30p` - NEMA 14-30P
+          * `nema-14-50p` - NEMA 14-50P
+          * `nema-14-60p` - NEMA 14-60P
+          * `nema-15-15p` - NEMA 15-15P
+          * `nema-15-20p` - NEMA 15-20P
+          * `nema-15-30p` - NEMA 15-30P
+          * `nema-15-50p` - NEMA 15-50P
+          * `nema-15-60p` - NEMA 15-60P
+          * `nema-l1-15p` - NEMA L1-15P
+          * `nema-l5-15p` - NEMA L5-15P
+          * `nema-l5-20p` - NEMA L5-20P
+          * `nema-l5-30p` - NEMA L5-30P
+          * `nema-l5-50p` - NEMA L5-50P
+          * `nema-l6-15p` - NEMA L6-15P
+          * `nema-l6-20p` - NEMA L6-20P
+          * `nema-l6-30p` - NEMA L6-30P
+          * `nema-l6-50p` - NEMA L6-50P
+          * `nema-l10-30p` - NEMA L10-30P
+          * `nema-l14-20p` - NEMA L14-20P
+          * `nema-l14-30p` - NEMA L14-30P
+          * `nema-l14-50p` - NEMA L14-50P
+          * `nema-l14-60p` - NEMA L14-60P
+          * `nema-l15-20p` - NEMA L15-20P
+          * `nema-l15-30p` - NEMA L15-30P
+          * `nema-l15-50p` - NEMA L15-50P
+          * `nema-l15-60p` - NEMA L15-60P
+          * `nema-l21-20p` - NEMA L21-20P
+          * `nema-l21-30p` - NEMA L21-30P
+          * `nema-l22-30p` - NEMA L22-30P
+          * `cs6361c` - CS6361C
+          * `cs6365c` - CS6365C
+          * `cs8165c` - CS8165C
+          * `cs8265c` - CS8265C
+          * `cs8365c` - CS8365C
+          * `cs8465c` - CS8465C
+          * `ita-c` - ITA Type C (CEE 7/16)
+          * `ita-e` - ITA Type E (CEE 7/6)
+          * `ita-f` - ITA Type F (CEE 7/4)
+          * `ita-ef` - ITA Type E/F (CEE 7/7)
+          * `ita-g` - ITA Type G (BS 1363)
+          * `ita-h` - ITA Type H
+          * `ita-i` - ITA Type I
+          * `ita-j` - ITA Type J
+          * `ita-k` - ITA Type K
+          * `ita-l` - ITA Type L (CEI 23-50)
+          * `ita-m` - ITA Type M (BS 546)
+          * `ita-n` - ITA Type N
+          * `ita-o` - ITA Type O
+          * `usb-a` - USB Type A
+          * `usb-b` - USB Type B
+          * `usb-c` - USB Type C
+          * `usb-mini-a` - USB Mini A
+          * `usb-mini-b` - USB Mini B
+          * `usb-micro-a` - USB Micro A
+          * `usb-micro-b` - USB Micro B
+          * `usb-micro-ab` - USB Micro AB
+          * `usb-3-b` - USB 3.0 Type B
+          * `usb-3-micro-b` - USB 3.0 Micro B
+          * `dc-terminal` - DC Terminal
+          * `saf-d-grid` - Saf-D-Grid
+          * `neutrik-powercon-20` - Neutrik powerCON (20A)
+          * `neutrik-powercon-32` - Neutrik powerCON (32A)
+          * `neutrik-powercon-true1` - Neutrik powerCON TRUE1
+          * `neutrik-powercon-true1-top` - Neutrik powerCON TRUE1 TOP
+          * `ubiquiti-smartpower` - Ubiquiti SmartPower
+          * `hardwired` - Hardwired
+          * `other` - Other
+      - in: query
+        name: type__n
+        schema:
+          type: string
+        description: |-
+          * `iec-60320-c6` - C6
+          * `iec-60320-c8` - C8
+          * `iec-60320-c14` - C14
+          * `iec-60320-c16` - C16
+          * `iec-60320-c20` - C20
+          * `iec-60320-c22` - C22
+          * `iec-60309-p-n-e-4h` - P+N+E 4H
+          * `iec-60309-p-n-e-6h` - P+N+E 6H
+          * `iec-60309-p-n-e-9h` - P+N+E 9H
+          * `iec-60309-2p-e-4h` - 2P+E 4H
+          * `iec-60309-2p-e-6h` - 2P+E 6H
+          * `iec-60309-2p-e-9h` - 2P+E 9H
+          * `iec-60309-3p-e-4h` - 3P+E 4H
+          * `iec-60309-3p-e-6h` - 3P+E 6H
+          * `iec-60309-3p-e-9h` - 3P+E 9H
+          * `iec-60309-3p-n-e-4h` - 3P+N+E 4H
+          * `iec-60309-3p-n-e-6h` - 3P+N+E 6H
+          * `iec-60309-3p-n-e-9h` - 3P+N+E 9H
+          * `nema-1-15p` - NEMA 1-15P
+          * `nema-5-15p` - NEMA 5-15P
+          * `nema-5-20p` - NEMA 5-20P
+          * `nema-5-30p` - NEMA 5-30P
+          * `nema-5-50p` - NEMA 5-50P
+          * `nema-6-15p` - NEMA 6-15P
+          * `nema-6-20p` - NEMA 6-20P
+          * `nema-6-30p` - NEMA 6-30P
+          * `nema-6-50p` - NEMA 6-50P
+          * `nema-10-30p` - NEMA 10-30P
+          * `nema-10-50p` - NEMA 10-50P
+          * `nema-14-20p` - NEMA 14-20P
+          * `nema-14-30p` - NEMA 14-30P
+          * `nema-14-50p` - NEMA 14-50P
+          * `nema-14-60p` - NEMA 14-60P
+          * `nema-15-15p` - NEMA 15-15P
+          * `nema-15-20p` - NEMA 15-20P
+          * `nema-15-30p` - NEMA 15-30P
+          * `nema-15-50p` - NEMA 15-50P
+          * `nema-15-60p` - NEMA 15-60P
+          * `nema-l1-15p` - NEMA L1-15P
+          * `nema-l5-15p` - NEMA L5-15P
+          * `nema-l5-20p` - NEMA L5-20P
+          * `nema-l5-30p` - NEMA L5-30P
+          * `nema-l5-50p` - NEMA L5-50P
+          * `nema-l6-15p` - NEMA L6-15P
+          * `nema-l6-20p` - NEMA L6-20P
+          * `nema-l6-30p` - NEMA L6-30P
+          * `nema-l6-50p` - NEMA L6-50P
+          * `nema-l10-30p` - NEMA L10-30P
+          * `nema-l14-20p` - NEMA L14-20P
+          * `nema-l14-30p` - NEMA L14-30P
+          * `nema-l14-50p` - NEMA L14-50P
+          * `nema-l14-60p` - NEMA L14-60P
+          * `nema-l15-20p` - NEMA L15-20P
+          * `nema-l15-30p` - NEMA L15-30P
+          * `nema-l15-50p` - NEMA L15-50P
+          * `nema-l15-60p` - NEMA L15-60P
+          * `nema-l21-20p` - NEMA L21-20P
+          * `nema-l21-30p` - NEMA L21-30P
+          * `nema-l22-30p` - NEMA L22-30P
+          * `cs6361c` - CS6361C
+          * `cs6365c` - CS6365C
+          * `cs8165c` - CS8165C
+          * `cs8265c` - CS8265C
+          * `cs8365c` - CS8365C
+          * `cs8465c` - CS8465C
+          * `ita-c` - ITA Type C (CEE 7/16)
+          * `ita-e` - ITA Type E (CEE 7/6)
+          * `ita-f` - ITA Type F (CEE 7/4)
+          * `ita-ef` - ITA Type E/F (CEE 7/7)
+          * `ita-g` - ITA Type G (BS 1363)
+          * `ita-h` - ITA Type H
+          * `ita-i` - ITA Type I
+          * `ita-j` - ITA Type J
+          * `ita-k` - ITA Type K
+          * `ita-l` - ITA Type L (CEI 23-50)
+          * `ita-m` - ITA Type M (BS 546)
+          * `ita-n` - ITA Type N
+          * `ita-o` - ITA Type O
+          * `usb-a` - USB Type A
+          * `usb-b` - USB Type B
+          * `usb-c` - USB Type C
+          * `usb-mini-a` - USB Mini A
+          * `usb-mini-b` - USB Mini B
+          * `usb-micro-a` - USB Micro A
+          * `usb-micro-b` - USB Micro B
+          * `usb-micro-ab` - USB Micro AB
+          * `usb-3-b` - USB 3.0 Type B
+          * `usb-3-micro-b` - USB 3.0 Micro B
+          * `dc-terminal` - DC Terminal
+          * `saf-d-grid` - Saf-D-Grid
+          * `neutrik-powercon-20` - Neutrik powerCON (20A)
+          * `neutrik-powercon-32` - Neutrik powerCON (32A)
+          * `neutrik-powercon-true1` - Neutrik powerCON TRUE1
+          * `neutrik-powercon-true1-top` - Neutrik powerCON TRUE1 TOP
+          * `ubiquiti-smartpower` - Ubiquiti SmartPower
+          * `hardwired` - Hardwired
+          * `other` - Other
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedPowerPortTemplateList'
+          description: ''
+    post:
+      operationId: dcim_power_port_templates_create
+      description: Post a list of power port template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritablePowerPortTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritablePowerPortTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PowerPortTemplate'
+          description: ''
+    put:
+      operationId: dcim_power_port_templates_bulk_update
+      description: Put a list of power port template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerPortTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerPortTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/PowerPortTemplate'
+          description: ''
+    patch:
+      operationId: dcim_power_port_templates_bulk_partial_update
+      description: Patch a list of power port template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerPortTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerPortTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/PowerPortTemplate'
+          description: ''
+    delete:
+      operationId: dcim_power_port_templates_bulk_destroy
+      description: Delete a list of power port template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerPortTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerPortTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/power-port-templates/{id}/:
+    get:
+      operationId: dcim_power_port_templates_retrieve
+      description: Get a power port template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this power port template.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PowerPortTemplate'
+          description: ''
+    put:
+      operationId: dcim_power_port_templates_update
+      description: Put a power port template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this power port template.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritablePowerPortTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritablePowerPortTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PowerPortTemplate'
+          description: ''
+    patch:
+      operationId: dcim_power_port_templates_partial_update
+      description: Patch a power port template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this power port template.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritablePowerPortTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritablePowerPortTemplateRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PowerPortTemplate'
+          description: ''
+    delete:
+      operationId: dcim_power_port_templates_destroy
+      description: Delete a power port template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this power port template.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/power-ports/:
+    get:
+      operationId: dcim_power_ports_list
+      description: Get a list of power port objects.
+      parameters:
+      - in: query
+        name: allocated_draw
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: allocated_draw__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: allocated_draw__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: allocated_draw__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: allocated_draw__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: allocated_draw__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: cable_end
+        schema:
+          type: string
+        description: |-
+          * `A` - A
+          * `B` - B
+      - in: query
+        name: cable_end__n
+        schema:
+          type: string
+        description: |-
+          * `A` - A
+          * `B` - B
+      - in: query
+        name: cabled
+        schema:
+          type: boolean
+      - in: query
+        name: connected
+        schema:
+          type: boolean
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: device
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+        description: Device (name)
+        explode: true
+        style: form
+      - in: query
+        name: device__n
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+        description: Device (name)
+        explode: true
+        style: form
+      - in: query
+        name: device_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device (ID)
+        explode: true
+        style: form
+      - in: query
+        name: device_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device (ID)
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: label
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: location
+        schema:
+          type: array
+          items:
+            type: string
+        description: Location (slug)
+        explode: true
+        style: form
+      - in: query
+        name: location__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Location (slug)
+        explode: true
+        style: form
+      - in: query
+        name: location_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - in: query
+        name: location_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - in: query
+        name: maximum_draw
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: maximum_draw__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: maximum_draw__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: maximum_draw__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: maximum_draw__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: maximum_draw__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: module_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Module (ID)
+        explode: true
+        style: form
+      - in: query
+        name: module_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Module (ID)
+        explode: true
+        style: form
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: occupied
+        schema:
+          type: boolean
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: rack
+        schema:
+          type: array
+          items:
+            type: string
+        description: Rack (name)
+        explode: true
+        style: form
+      - in: query
+        name: rack__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Rack (name)
+        explode: true
+        style: form
+      - in: query
+        name: rack_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Rack (ID)
+        explode: true
+        style: form
+      - in: query
+        name: rack_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Rack (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site name (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site name (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: type
+        schema:
+          type: array
+          items:
+            type: string
+        description: Physical port type
+        explode: true
+        style: form
+      - in: query
+        name: type__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Physical port type
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: virtual_chassis
+        schema:
+          type: array
+          items:
+            type: string
+        description: Virtual Chassis
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Virtual Chassis
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Virtual Chassis (ID)
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Virtual Chassis (ID)
+        explode: true
+        style: form
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedPowerPortList'
+          description: ''
+    post:
+      operationId: dcim_power_ports_create
+      description: Post a list of power port objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritablePowerPortRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritablePowerPortRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PowerPort'
+          description: ''
+    put:
+      operationId: dcim_power_ports_bulk_update
+      description: Put a list of power port objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerPortRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerPortRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/PowerPort'
+          description: ''
+    patch:
+      operationId: dcim_power_ports_bulk_partial_update
+      description: Patch a list of power port objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerPortRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerPortRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/PowerPort'
+          description: ''
+    delete:
+      operationId: dcim_power_ports_bulk_destroy
+      description: Delete a list of power port objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerPortRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PowerPortRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/power-ports/{id}/:
+    get:
+      operationId: dcim_power_ports_retrieve
+      description: Get a power port object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this power port.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PowerPort'
+          description: ''
+    put:
+      operationId: dcim_power_ports_update
+      description: Put a power port object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this power port.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritablePowerPortRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritablePowerPortRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PowerPort'
+          description: ''
+    patch:
+      operationId: dcim_power_ports_partial_update
+      description: Patch a power port object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this power port.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritablePowerPortRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritablePowerPortRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PowerPort'
+          description: ''
+    delete:
+      operationId: dcim_power_ports_destroy
+      description: Delete a power port object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this power port.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/power-ports/{id}/trace/:
+    get:
+      operationId: dcim_power_ports_trace_retrieve
+      description: Trace a complete cable path and return each segment as a three-tuple
+        of (termination, cable, termination).
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this power port.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PowerPort'
+          description: ''
+  /api/dcim/rack-reservations/:
+    get:
+      operationId: dcim_rack_reservations_list
+      description: Get a list of rack reservation objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: location
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (slug)
+        explode: true
+        style: form
+      - in: query
+        name: location__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (slug)
+        explode: true
+        style: form
+      - in: query
+        name: location_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - in: query
+        name: location_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: rack_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Rack (ID)
+        explode: true
+        style: form
+      - in: query
+        name: rack_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Rack (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tenant
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: user
+        schema:
+          type: array
+          items:
+            type: string
+        description: User (name)
+        explode: true
+        style: form
+      - in: query
+        name: user__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: User (name)
+        explode: true
+        style: form
+      - in: query
+        name: user_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: User (ID)
+        explode: true
+        style: form
+      - in: query
+        name: user_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: User (ID)
+        explode: true
+        style: form
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedRackReservationList'
+          description: ''
+    post:
+      operationId: dcim_rack_reservations_create
+      description: Post a list of rack reservation objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableRackReservationRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableRackReservationRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RackReservation'
+          description: ''
+    put:
+      operationId: dcim_rack_reservations_bulk_update
+      description: Put a list of rack reservation objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RackReservationRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RackReservationRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/RackReservation'
+          description: ''
+    patch:
+      operationId: dcim_rack_reservations_bulk_partial_update
+      description: Patch a list of rack reservation objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RackReservationRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RackReservationRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/RackReservation'
+          description: ''
+    delete:
+      operationId: dcim_rack_reservations_bulk_destroy
+      description: Delete a list of rack reservation objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RackReservationRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RackReservationRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/rack-reservations/{id}/:
+    get:
+      operationId: dcim_rack_reservations_retrieve
+      description: Get a rack reservation object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this rack reservation.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RackReservation'
+          description: ''
+    put:
+      operationId: dcim_rack_reservations_update
+      description: Put a rack reservation object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this rack reservation.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableRackReservationRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableRackReservationRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RackReservation'
+          description: ''
+    patch:
+      operationId: dcim_rack_reservations_partial_update
+      description: Patch a rack reservation object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this rack reservation.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableRackReservationRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableRackReservationRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RackReservation'
+          description: ''
+    delete:
+      operationId: dcim_rack_reservations_destroy
+      description: Delete a rack reservation object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this rack reservation.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/rack-roles/:
+    get:
+      operationId: dcim_rack_roles_list
+      description: Get a list of rack role objects.
+      parameters:
+      - in: query
+        name: color
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: slug
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedRackRoleList'
+          description: ''
+    post:
+      operationId: dcim_rack_roles_create
+      description: Post a list of rack role objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/RackRoleRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/RackRoleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RackRole'
+          description: ''
+    put:
+      operationId: dcim_rack_roles_bulk_update
+      description: Put a list of rack role objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RackRoleRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RackRoleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/RackRole'
+          description: ''
+    patch:
+      operationId: dcim_rack_roles_bulk_partial_update
+      description: Patch a list of rack role objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RackRoleRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RackRoleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/RackRole'
+          description: ''
+    delete:
+      operationId: dcim_rack_roles_bulk_destroy
+      description: Delete a list of rack role objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RackRoleRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RackRoleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/rack-roles/{id}/:
+    get:
+      operationId: dcim_rack_roles_retrieve
+      description: Get a rack role object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this rack role.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RackRole'
+          description: ''
+    put:
+      operationId: dcim_rack_roles_update
+      description: Put a rack role object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this rack role.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/RackRoleRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/RackRoleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RackRole'
+          description: ''
+    patch:
+      operationId: dcim_rack_roles_partial_update
+      description: Patch a rack role object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this rack role.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedRackRoleRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedRackRoleRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RackRole'
+          description: ''
+    delete:
+      operationId: dcim_rack_roles_destroy
+      description: Delete a rack role object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this rack role.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/racks/:
+    get:
+      operationId: dcim_racks_list
+      description: Get a list of rack objects.
+      parameters:
+      - in: query
+        name: asset_tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: asset_tag__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: contact
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact
+        explode: true
+        style: form
+      - in: query
+        name: contact__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact
+        explode: true
+        style: form
+      - in: query
+        name: contact_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group
+        explode: true
+        style: form
+      - in: query
+        name: contact_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group
+        explode: true
+        style: form
+      - in: query
+        name: contact_role
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact Role
+        explode: true
+        style: form
+      - in: query
+        name: contact_role__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact Role
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: desc_units
+        schema:
+          type: boolean
+      - in: query
+        name: facility_id
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: facility_id__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: facility_id__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: facility_id__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: facility_id__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: facility_id__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: facility_id__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: facility_id__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: facility_id__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: facility_id__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: facility_id__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: location
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (slug)
+        explode: true
+        style: form
+      - in: query
+        name: location__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (slug)
+        explode: true
+        style: form
+      - in: query
+        name: location_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - in: query
+        name: location_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - in: query
+        name: max_weight
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: max_weight__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: max_weight__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: max_weight__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: max_weight__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: max_weight__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: mounting_depth
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: mounting_depth__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: mounting_depth__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: mounting_depth__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: mounting_depth__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: mounting_depth__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: outer_depth
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: outer_depth__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: outer_depth__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: outer_depth__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: outer_depth__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: outer_depth__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: outer_unit
+        schema:
+          type: string
+        description: |-
+          * `mm` - Millimeters
+          * `in` - Inches
+      - in: query
+        name: outer_unit__n
+        schema:
+          type: string
+        description: |-
+          * `mm` - Millimeters
+          * `in` - Inches
+      - in: query
+        name: outer_width
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: outer_width__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: outer_width__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: outer_width__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: outer_width__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: outer_width__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: region
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: role
+        schema:
+          type: array
+          items:
+            type: string
+        description: Role (slug)
+        explode: true
+        style: form
+      - in: query
+        name: role__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Role (slug)
+        explode: true
+        style: form
+      - in: query
+        name: role_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Role (ID)
+        explode: true
+        style: form
+      - in: query
+        name: role_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Role (ID)
+        explode: true
+        style: form
+      - in: query
+        name: serial
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: serial__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: site
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: status
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `reserved` - Reserved
+          * `available` - Available
+          * `planned` - Planned
+          * `active` - Active
+          * `deprecated` - Deprecated
+        explode: true
+        style: form
+      - in: query
+        name: status__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `reserved` - Reserved
+          * `available` - Available
+          * `planned` - Planned
+          * `active` - Active
+          * `deprecated` - Deprecated
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tenant
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: type
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `2-post-frame` - 2-post frame
+          * `4-post-frame` - 4-post frame
+          * `4-post-cabinet` - 4-post cabinet
+          * `wall-frame` - Wall-mounted frame
+          * `wall-frame-vertical` - Wall-mounted frame (vertical)
+          * `wall-cabinet` - Wall-mounted cabinet
+          * `wall-cabinet-vertical` - Wall-mounted cabinet (vertical)
+        explode: true
+        style: form
+      - in: query
+        name: type__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `2-post-frame` - 2-post frame
+          * `4-post-frame` - 4-post frame
+          * `4-post-cabinet` - 4-post cabinet
+          * `wall-frame` - Wall-mounted frame
+          * `wall-frame-vertical` - Wall-mounted frame (vertical)
+          * `wall-cabinet` - Wall-mounted cabinet
+          * `wall-cabinet-vertical` - Wall-mounted cabinet (vertical)
+        explode: true
+        style: form
+      - in: query
+        name: u_height
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: u_height__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: u_height__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: u_height__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: u_height__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: u_height__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: weight
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: weight__gt
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: weight__gte
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: weight__lt
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: weight__lte
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: weight__n
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: weight_unit
+        schema:
+          type: string
+        description: |-
+          * `kg` - Kilograms
+          * `g` - Grams
+          * `lb` - Pounds
+          * `oz` - Ounces
+      - in: query
+        name: weight_unit__n
+        schema:
+          type: string
+        description: |-
+          * `kg` - Kilograms
+          * `g` - Grams
+          * `lb` - Pounds
+          * `oz` - Ounces
+      - in: query
+        name: width
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Rail-to-rail width
+        explode: true
+        style: form
+      - in: query
+        name: width__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Rail-to-rail width
+        explode: true
+        style: form
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedRackList'
+          description: ''
+    post:
+      operationId: dcim_racks_create
+      description: Post a list of rack objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableRackRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableRackRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Rack'
+          description: ''
+    put:
+      operationId: dcim_racks_bulk_update
+      description: Put a list of rack objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RackRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RackRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Rack'
+          description: ''
+    patch:
+      operationId: dcim_racks_bulk_partial_update
+      description: Patch a list of rack objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RackRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RackRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Rack'
+          description: ''
+    delete:
+      operationId: dcim_racks_bulk_destroy
+      description: Delete a list of rack objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RackRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RackRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/racks/{id}/:
+    get:
+      operationId: dcim_racks_retrieve
+      description: Get a rack object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this rack.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Rack'
+          description: ''
+    put:
+      operationId: dcim_racks_update
+      description: Put a rack object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this rack.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableRackRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableRackRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Rack'
+          description: ''
+    patch:
+      operationId: dcim_racks_partial_update
+      description: Patch a rack object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this rack.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableRackRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableRackRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Rack'
+          description: ''
+    delete:
+      operationId: dcim_racks_destroy
+      description: Delete a rack object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this rack.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/racks/{id}/elevation/:
+    get:
+      operationId: dcim_racks_elevation_retrieve
+      description: Rack elevation representing the list of rack units. Also supports
+        rendering the elevation as an SVG.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this rack.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Rack'
+          description: ''
+  /api/dcim/rear-port-templates/:
+    get:
+      operationId: dcim_rear_port_templates_list
+      description: Get a list of rear port template objects.
+      parameters:
+      - in: query
+        name: color
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: devicetype_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Device type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: devicetype_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Device type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: moduletype_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Module type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: moduletype_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Module type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: positions
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: positions__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: positions__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: positions__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: positions__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: positions__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: type
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `8p8c` - 8P8C
+          * `8p6c` - 8P6C
+          * `8p4c` - 8P4C
+          * `8p2c` - 8P2C
+          * `6p6c` - 6P6C
+          * `6p4c` - 6P4C
+          * `6p2c` - 6P2C
+          * `4p4c` - 4P4C
+          * `4p2c` - 4P2C
+          * `gg45` - GG45
+          * `tera-4p` - TERA 4P
+          * `tera-2p` - TERA 2P
+          * `tera-1p` - TERA 1P
+          * `110-punch` - 110 Punch
+          * `bnc` - BNC
+          * `f` - F Connector
+          * `n` - N Connector
+          * `mrj21` - MRJ21
+          * `fc` - FC
+          * `lc` - LC
+          * `lc-pc` - LC/PC
+          * `lc-upc` - LC/UPC
+          * `lc-apc` - LC/APC
+          * `lsh` - LSH
+          * `lsh-pc` - LSH/PC
+          * `lsh-upc` - LSH/UPC
+          * `lsh-apc` - LSH/APC
+          * `mpo` - MPO
+          * `mtrj` - MTRJ
+          * `sc` - SC
+          * `sc-pc` - SC/PC
+          * `sc-upc` - SC/UPC
+          * `sc-apc` - SC/APC
+          * `st` - ST
+          * `cs` - CS
+          * `sn` - SN
+          * `sma-905` - SMA 905
+          * `sma-906` - SMA 906
+          * `urm-p2` - URM-P2
+          * `urm-p4` - URM-P4
+          * `urm-p8` - URM-P8
+          * `splice` - Splice
+          * `other` - Other
+        explode: true
+        style: form
+      - in: query
+        name: type__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `8p8c` - 8P8C
+          * `8p6c` - 8P6C
+          * `8p4c` - 8P4C
+          * `8p2c` - 8P2C
+          * `6p6c` - 6P6C
+          * `6p4c` - 6P4C
+          * `6p2c` - 6P2C
+          * `4p4c` - 4P4C
+          * `4p2c` - 4P2C
+          * `gg45` - GG45
+          * `tera-4p` - TERA 4P
+          * `tera-2p` - TERA 2P
+          * `tera-1p` - TERA 1P
+          * `110-punch` - 110 Punch
+          * `bnc` - BNC
+          * `f` - F Connector
+          * `n` - N Connector
+          * `mrj21` - MRJ21
+          * `fc` - FC
+          * `lc` - LC
+          * `lc-pc` - LC/PC
+          * `lc-upc` - LC/UPC
+          * `lc-apc` - LC/APC
+          * `lsh` - LSH
+          * `lsh-pc` - LSH/PC
+          * `lsh-upc` - LSH/UPC
+          * `lsh-apc` - LSH/APC
+          * `mpo` - MPO
+          * `mtrj` - MTRJ
+          * `sc` - SC
+          * `sc-pc` - SC/PC
+          * `sc-upc` - SC/UPC
+          * `sc-apc` - SC/APC
+          * `st` - ST
+          * `cs` - CS
+          * `sn` - SN
+          * `sma-905` - SMA 905
+          * `sma-906` - SMA 906
+          * `urm-p2` - URM-P2
+          * `urm-p4` - URM-P4
+          * `urm-p8` - URM-P8
+          * `splice` - Splice
+          * `other` - Other
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedRearPortTemplateList'
+          description: ''
+    post:
+      operationId: dcim_rear_port_templates_create
+      description: Post a list of rear port template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableRearPortTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableRearPortTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RearPortTemplate'
+          description: ''
+    put:
+      operationId: dcim_rear_port_templates_bulk_update
+      description: Put a list of rear port template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RearPortTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RearPortTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/RearPortTemplate'
+          description: ''
+    patch:
+      operationId: dcim_rear_port_templates_bulk_partial_update
+      description: Patch a list of rear port template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RearPortTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RearPortTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/RearPortTemplate'
+          description: ''
+    delete:
+      operationId: dcim_rear_port_templates_bulk_destroy
+      description: Delete a list of rear port template objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RearPortTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RearPortTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/rear-port-templates/{id}/:
+    get:
+      operationId: dcim_rear_port_templates_retrieve
+      description: Get a rear port template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this rear port template.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RearPortTemplate'
+          description: ''
+    put:
+      operationId: dcim_rear_port_templates_update
+      description: Put a rear port template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this rear port template.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableRearPortTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableRearPortTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RearPortTemplate'
+          description: ''
+    patch:
+      operationId: dcim_rear_port_templates_partial_update
+      description: Patch a rear port template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this rear port template.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableRearPortTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableRearPortTemplateRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RearPortTemplate'
+          description: ''
+    delete:
+      operationId: dcim_rear_port_templates_destroy
+      description: Delete a rear port template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this rear port template.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/rear-ports/:
+    get:
+      operationId: dcim_rear_ports_list
+      description: Get a list of rear port objects.
+      parameters:
+      - in: query
+        name: cable_end
+        schema:
+          type: string
+        description: |-
+          * `A` - A
+          * `B` - B
+      - in: query
+        name: cable_end__n
+        schema:
+          type: string
+        description: |-
+          * `A` - A
+          * `B` - B
+      - in: query
+        name: cabled
+        schema:
+          type: boolean
+      - in: query
+        name: color
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: device
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+        description: Device (name)
+        explode: true
+        style: form
+      - in: query
+        name: device__n
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+        description: Device (name)
+        explode: true
+        style: form
+      - in: query
+        name: device_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device (ID)
+        explode: true
+        style: form
+      - in: query
+        name: device_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device (ID)
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: label
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: label__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: location
+        schema:
+          type: array
+          items:
+            type: string
+        description: Location (slug)
+        explode: true
+        style: form
+      - in: query
+        name: location__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Location (slug)
+        explode: true
+        style: form
+      - in: query
+        name: location_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - in: query
+        name: location_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location (ID)
+        explode: true
+        style: form
+      - in: query
+        name: module_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Module (ID)
+        explode: true
+        style: form
+      - in: query
+        name: module_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Module (ID)
+        explode: true
+        style: form
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: occupied
+        schema:
+          type: boolean
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: positions
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: positions__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: positions__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: positions__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: positions__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: positions__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: rack
+        schema:
+          type: array
+          items:
+            type: string
+        description: Rack (name)
+        explode: true
+        style: form
+      - in: query
+        name: rack__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Rack (name)
+        explode: true
+        style: form
+      - in: query
+        name: rack_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Rack (ID)
+        explode: true
+        style: form
+      - in: query
+        name: rack_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Rack (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site name (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site name (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: type
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `8p8c` - 8P8C
+          * `8p6c` - 8P6C
+          * `8p4c` - 8P4C
+          * `8p2c` - 8P2C
+          * `6p6c` - 6P6C
+          * `6p4c` - 6P4C
+          * `6p2c` - 6P2C
+          * `4p4c` - 4P4C
+          * `4p2c` - 4P2C
+          * `gg45` - GG45
+          * `tera-4p` - TERA 4P
+          * `tera-2p` - TERA 2P
+          * `tera-1p` - TERA 1P
+          * `110-punch` - 110 Punch
+          * `bnc` - BNC
+          * `f` - F Connector
+          * `n` - N Connector
+          * `mrj21` - MRJ21
+          * `fc` - FC
+          * `lc` - LC
+          * `lc-pc` - LC/PC
+          * `lc-upc` - LC/UPC
+          * `lc-apc` - LC/APC
+          * `lsh` - LSH
+          * `lsh-pc` - LSH/PC
+          * `lsh-upc` - LSH/UPC
+          * `lsh-apc` - LSH/APC
+          * `mpo` - MPO
+          * `mtrj` - MTRJ
+          * `sc` - SC
+          * `sc-pc` - SC/PC
+          * `sc-upc` - SC/UPC
+          * `sc-apc` - SC/APC
+          * `st` - ST
+          * `cs` - CS
+          * `sn` - SN
+          * `sma-905` - SMA 905
+          * `sma-906` - SMA 906
+          * `urm-p2` - URM-P2
+          * `urm-p4` - URM-P4
+          * `urm-p8` - URM-P8
+          * `splice` - Splice
+          * `other` - Other
+        explode: true
+        style: form
+      - in: query
+        name: type__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `8p8c` - 8P8C
+          * `8p6c` - 8P6C
+          * `8p4c` - 8P4C
+          * `8p2c` - 8P2C
+          * `6p6c` - 6P6C
+          * `6p4c` - 6P4C
+          * `6p2c` - 6P2C
+          * `4p4c` - 4P4C
+          * `4p2c` - 4P2C
+          * `gg45` - GG45
+          * `tera-4p` - TERA 4P
+          * `tera-2p` - TERA 2P
+          * `tera-1p` - TERA 1P
+          * `110-punch` - 110 Punch
+          * `bnc` - BNC
+          * `f` - F Connector
+          * `n` - N Connector
+          * `mrj21` - MRJ21
+          * `fc` - FC
+          * `lc` - LC
+          * `lc-pc` - LC/PC
+          * `lc-upc` - LC/UPC
+          * `lc-apc` - LC/APC
+          * `lsh` - LSH
+          * `lsh-pc` - LSH/PC
+          * `lsh-upc` - LSH/UPC
+          * `lsh-apc` - LSH/APC
+          * `mpo` - MPO
+          * `mtrj` - MTRJ
+          * `sc` - SC
+          * `sc-pc` - SC/PC
+          * `sc-upc` - SC/UPC
+          * `sc-apc` - SC/APC
+          * `st` - ST
+          * `cs` - CS
+          * `sn` - SN
+          * `sma-905` - SMA 905
+          * `sma-906` - SMA 906
+          * `urm-p2` - URM-P2
+          * `urm-p4` - URM-P4
+          * `urm-p8` - URM-P8
+          * `splice` - Splice
+          * `other` - Other
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: virtual_chassis
+        schema:
+          type: array
+          items:
+            type: string
+        description: Virtual Chassis
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Virtual Chassis
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Virtual Chassis (ID)
+        explode: true
+        style: form
+      - in: query
+        name: virtual_chassis_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Virtual Chassis (ID)
+        explode: true
+        style: form
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedRearPortList'
+          description: ''
+    post:
+      operationId: dcim_rear_ports_create
+      description: Post a list of rear port objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableRearPortRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableRearPortRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RearPort'
+          description: ''
+    put:
+      operationId: dcim_rear_ports_bulk_update
+      description: Put a list of rear port objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RearPortRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RearPortRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/RearPort'
+          description: ''
+    patch:
+      operationId: dcim_rear_ports_bulk_partial_update
+      description: Patch a list of rear port objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RearPortRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RearPortRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/RearPort'
+          description: ''
+    delete:
+      operationId: dcim_rear_ports_bulk_destroy
+      description: Delete a list of rear port objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RearPortRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RearPortRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/rear-ports/{id}/:
+    get:
+      operationId: dcim_rear_ports_retrieve
+      description: Get a rear port object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this rear port.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RearPort'
+          description: ''
+    put:
+      operationId: dcim_rear_ports_update
+      description: Put a rear port object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this rear port.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableRearPortRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableRearPortRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RearPort'
+          description: ''
+    patch:
+      operationId: dcim_rear_ports_partial_update
+      description: Patch a rear port object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this rear port.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableRearPortRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableRearPortRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RearPort'
+          description: ''
+    delete:
+      operationId: dcim_rear_ports_destroy
+      description: Delete a rear port object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this rear port.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/rear-ports/{id}/paths/:
+    get:
+      operationId: dcim_rear_ports_paths_retrieve
+      description: Return all CablePaths which traverse a given pass-through port.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this rear port.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RearPort'
+          description: ''
+  /api/dcim/regions/:
+    get:
+      operationId: dcim_regions_list
+      description: Get a list of region objects.
+      parameters:
+      - in: query
+        name: contact
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact
+        explode: true
+        style: form
+      - in: query
+        name: contact__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact
+        explode: true
+        style: form
+      - in: query
+        name: contact_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group
+        explode: true
+        style: form
+      - in: query
+        name: contact_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group
+        explode: true
+        style: form
+      - in: query
+        name: contact_role
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact Role
+        explode: true
+        style: form
+      - in: query
+        name: contact_role__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact Role
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: parent
+        schema:
+          type: array
+          items:
+            type: string
+        description: Parent region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: parent__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Parent region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: parent_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Parent region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: parent_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Parent region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: slug
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedRegionList'
+          description: ''
+    post:
+      operationId: dcim_regions_create
+      description: Post a list of region objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableRegionRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableRegionRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Region'
+          description: ''
+    put:
+      operationId: dcim_regions_bulk_update
+      description: Put a list of region objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RegionRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RegionRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Region'
+          description: ''
+    patch:
+      operationId: dcim_regions_bulk_partial_update
+      description: Patch a list of region objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RegionRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RegionRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Region'
+          description: ''
+    delete:
+      operationId: dcim_regions_bulk_destroy
+      description: Delete a list of region objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RegionRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RegionRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/regions/{id}/:
+    get:
+      operationId: dcim_regions_retrieve
+      description: Get a region object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this region.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Region'
+          description: ''
+    put:
+      operationId: dcim_regions_update
+      description: Put a region object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this region.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableRegionRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableRegionRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Region'
+          description: ''
+    patch:
+      operationId: dcim_regions_partial_update
+      description: Patch a region object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this region.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableRegionRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableRegionRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Region'
+          description: ''
+    delete:
+      operationId: dcim_regions_destroy
+      description: Delete a region object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this region.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/site-groups/:
+    get:
+      operationId: dcim_site_groups_list
+      description: Get a list of site group objects.
+      parameters:
+      - in: query
+        name: contact
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact
+        explode: true
+        style: form
+      - in: query
+        name: contact__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact
+        explode: true
+        style: form
+      - in: query
+        name: contact_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group
+        explode: true
+        style: form
+      - in: query
+        name: contact_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group
+        explode: true
+        style: form
+      - in: query
+        name: contact_role
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact Role
+        explode: true
+        style: form
+      - in: query
+        name: contact_role__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact Role
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: parent
+        schema:
+          type: array
+          items:
+            type: string
+        description: Parent site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: parent__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Parent site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: parent_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Parent site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: parent_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Parent site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: slug
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedSiteGroupList'
+          description: ''
+    post:
+      operationId: dcim_site_groups_create
+      description: Post a list of site group objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableSiteGroupRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableSiteGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SiteGroup'
+          description: ''
+    put:
+      operationId: dcim_site_groups_bulk_update
+      description: Put a list of site group objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/SiteGroupRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/SiteGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/SiteGroup'
+          description: ''
+    patch:
+      operationId: dcim_site_groups_bulk_partial_update
+      description: Patch a list of site group objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/SiteGroupRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/SiteGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/SiteGroup'
+          description: ''
+    delete:
+      operationId: dcim_site_groups_bulk_destroy
+      description: Delete a list of site group objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/SiteGroupRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/SiteGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/site-groups/{id}/:
+    get:
+      operationId: dcim_site_groups_retrieve
+      description: Get a site group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this site group.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SiteGroup'
+          description: ''
+    put:
+      operationId: dcim_site_groups_update
+      description: Put a site group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this site group.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableSiteGroupRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableSiteGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SiteGroup'
+          description: ''
+    patch:
+      operationId: dcim_site_groups_partial_update
+      description: Patch a site group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this site group.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableSiteGroupRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableSiteGroupRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SiteGroup'
+          description: ''
+    delete:
+      operationId: dcim_site_groups_destroy
+      description: Delete a site group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this site group.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/sites/:
+    get:
+      operationId: dcim_sites_list
+      description: Get a list of site objects.
+      parameters:
+      - in: query
+        name: asn
+        schema:
+          type: array
+          items:
+            type: integer
+            maximum: 4294967295
+            minimum: 1
+            format: int64
+        description: AS (ID)
+        explode: true
+        style: form
+      - in: query
+        name: asn__n
+        schema:
+          type: array
+          items:
+            type: integer
+            maximum: 4294967295
+            minimum: 1
+            format: int64
+        description: AS (ID)
+        explode: true
+        style: form
+      - in: query
+        name: asn_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: AS (ID)
+        explode: true
+        style: form
+      - in: query
+        name: asn_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: AS (ID)
+        explode: true
+        style: form
+      - in: query
+        name: contact
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact
+        explode: true
+        style: form
+      - in: query
+        name: contact__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact
+        explode: true
+        style: form
+      - in: query
+        name: contact_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group
+        explode: true
+        style: form
+      - in: query
+        name: contact_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group
+        explode: true
+        style: form
+      - in: query
+        name: contact_role
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact Role
+        explode: true
+        style: form
+      - in: query
+        name: contact_role__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact Role
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: facility
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: facility__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: facility__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: facility__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: facility__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: facility__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: facility__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: facility__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: facility__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: facility__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: facility__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: latitude
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: latitude__gt
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: latitude__gte
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: latitude__lt
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: latitude__lte
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: latitude__n
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: longitude
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: longitude__gt
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: longitude__gte
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: longitude__lt
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: longitude__lte
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: longitude__n
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: region
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: slug
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: status
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `planned` - Planned
+          * `staging` - Staging
+          * `active` - Active
+          * `decommissioning` - Decommissioning
+          * `retired` - Retired
+        explode: true
+        style: form
+      - in: query
+        name: status__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `planned` - Planned
+          * `staging` - Staging
+          * `active` - Active
+          * `decommissioning` - Decommissioning
+          * `retired` - Retired
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tenant
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedSiteList'
+          description: ''
+    post:
+      operationId: dcim_sites_create
+      description: Post a list of site objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableSiteRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableSiteRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Site'
+          description: ''
+    put:
+      operationId: dcim_sites_bulk_update
+      description: Put a list of site objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/SiteRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/SiteRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Site'
+          description: ''
+    patch:
+      operationId: dcim_sites_bulk_partial_update
+      description: Patch a list of site objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/SiteRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/SiteRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Site'
+          description: ''
+    delete:
+      operationId: dcim_sites_bulk_destroy
+      description: Delete a list of site objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/SiteRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/SiteRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/sites/{id}/:
+    get:
+      operationId: dcim_sites_retrieve
+      description: Get a site object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this site.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Site'
+          description: ''
+    put:
+      operationId: dcim_sites_update
+      description: Put a site object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this site.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableSiteRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableSiteRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Site'
+          description: ''
+    patch:
+      operationId: dcim_sites_partial_update
+      description: Patch a site object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this site.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableSiteRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableSiteRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Site'
+          description: ''
+    delete:
+      operationId: dcim_sites_destroy
+      description: Delete a site object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this site.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/virtual-chassis/:
+    get:
+      operationId: dcim_virtual_chassis_list
+      description: Get a list of virtual chassis objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: domain
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: domain__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: domain__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: domain__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: domain__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: domain__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: domain__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: domain__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: domain__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: domain__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: domain__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: master
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+        description: Master (name)
+        explode: true
+        style: form
+      - in: query
+        name: master__n
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+        description: Master (name)
+        explode: true
+        style: form
+      - in: query
+        name: master_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Master (ID)
+        explode: true
+        style: form
+      - in: query
+        name: master_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Master (ID)
+        explode: true
+        style: form
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: region
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site name (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site name (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tenant
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedVirtualChassisList'
+          description: ''
+    post:
+      operationId: dcim_virtual_chassis_create
+      description: Post a list of virtual chassis objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableVirtualChassisRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableVirtualChassisRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VirtualChassis'
+          description: ''
+    put:
+      operationId: dcim_virtual_chassis_bulk_update
+      description: Put a list of virtual chassis objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VirtualChassisRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VirtualChassisRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/VirtualChassis'
+          description: ''
+    patch:
+      operationId: dcim_virtual_chassis_bulk_partial_update
+      description: Patch a list of virtual chassis objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VirtualChassisRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VirtualChassisRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/VirtualChassis'
+          description: ''
+    delete:
+      operationId: dcim_virtual_chassis_bulk_destroy
+      description: Delete a list of virtual chassis objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VirtualChassisRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VirtualChassisRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/virtual-chassis/{id}/:
+    get:
+      operationId: dcim_virtual_chassis_retrieve
+      description: Get a virtual chassis object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this virtual chassis.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VirtualChassis'
+          description: ''
+    put:
+      operationId: dcim_virtual_chassis_update
+      description: Put a virtual chassis object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this virtual chassis.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableVirtualChassisRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableVirtualChassisRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VirtualChassis'
+          description: ''
+    patch:
+      operationId: dcim_virtual_chassis_partial_update
+      description: Patch a virtual chassis object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this virtual chassis.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableVirtualChassisRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableVirtualChassisRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VirtualChassis'
+          description: ''
+    delete:
+      operationId: dcim_virtual_chassis_destroy
+      description: Delete a virtual chassis object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this virtual chassis.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/virtual-device-contexts/:
+    get:
+      operationId: dcim_virtual_device_contexts_list
+      description: Get a list of virtual device context objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: device
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device model
+        explode: true
+        style: form
+      - in: query
+        name: device__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device model
+        explode: true
+        style: form
+      - in: query
+        name: device_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: VDC (ID)
+        explode: true
+        style: form
+      - in: query
+        name: device_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: VDC (ID)
+        explode: true
+        style: form
+      - in: query
+        name: has_primary_ip
+        schema:
+          type: boolean
+        description: Has a primary IP
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: status
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `active` - Active
+          * `planned` - Planned
+          * `offline` - Offline
+        explode: true
+        style: form
+      - in: query
+        name: status__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `active` - Active
+          * `planned` - Planned
+          * `offline` - Offline
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tenant
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedVirtualDeviceContextList'
+          description: ''
+    post:
+      operationId: dcim_virtual_device_contexts_create
+      description: Post a list of virtual device context objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableVirtualDeviceContextRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableVirtualDeviceContextRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VirtualDeviceContext'
+          description: ''
+    put:
+      operationId: dcim_virtual_device_contexts_bulk_update
+      description: Put a list of virtual device context objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VirtualDeviceContextRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VirtualDeviceContextRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/VirtualDeviceContext'
+          description: ''
+    patch:
+      operationId: dcim_virtual_device_contexts_bulk_partial_update
+      description: Patch a list of virtual device context objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VirtualDeviceContextRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VirtualDeviceContextRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/VirtualDeviceContext'
+          description: ''
+    delete:
+      operationId: dcim_virtual_device_contexts_bulk_destroy
+      description: Delete a list of virtual device context objects.
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VirtualDeviceContextRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VirtualDeviceContextRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/dcim/virtual-device-contexts/{id}/:
+    get:
+      operationId: dcim_virtual_device_contexts_retrieve
+      description: Get a virtual device context object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this virtual device context.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VirtualDeviceContext'
+          description: ''
+    put:
+      operationId: dcim_virtual_device_contexts_update
+      description: Put a virtual device context object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this virtual device context.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableVirtualDeviceContextRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableVirtualDeviceContextRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VirtualDeviceContext'
+          description: ''
+    patch:
+      operationId: dcim_virtual_device_contexts_partial_update
+      description: Patch a virtual device context object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this virtual device context.
+        required: true
+      tags:
+      - dcim
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableVirtualDeviceContextRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableVirtualDeviceContextRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VirtualDeviceContext'
+          description: ''
+    delete:
+      operationId: dcim_virtual_device_contexts_destroy
+      description: Delete a virtual device context object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this virtual device context.
+        required: true
+      tags:
+      - dcim
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/extras/config-contexts/:
+    get:
+      operationId: extras_config_contexts_list
+      description: Get a list of config context objects.
+      parameters:
+      - in: query
+        name: cluster_group
+        schema:
+          type: array
+          items:
+            type: string
+        description: Cluster group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: cluster_group__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Cluster group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: cluster_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Cluster group
+        explode: true
+        style: form
+      - in: query
+        name: cluster_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Cluster group
+        explode: true
+        style: form
+      - in: query
+        name: cluster_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Cluster
+        explode: true
+        style: form
+      - in: query
+        name: cluster_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Cluster
+        explode: true
+        style: form
+      - in: query
+        name: cluster_type
+        schema:
+          type: array
+          items:
+            type: string
+        description: Cluster type (slug)
+        explode: true
+        style: form
+      - in: query
+        name: cluster_type__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Cluster type (slug)
+        explode: true
+        style: form
+      - in: query
+        name: cluster_type_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Cluster type
+        explode: true
+        style: form
+      - in: query
+        name: cluster_type_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Cluster type
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: data_file_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Data file (ID)
+        explode: true
+        style: form
+      - in: query
+        name: data_file_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Data file (ID)
+        explode: true
+        style: form
+      - in: query
+        name: data_source_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Data source (ID)
+        explode: true
+        style: form
+      - in: query
+        name: data_source_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Data source (ID)
+        explode: true
+        style: form
+      - in: query
+        name: data_synced
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: data_synced__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: data_synced__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: data_synced__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: data_synced__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: data_synced__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: device_type_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device type
+        explode: true
+        style: form
+      - in: query
+        name: device_type_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device type
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: is_active
+        schema:
+          type: boolean
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: location
+        schema:
+          type: array
+          items:
+            type: string
+        description: Location (slug)
+        explode: true
+        style: form
+      - in: query
+        name: location__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Location (slug)
+        explode: true
+        style: form
+      - in: query
+        name: location_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location
+        explode: true
+        style: form
+      - in: query
+        name: location_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Location
+        explode: true
+        style: form
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: platform
+        schema:
+          type: array
+          items:
+            type: string
+        description: Platform (slug)
+        explode: true
+        style: form
+      - in: query
+        name: platform__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Platform (slug)
+        explode: true
+        style: form
+      - in: query
+        name: platform_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Platform
+        explode: true
+        style: form
+      - in: query
+        name: platform_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Platform
+        explode: true
+        style: form
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: region
+        schema:
+          type: array
+          items:
+            type: string
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region
+        explode: true
+        style: form
+      - in: query
+        name: region_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region
+        explode: true
+        style: form
+      - in: query
+        name: role
+        schema:
+          type: array
+          items:
+            type: string
+        description: Role (slug)
+        explode: true
+        style: form
+      - in: query
+        name: role__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Role (slug)
+        explode: true
+        style: form
+      - in: query
+        name: role_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Role
+        explode: true
+        style: form
+      - in: query
+        name: role_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Role
+        explode: true
+        style: form
+      - in: query
+        name: site
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group
+        explode: true
+        style: form
+      - in: query
+        name: site_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site
+        explode: true
+        style: form
+      - in: query
+        name: site_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tag (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tag (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tag_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tag
+        explode: true
+        style: form
+      - in: query
+        name: tag_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tag
+        explode: true
+        style: form
+      - in: query
+        name: tenant
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant group
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant group
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedConfigContextList'
+          description: ''
+    post:
+      operationId: extras_config_contexts_create
+      description: Post a list of config context objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableConfigContextRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableConfigContextRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConfigContext'
+          description: ''
+    put:
+      operationId: extras_config_contexts_bulk_update
+      description: Put a list of config context objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConfigContextRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConfigContextRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ConfigContext'
+          description: ''
+    patch:
+      operationId: extras_config_contexts_bulk_partial_update
+      description: Patch a list of config context objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConfigContextRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConfigContextRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ConfigContext'
+          description: ''
+    delete:
+      operationId: extras_config_contexts_bulk_destroy
+      description: Delete a list of config context objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConfigContextRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConfigContextRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/extras/config-contexts/{id}/:
+    get:
+      operationId: extras_config_contexts_retrieve
+      description: Get a config context object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this config context.
+        required: true
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConfigContext'
+          description: ''
+    put:
+      operationId: extras_config_contexts_update
+      description: Put a config context object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this config context.
+        required: true
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableConfigContextRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableConfigContextRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConfigContext'
+          description: ''
+    patch:
+      operationId: extras_config_contexts_partial_update
+      description: Patch a config context object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this config context.
+        required: true
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableConfigContextRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableConfigContextRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConfigContext'
+          description: ''
+    delete:
+      operationId: extras_config_contexts_destroy
+      description: Delete a config context object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this config context.
+        required: true
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/extras/config-contexts/{id}/sync/:
+    post:
+      operationId: extras_config_contexts_sync_create
+      description: Provide a /sync API endpoint to synchronize an object's data from
+        its associated DataFile (if any).
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this config context.
+        required: true
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableConfigContextRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableConfigContextRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConfigContext'
+          description: ''
+  /api/extras/config-templates/:
+    get:
+      operationId: extras_config_templates_list
+      description: Get a list of config template objects.
+      parameters:
+      - in: query
+        name: data_file_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Data file (ID)
+        explode: true
+        style: form
+      - in: query
+        name: data_file_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Data file (ID)
+        explode: true
+        style: form
+      - in: query
+        name: data_source_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Data source (ID)
+        explode: true
+        style: form
+      - in: query
+        name: data_source_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Data source (ID)
+        explode: true
+        style: form
+      - in: query
+        name: data_synced
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: data_synced__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: data_synced__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: data_synced__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: data_synced__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: data_synced__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedConfigTemplateList'
+          description: ''
+    post:
+      operationId: extras_config_templates_create
+      description: Post a list of config template objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableConfigTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableConfigTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConfigTemplate'
+          description: ''
+    put:
+      operationId: extras_config_templates_bulk_update
+      description: Put a list of config template objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConfigTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConfigTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ConfigTemplate'
+          description: ''
+    patch:
+      operationId: extras_config_templates_bulk_partial_update
+      description: Patch a list of config template objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConfigTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConfigTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ConfigTemplate'
+          description: ''
+    delete:
+      operationId: extras_config_templates_bulk_destroy
+      description: Delete a list of config template objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConfigTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ConfigTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/extras/config-templates/{id}/:
+    get:
+      operationId: extras_config_templates_retrieve
+      description: Get a config template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this config template.
+        required: true
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConfigTemplate'
+          description: ''
+    put:
+      operationId: extras_config_templates_update
+      description: Put a config template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this config template.
+        required: true
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableConfigTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableConfigTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConfigTemplate'
+          description: ''
+    patch:
+      operationId: extras_config_templates_partial_update
+      description: Patch a config template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this config template.
+        required: true
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableConfigTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableConfigTemplateRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConfigTemplate'
+          description: ''
+    delete:
+      operationId: extras_config_templates_destroy
+      description: Delete a config template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this config template.
+        required: true
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/extras/config-templates/{id}/render/:
+    post:
+      operationId: extras_config_templates_render_create
+      description: |-
+        Render a ConfigTemplate using the context data provided (if any). If the client requests "text/plain" data,
+        return the raw rendered content, rather than serialized JSON.
+      parameters:
+      - in: query
+        name: format
+        schema:
+          type: string
+          enum:
+          - json
+          - txt
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this config template.
+        required: true
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableConfigTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableConfigTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConfigTemplate'
+            text/plain:
+              schema:
+                $ref: '#/components/schemas/ConfigTemplate'
+          description: ''
+  /api/extras/config-templates/{id}/sync/:
+    post:
+      operationId: extras_config_templates_sync_create
+      description: Provide a /sync API endpoint to synchronize an object's data from
+        its associated DataFile (if any).
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this config template.
+        required: true
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableConfigTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableConfigTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConfigTemplate'
+          description: ''
+  /api/extras/content-types/:
+    get:
+      operationId: extras_content_types_list
+      description: Read-only list of ContentTypes. Limit results to ContentTypes pertinent
+        to NetBox objects.
+      parameters:
+      - in: query
+        name: app_label
+        schema:
+          type: string
+      - in: query
+        name: id
+        schema:
+          type: integer
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: model
+        schema:
+          type: string
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedContentTypeList'
+          description: ''
+  /api/extras/content-types/{id}/:
+    get:
+      operationId: extras_content_types_retrieve
+      description: Read-only list of ContentTypes. Limit results to ContentTypes pertinent
+        to NetBox objects.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this content type.
+        required: true
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ContentType'
+          description: ''
+  /api/extras/custom-fields/:
+    get:
+      operationId: extras_custom_fields_list
+      description: Get a list of custom field objects.
+      parameters:
+      - in: query
+        name: content_type_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_type_id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_type_id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_type_id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_type_id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_type_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_types
+        schema:
+          type: string
+      - in: query
+        name: content_types__ic
+        schema:
+          type: string
+      - in: query
+        name: content_types__ie
+        schema:
+          type: string
+      - in: query
+        name: content_types__iew
+        schema:
+          type: string
+      - in: query
+        name: content_types__isw
+        schema:
+          type: string
+      - in: query
+        name: content_types__n
+        schema:
+          type: string
+      - in: query
+        name: content_types__nic
+        schema:
+          type: string
+      - in: query
+        name: content_types__nie
+        schema:
+          type: string
+      - in: query
+        name: content_types__niew
+        schema:
+          type: string
+      - in: query
+        name: content_types__nisw
+        schema:
+          type: string
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: filter_logic
+        schema:
+          type: string
+        description: Loose matches any instance of a given string; exact matches the
+          entire field.
+      - in: query
+        name: filter_logic__n
+        schema:
+          type: string
+        description: Loose matches any instance of a given string; exact matches the
+          entire field.
+      - in: query
+        name: group_name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: group_name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: group_name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: group_name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: group_name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: group_name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: group_name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: group_name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: group_name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: group_name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: group_name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: is_cloneable
+        schema:
+          type: boolean
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: required
+        schema:
+          type: boolean
+      - in: query
+        name: search_weight
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: search_weight__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: search_weight__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: search_weight__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: search_weight__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: search_weight__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: type
+        schema:
+          type: array
+          items:
+            type: string
+        description: The type of data this custom field holds
+        explode: true
+        style: form
+      - in: query
+        name: type__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: The type of data this custom field holds
+        explode: true
+        style: form
+      - in: query
+        name: ui_visibility
+        schema:
+          type: string
+        description: Specifies the visibility of custom field in the UI
+      - in: query
+        name: ui_visibility__n
+        schema:
+          type: string
+        description: Specifies the visibility of custom field in the UI
+      - in: query
+        name: weight
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: weight__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: weight__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: weight__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: weight__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: weight__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedCustomFieldList'
+          description: ''
+    post:
+      operationId: extras_custom_fields_create
+      description: Post a list of custom field objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableCustomFieldRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableCustomFieldRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CustomField'
+          description: ''
+    put:
+      operationId: extras_custom_fields_bulk_update
+      description: Put a list of custom field objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CustomFieldRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CustomFieldRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/CustomField'
+          description: ''
+    patch:
+      operationId: extras_custom_fields_bulk_partial_update
+      description: Patch a list of custom field objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CustomFieldRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CustomFieldRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/CustomField'
+          description: ''
+    delete:
+      operationId: extras_custom_fields_bulk_destroy
+      description: Delete a list of custom field objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CustomFieldRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CustomFieldRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/extras/custom-fields/{id}/:
+    get:
+      operationId: extras_custom_fields_retrieve
+      description: Get a custom field object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this custom field.
+        required: true
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CustomField'
+          description: ''
+    put:
+      operationId: extras_custom_fields_update
+      description: Put a custom field object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this custom field.
+        required: true
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableCustomFieldRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableCustomFieldRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CustomField'
+          description: ''
+    patch:
+      operationId: extras_custom_fields_partial_update
+      description: Patch a custom field object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this custom field.
+        required: true
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableCustomFieldRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableCustomFieldRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CustomField'
+          description: ''
+    delete:
+      operationId: extras_custom_fields_destroy
+      description: Delete a custom field object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this custom field.
+        required: true
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/extras/custom-links/:
+    get:
+      operationId: extras_custom_links_list
+      description: Get a list of custom link objects.
+      parameters:
+      - in: query
+        name: content_type_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_type_id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_type_id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_type_id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_type_id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_type_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_types
+        schema:
+          type: string
+      - in: query
+        name: content_types__ic
+        schema:
+          type: string
+      - in: query
+        name: content_types__ie
+        schema:
+          type: string
+      - in: query
+        name: content_types__iew
+        schema:
+          type: string
+      - in: query
+        name: content_types__isw
+        schema:
+          type: string
+      - in: query
+        name: content_types__n
+        schema:
+          type: string
+      - in: query
+        name: content_types__nic
+        schema:
+          type: string
+      - in: query
+        name: content_types__nie
+        schema:
+          type: string
+      - in: query
+        name: content_types__niew
+        schema:
+          type: string
+      - in: query
+        name: content_types__nisw
+        schema:
+          type: string
+      - in: query
+        name: enabled
+        schema:
+          type: boolean
+      - in: query
+        name: group_name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: group_name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: group_name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: group_name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: group_name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: group_name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: group_name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: group_name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: group_name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: group_name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: group_name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: link_text
+        schema:
+          type: string
+      - in: query
+        name: link_text__ic
+        schema:
+          type: string
+      - in: query
+        name: link_text__ie
+        schema:
+          type: string
+      - in: query
+        name: link_text__iew
+        schema:
+          type: string
+      - in: query
+        name: link_text__isw
+        schema:
+          type: string
+      - in: query
+        name: link_text__n
+        schema:
+          type: string
+      - in: query
+        name: link_text__nic
+        schema:
+          type: string
+      - in: query
+        name: link_text__nie
+        schema:
+          type: string
+      - in: query
+        name: link_text__niew
+        schema:
+          type: string
+      - in: query
+        name: link_text__nisw
+        schema:
+          type: string
+      - in: query
+        name: link_url
+        schema:
+          type: string
+      - in: query
+        name: link_url__ic
+        schema:
+          type: string
+      - in: query
+        name: link_url__ie
+        schema:
+          type: string
+      - in: query
+        name: link_url__iew
+        schema:
+          type: string
+      - in: query
+        name: link_url__isw
+        schema:
+          type: string
+      - in: query
+        name: link_url__n
+        schema:
+          type: string
+      - in: query
+        name: link_url__nic
+        schema:
+          type: string
+      - in: query
+        name: link_url__nie
+        schema:
+          type: string
+      - in: query
+        name: link_url__niew
+        schema:
+          type: string
+      - in: query
+        name: link_url__nisw
+        schema:
+          type: string
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: new_window
+        schema:
+          type: boolean
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: weight
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: weight__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: weight__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: weight__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: weight__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: weight__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedCustomLinkList'
+          description: ''
+    post:
+      operationId: extras_custom_links_create
+      description: Post a list of custom link objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CustomLinkRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/CustomLinkRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CustomLink'
+          description: ''
+    put:
+      operationId: extras_custom_links_bulk_update
+      description: Put a list of custom link objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CustomLinkRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CustomLinkRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/CustomLink'
+          description: ''
+    patch:
+      operationId: extras_custom_links_bulk_partial_update
+      description: Patch a list of custom link objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CustomLinkRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CustomLinkRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/CustomLink'
+          description: ''
+    delete:
+      operationId: extras_custom_links_bulk_destroy
+      description: Delete a list of custom link objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CustomLinkRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/CustomLinkRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/extras/custom-links/{id}/:
+    get:
+      operationId: extras_custom_links_retrieve
+      description: Get a custom link object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this custom link.
+        required: true
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CustomLink'
+          description: ''
+    put:
+      operationId: extras_custom_links_update
+      description: Put a custom link object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this custom link.
+        required: true
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CustomLinkRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/CustomLinkRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CustomLink'
+          description: ''
+    patch:
+      operationId: extras_custom_links_partial_update
+      description: Patch a custom link object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this custom link.
+        required: true
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedCustomLinkRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedCustomLinkRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CustomLink'
+          description: ''
+    delete:
+      operationId: extras_custom_links_destroy
+      description: Delete a custom link object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this custom link.
+        required: true
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/extras/dashboard/:
+    get:
+      operationId: extras_dashboard_retrieve
+      description: Get a list of dashboard objects.
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Dashboard'
+          description: ''
+    put:
+      operationId: extras_dashboard_update
+      description: Put a list of dashboard objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/DashboardRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/DashboardRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Dashboard'
+          description: ''
+    patch:
+      operationId: extras_dashboard_partial_update
+      description: Patch a list of dashboard objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedDashboardRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedDashboardRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Dashboard'
+          description: ''
+    delete:
+      operationId: extras_dashboard_destroy
+      description: Delete a list of dashboard objects.
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/extras/export-templates/:
+    get:
+      operationId: extras_export_templates_list
+      description: Get a list of export template objects.
+      parameters:
+      - in: query
+        name: content_type_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_type_id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_type_id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_type_id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_type_id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_type_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_types
+        schema:
+          type: string
+      - in: query
+        name: content_types__ic
+        schema:
+          type: string
+      - in: query
+        name: content_types__ie
+        schema:
+          type: string
+      - in: query
+        name: content_types__iew
+        schema:
+          type: string
+      - in: query
+        name: content_types__isw
+        schema:
+          type: string
+      - in: query
+        name: content_types__n
+        schema:
+          type: string
+      - in: query
+        name: content_types__nic
+        schema:
+          type: string
+      - in: query
+        name: content_types__nie
+        schema:
+          type: string
+      - in: query
+        name: content_types__niew
+        schema:
+          type: string
+      - in: query
+        name: content_types__nisw
+        schema:
+          type: string
+      - in: query
+        name: data_file_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Data file (ID)
+        explode: true
+        style: form
+      - in: query
+        name: data_file_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Data file (ID)
+        explode: true
+        style: form
+      - in: query
+        name: data_source_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Data source (ID)
+        explode: true
+        style: form
+      - in: query
+        name: data_source_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Data source (ID)
+        explode: true
+        style: form
+      - in: query
+        name: data_synced
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: data_synced__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: data_synced__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: data_synced__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: data_synced__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: data_synced__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedExportTemplateList'
+          description: ''
+    post:
+      operationId: extras_export_templates_create
+      description: Post a list of export template objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableExportTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableExportTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ExportTemplate'
+          description: ''
+    put:
+      operationId: extras_export_templates_bulk_update
+      description: Put a list of export template objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ExportTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ExportTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ExportTemplate'
+          description: ''
+    patch:
+      operationId: extras_export_templates_bulk_partial_update
+      description: Patch a list of export template objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ExportTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ExportTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ExportTemplate'
+          description: ''
+    delete:
+      operationId: extras_export_templates_bulk_destroy
+      description: Delete a list of export template objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ExportTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ExportTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/extras/export-templates/{id}/:
+    get:
+      operationId: extras_export_templates_retrieve
+      description: Get a export template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this export template.
+        required: true
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ExportTemplate'
+          description: ''
+    put:
+      operationId: extras_export_templates_update
+      description: Put a export template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this export template.
+        required: true
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableExportTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableExportTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ExportTemplate'
+          description: ''
+    patch:
+      operationId: extras_export_templates_partial_update
+      description: Patch a export template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this export template.
+        required: true
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableExportTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableExportTemplateRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ExportTemplate'
+          description: ''
+    delete:
+      operationId: extras_export_templates_destroy
+      description: Delete a export template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this export template.
+        required: true
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/extras/export-templates/{id}/sync/:
+    post:
+      operationId: extras_export_templates_sync_create
+      description: Provide a /sync API endpoint to synchronize an object's data from
+        its associated DataFile (if any).
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this export template.
+        required: true
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableExportTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableExportTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ExportTemplate'
+          description: ''
+  /api/extras/image-attachments/:
+    get:
+      operationId: extras_image_attachments_list
+      description: Get a list of image attachment objects.
+      parameters:
+      - in: query
+        name: content_type
+        schema:
+          type: string
+      - in: query
+        name: content_type__n
+        schema:
+          type: string
+      - in: query
+        name: content_type_id
+        schema:
+          type: integer
+      - in: query
+        name: content_type_id__n
+        schema:
+          type: integer
+      - in: query
+        name: created
+        schema:
+          type: string
+          format: date-time
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: object_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: object_id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: object_id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: object_id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: object_id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: object_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedImageAttachmentList'
+          description: ''
+    post:
+      operationId: extras_image_attachments_create
+      description: Post a list of image attachment objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ImageAttachmentRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ImageAttachmentRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ImageAttachment'
+          description: ''
+    put:
+      operationId: extras_image_attachments_bulk_update
+      description: Put a list of image attachment objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ImageAttachmentRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ImageAttachmentRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ImageAttachment'
+          description: ''
+    patch:
+      operationId: extras_image_attachments_bulk_partial_update
+      description: Patch a list of image attachment objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ImageAttachmentRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ImageAttachmentRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ImageAttachment'
+          description: ''
+    delete:
+      operationId: extras_image_attachments_bulk_destroy
+      description: Delete a list of image attachment objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ImageAttachmentRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ImageAttachmentRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/extras/image-attachments/{id}/:
+    get:
+      operationId: extras_image_attachments_retrieve
+      description: Get a image attachment object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this image attachment.
+        required: true
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ImageAttachment'
+          description: ''
+    put:
+      operationId: extras_image_attachments_update
+      description: Put a image attachment object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this image attachment.
+        required: true
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ImageAttachmentRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ImageAttachmentRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ImageAttachment'
+          description: ''
+    patch:
+      operationId: extras_image_attachments_partial_update
+      description: Patch a image attachment object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this image attachment.
+        required: true
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedImageAttachmentRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedImageAttachmentRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ImageAttachment'
+          description: ''
+    delete:
+      operationId: extras_image_attachments_destroy
+      description: Delete a image attachment object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this image attachment.
+        required: true
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/extras/journal-entries/:
+    get:
+      operationId: extras_journal_entries_list
+      description: Get a list of journal entry objects.
+      parameters:
+      - in: query
+        name: assigned_object_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: assigned_object_id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: assigned_object_id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: assigned_object_id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: assigned_object_id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: assigned_object_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: assigned_object_type
+        schema:
+          type: string
+      - in: query
+        name: assigned_object_type__n
+        schema:
+          type: string
+      - in: query
+        name: assigned_object_type_id
+        schema:
+          type: array
+          items:
+            type: integer
+        explode: true
+        style: form
+      - in: query
+        name: assigned_object_type_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        explode: true
+        style: form
+      - in: query
+        name: created_after
+        schema:
+          type: string
+          format: date-time
+      - in: query
+        name: created_before
+        schema:
+          type: string
+          format: date-time
+      - in: query
+        name: created_by
+        schema:
+          type: array
+          items:
+            type: string
+        description: User (name)
+        explode: true
+        style: form
+      - in: query
+        name: created_by__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: User (name)
+        explode: true
+        style: form
+      - in: query
+        name: created_by_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: User (ID)
+        explode: true
+        style: form
+      - in: query
+        name: created_by_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: User (ID)
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: kind
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `info` - Info
+          * `success` - Success
+          * `warning` - Warning
+          * `danger` - Danger
+        explode: true
+        style: form
+      - in: query
+        name: kind__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `info` - Info
+          * `success` - Success
+          * `warning` - Warning
+          * `danger` - Danger
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedJournalEntryList'
+          description: ''
+    post:
+      operationId: extras_journal_entries_create
+      description: Post a list of journal entry objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableJournalEntryRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableJournalEntryRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/JournalEntry'
+          description: ''
+    put:
+      operationId: extras_journal_entries_bulk_update
+      description: Put a list of journal entry objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/JournalEntryRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/JournalEntryRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/JournalEntry'
+          description: ''
+    patch:
+      operationId: extras_journal_entries_bulk_partial_update
+      description: Patch a list of journal entry objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/JournalEntryRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/JournalEntryRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/JournalEntry'
+          description: ''
+    delete:
+      operationId: extras_journal_entries_bulk_destroy
+      description: Delete a list of journal entry objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/JournalEntryRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/JournalEntryRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/extras/journal-entries/{id}/:
+    get:
+      operationId: extras_journal_entries_retrieve
+      description: Get a journal entry object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this journal entry.
+        required: true
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/JournalEntry'
+          description: ''
+    put:
+      operationId: extras_journal_entries_update
+      description: Put a journal entry object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this journal entry.
+        required: true
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableJournalEntryRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableJournalEntryRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/JournalEntry'
+          description: ''
+    patch:
+      operationId: extras_journal_entries_partial_update
+      description: Patch a journal entry object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this journal entry.
+        required: true
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableJournalEntryRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableJournalEntryRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/JournalEntry'
+          description: ''
+    delete:
+      operationId: extras_journal_entries_destroy
+      description: Delete a journal entry object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this journal entry.
+        required: true
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/extras/object-changes/:
+    get:
+      operationId: extras_object_changes_list
+      description: Retrieve a list of recent changes.
+      parameters:
+      - in: query
+        name: action
+        schema:
+          type: string
+        description: |-
+          * `create` - Created
+          * `update` - Updated
+          * `delete` - Deleted
+      - in: query
+        name: action__n
+        schema:
+          type: string
+        description: |-
+          * `create` - Created
+          * `update` - Updated
+          * `delete` - Deleted
+      - in: query
+        name: changed_object_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: changed_object_id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: changed_object_id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: changed_object_id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: changed_object_id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: changed_object_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: changed_object_type
+        schema:
+          type: string
+      - in: query
+        name: changed_object_type__n
+        schema:
+          type: string
+      - in: query
+        name: changed_object_type_id
+        schema:
+          type: array
+          items:
+            type: integer
+        explode: true
+        style: form
+      - in: query
+        name: changed_object_type_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: object_repr
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: object_repr__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: object_repr__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: object_repr__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: object_repr__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: object_repr__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: object_repr__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: object_repr__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: object_repr__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: object_repr__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: object_repr__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: request_id
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: time_after
+        schema:
+          type: string
+          format: date-time
+      - in: query
+        name: time_before
+        schema:
+          type: string
+          format: date-time
+      - in: query
+        name: user
+        schema:
+          type: array
+          items:
+            type: string
+        description: User name
+        explode: true
+        style: form
+      - in: query
+        name: user__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: User name
+        explode: true
+        style: form
+      - in: query
+        name: user_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: User (ID)
+        explode: true
+        style: form
+      - in: query
+        name: user_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: User (ID)
+        explode: true
+        style: form
+      - in: query
+        name: user_name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: user_name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: user_name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: user_name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: user_name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: user_name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: user_name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: user_name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: user_name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: user_name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: user_name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedObjectChangeList'
+          description: ''
+  /api/extras/object-changes/{id}/:
+    get:
+      operationId: extras_object_changes_retrieve
+      description: Retrieve a list of recent changes.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this object change.
+        required: true
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectChange'
+          description: ''
+  /api/extras/saved-filters/:
+    get:
+      operationId: extras_saved_filters_list
+      description: Get a list of saved filter objects.
+      parameters:
+      - in: query
+        name: content_type_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_type_id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_type_id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_type_id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_type_id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_type_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_types
+        schema:
+          type: string
+      - in: query
+        name: content_types__ic
+        schema:
+          type: string
+      - in: query
+        name: content_types__ie
+        schema:
+          type: string
+      - in: query
+        name: content_types__iew
+        schema:
+          type: string
+      - in: query
+        name: content_types__isw
+        schema:
+          type: string
+      - in: query
+        name: content_types__n
+        schema:
+          type: string
+      - in: query
+        name: content_types__nic
+        schema:
+          type: string
+      - in: query
+        name: content_types__nie
+        schema:
+          type: string
+      - in: query
+        name: content_types__niew
+        schema:
+          type: string
+      - in: query
+        name: content_types__nisw
+        schema:
+          type: string
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: enabled
+        schema:
+          type: boolean
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: shared
+        schema:
+          type: boolean
+      - in: query
+        name: slug
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: usable
+        schema:
+          type: boolean
+      - in: query
+        name: user
+        schema:
+          type: array
+          items:
+            type: string
+        description: User (name)
+        explode: true
+        style: form
+      - in: query
+        name: user__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: User (name)
+        explode: true
+        style: form
+      - in: query
+        name: user_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: User (ID)
+        explode: true
+        style: form
+      - in: query
+        name: user_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: User (ID)
+        explode: true
+        style: form
+      - in: query
+        name: weight
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: weight__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: weight__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: weight__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: weight__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: weight__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedSavedFilterList'
+          description: ''
+    post:
+      operationId: extras_saved_filters_create
+      description: Post a list of saved filter objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/SavedFilterRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/SavedFilterRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SavedFilter'
+          description: ''
+    put:
+      operationId: extras_saved_filters_bulk_update
+      description: Put a list of saved filter objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/SavedFilterRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/SavedFilterRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/SavedFilter'
+          description: ''
+    patch:
+      operationId: extras_saved_filters_bulk_partial_update
+      description: Patch a list of saved filter objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/SavedFilterRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/SavedFilterRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/SavedFilter'
+          description: ''
+    delete:
+      operationId: extras_saved_filters_bulk_destroy
+      description: Delete a list of saved filter objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/SavedFilterRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/SavedFilterRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/extras/saved-filters/{id}/:
+    get:
+      operationId: extras_saved_filters_retrieve
+      description: Get a saved filter object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this saved filter.
+        required: true
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SavedFilter'
+          description: ''
+    put:
+      operationId: extras_saved_filters_update
+      description: Put a saved filter object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this saved filter.
+        required: true
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/SavedFilterRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/SavedFilterRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SavedFilter'
+          description: ''
+    patch:
+      operationId: extras_saved_filters_partial_update
+      description: Patch a saved filter object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this saved filter.
+        required: true
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedSavedFilterRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedSavedFilterRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SavedFilter'
+          description: ''
+    delete:
+      operationId: extras_saved_filters_destroy
+      description: Delete a saved filter object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this saved filter.
+        required: true
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/extras/tags/:
+    get:
+      operationId: extras_tags_list
+      description: Get a list of tag objects.
+      parameters:
+      - in: query
+        name: color
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: color__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: content_type
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: content_type_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: slug
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedTagList'
+          description: ''
+    post:
+      operationId: extras_tags_create
+      description: Post a list of tag objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/TagRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/TagRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Tag'
+          description: ''
+    put:
+      operationId: extras_tags_bulk_update
+      description: Put a list of tag objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/TagRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/TagRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Tag'
+          description: ''
+    patch:
+      operationId: extras_tags_bulk_partial_update
+      description: Patch a list of tag objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/TagRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/TagRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Tag'
+          description: ''
+    delete:
+      operationId: extras_tags_bulk_destroy
+      description: Delete a list of tag objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/TagRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/TagRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/extras/tags/{id}/:
+    get:
+      operationId: extras_tags_retrieve
+      description: Get a tag object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this tag.
+        required: true
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Tag'
+          description: ''
+    put:
+      operationId: extras_tags_update
+      description: Put a tag object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this tag.
+        required: true
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/TagRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/TagRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Tag'
+          description: ''
+    patch:
+      operationId: extras_tags_partial_update
+      description: Patch a tag object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this tag.
+        required: true
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedTagRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedTagRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Tag'
+          description: ''
+    delete:
+      operationId: extras_tags_destroy
+      description: Delete a tag object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this tag.
+        required: true
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/extras/webhooks/:
+    get:
+      operationId: extras_webhooks_list
+      description: Get a list of webhook objects.
+      parameters:
+      - in: query
+        name: ca_file_path
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ca_file_path__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ca_file_path__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ca_file_path__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ca_file_path__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ca_file_path__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ca_file_path__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ca_file_path__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ca_file_path__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ca_file_path__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ca_file_path__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: content_type_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_type_id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_type_id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_type_id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_type_id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_type_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: content_types
+        schema:
+          type: string
+      - in: query
+        name: content_types__ic
+        schema:
+          type: string
+      - in: query
+        name: content_types__ie
+        schema:
+          type: string
+      - in: query
+        name: content_types__iew
+        schema:
+          type: string
+      - in: query
+        name: content_types__isw
+        schema:
+          type: string
+      - in: query
+        name: content_types__n
+        schema:
+          type: string
+      - in: query
+        name: content_types__nic
+        schema:
+          type: string
+      - in: query
+        name: content_types__nie
+        schema:
+          type: string
+      - in: query
+        name: content_types__niew
+        schema:
+          type: string
+      - in: query
+        name: content_types__nisw
+        schema:
+          type: string
+      - in: query
+        name: enabled
+        schema:
+          type: boolean
+      - in: query
+        name: http_content_type
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: http_content_type__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: http_content_type__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: http_content_type__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: http_content_type__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: http_content_type__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: http_content_type__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: http_content_type__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: http_content_type__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: http_content_type__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: http_content_type__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: http_method
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `GET` - GET
+          * `POST` - POST
+          * `PUT` - PUT
+          * `PATCH` - PATCH
+          * `DELETE` - DELETE
+        explode: true
+        style: form
+      - in: query
+        name: http_method__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `GET` - GET
+          * `POST` - POST
+          * `PUT` - PUT
+          * `PATCH` - PATCH
+          * `DELETE` - DELETE
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: payload_url
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: payload_url__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: payload_url__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: payload_url__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: payload_url__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: payload_url__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: payload_url__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: payload_url__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: payload_url__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: payload_url__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: payload_url__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: secret
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: secret__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: secret__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: secret__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: secret__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: secret__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: secret__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: secret__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: secret__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: secret__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: secret__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ssl_verification
+        schema:
+          type: boolean
+      - in: query
+        name: type_create
+        schema:
+          type: boolean
+      - in: query
+        name: type_delete
+        schema:
+          type: boolean
+      - in: query
+        name: type_job_end
+        schema:
+          type: boolean
+      - in: query
+        name: type_job_start
+        schema:
+          type: boolean
+      - in: query
+        name: type_update
+        schema:
+          type: boolean
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedWebhookList'
+          description: ''
+    post:
+      operationId: extras_webhooks_create
+      description: Post a list of webhook objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WebhookRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WebhookRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Webhook'
+          description: ''
+    put:
+      operationId: extras_webhooks_bulk_update
+      description: Put a list of webhook objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/WebhookRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/WebhookRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Webhook'
+          description: ''
+    patch:
+      operationId: extras_webhooks_bulk_partial_update
+      description: Patch a list of webhook objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/WebhookRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/WebhookRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Webhook'
+          description: ''
+    delete:
+      operationId: extras_webhooks_bulk_destroy
+      description: Delete a list of webhook objects.
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/WebhookRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/WebhookRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/extras/webhooks/{id}/:
+    get:
+      operationId: extras_webhooks_retrieve
+      description: Get a webhook object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this webhook.
+        required: true
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Webhook'
+          description: ''
+    put:
+      operationId: extras_webhooks_update
+      description: Put a webhook object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this webhook.
+        required: true
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WebhookRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WebhookRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Webhook'
+          description: ''
+    patch:
+      operationId: extras_webhooks_partial_update
+      description: Patch a webhook object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this webhook.
+        required: true
+      tags:
+      - extras
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWebhookRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWebhookRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Webhook'
+          description: ''
+    delete:
+      operationId: extras_webhooks_destroy
+      description: Delete a webhook object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this webhook.
+        required: true
+      tags:
+      - extras
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/aggregates/:
+    get:
+      operationId: ipam_aggregates_list
+      description: Get a list of aggregate objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: date_added
+        schema:
+          type: array
+          items:
+            type: string
+            format: date
+        explode: true
+        style: form
+      - in: query
+        name: date_added__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date
+        explode: true
+        style: form
+      - in: query
+        name: date_added__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date
+        explode: true
+        style: form
+      - in: query
+        name: date_added__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date
+        explode: true
+        style: form
+      - in: query
+        name: date_added__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date
+        explode: true
+        style: form
+      - in: query
+        name: date_added__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date
+        explode: true
+        style: form
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: family
+        schema:
+          type: number
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: prefix
+        schema:
+          type: string
+        description: Prefix
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: rir
+        schema:
+          type: array
+          items:
+            type: string
+        description: RIR (slug)
+        explode: true
+        style: form
+      - in: query
+        name: rir__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: RIR (slug)
+        explode: true
+        style: form
+      - in: query
+        name: rir_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: RIR (ID)
+        explode: true
+        style: form
+      - in: query
+        name: rir_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: RIR (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tenant
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedAggregateList'
+          description: ''
+    post:
+      operationId: ipam_aggregates_create
+      description: Post a list of aggregate objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableAggregateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableAggregateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Aggregate'
+          description: ''
+    put:
+      operationId: ipam_aggregates_bulk_update
+      description: Put a list of aggregate objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/AggregateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/AggregateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Aggregate'
+          description: ''
+    patch:
+      operationId: ipam_aggregates_bulk_partial_update
+      description: Patch a list of aggregate objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/AggregateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/AggregateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Aggregate'
+          description: ''
+    delete:
+      operationId: ipam_aggregates_bulk_destroy
+      description: Delete a list of aggregate objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/AggregateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/AggregateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/aggregates/{id}/:
+    get:
+      operationId: ipam_aggregates_retrieve
+      description: Get a aggregate object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this aggregate.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Aggregate'
+          description: ''
+    put:
+      operationId: ipam_aggregates_update
+      description: Put a aggregate object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this aggregate.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableAggregateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableAggregateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Aggregate'
+          description: ''
+    patch:
+      operationId: ipam_aggregates_partial_update
+      description: Patch a aggregate object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this aggregate.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableAggregateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableAggregateRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Aggregate'
+          description: ''
+    delete:
+      operationId: ipam_aggregates_destroy
+      description: Delete a aggregate object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this aggregate.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/asn-ranges/:
+    get:
+      operationId: ipam_asn_ranges_list
+      description: Get a list of ASN range objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: end
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: end__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: end__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: end__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: end__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: end__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: rir
+        schema:
+          type: array
+          items:
+            type: string
+        description: RIR (slug)
+        explode: true
+        style: form
+      - in: query
+        name: rir__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: RIR (slug)
+        explode: true
+        style: form
+      - in: query
+        name: rir_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: RIR (ID)
+        explode: true
+        style: form
+      - in: query
+        name: rir_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: RIR (ID)
+        explode: true
+        style: form
+      - in: query
+        name: start
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: start__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: start__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: start__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: start__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: start__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tenant
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedASNRangeList'
+          description: ''
+    post:
+      operationId: ipam_asn_ranges_create
+      description: Post a list of ASN range objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableASNRangeRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableASNRangeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ASNRange'
+          description: ''
+    put:
+      operationId: ipam_asn_ranges_bulk_update
+      description: Put a list of ASN range objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ASNRangeRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ASNRangeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ASNRange'
+          description: ''
+    patch:
+      operationId: ipam_asn_ranges_bulk_partial_update
+      description: Patch a list of ASN range objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ASNRangeRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ASNRangeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ASNRange'
+          description: ''
+    delete:
+      operationId: ipam_asn_ranges_bulk_destroy
+      description: Delete a list of ASN range objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ASNRangeRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ASNRangeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/asn-ranges/{id}/:
+    get:
+      operationId: ipam_asn_ranges_retrieve
+      description: Get a ASN range object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this ASN range.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ASNRange'
+          description: ''
+    put:
+      operationId: ipam_asn_ranges_update
+      description: Put a ASN range object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this ASN range.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableASNRangeRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableASNRangeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ASNRange'
+          description: ''
+    patch:
+      operationId: ipam_asn_ranges_partial_update
+      description: Patch a ASN range object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this ASN range.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableASNRangeRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableASNRangeRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ASNRange'
+          description: ''
+    delete:
+      operationId: ipam_asn_ranges_destroy
+      description: Delete a ASN range object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this ASN range.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/asn-ranges/{id}/available-asns/:
+    get:
+      operationId: ipam_asn_ranges_available_asns_list
+      description: Get a ASN object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/AvailableASN'
+          description: ''
+    post:
+      operationId: ipam_asn_ranges_available_asns_create
+      description: Post a ASN object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableASNRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableASNRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ASN'
+          description: ''
+  /api/ipam/asns/:
+    get:
+      operationId: ipam_asns_list
+      description: Get a list of ASN objects.
+      parameters:
+      - in: query
+        name: asn
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: asn__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: asn__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: asn__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: asn__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: asn__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: rir
+        schema:
+          type: array
+          items:
+            type: string
+        description: RIR (slug)
+        explode: true
+        style: form
+      - in: query
+        name: rir__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: RIR (slug)
+        explode: true
+        style: form
+      - in: query
+        name: rir_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: RIR (ID)
+        explode: true
+        style: form
+      - in: query
+        name: rir_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: RIR (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tenant
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedASNList'
+          description: ''
+    post:
+      operationId: ipam_asns_create
+      description: Post a list of ASN objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableASNRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableASNRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ASN'
+          description: ''
+    put:
+      operationId: ipam_asns_bulk_update
+      description: Put a list of ASN objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ASNRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ASNRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ASN'
+          description: ''
+    patch:
+      operationId: ipam_asns_bulk_partial_update
+      description: Patch a list of ASN objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ASNRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ASNRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ASN'
+          description: ''
+    delete:
+      operationId: ipam_asns_bulk_destroy
+      description: Delete a list of ASN objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ASNRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ASNRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/asns/{id}/:
+    get:
+      operationId: ipam_asns_retrieve
+      description: Get a ASN object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this ASN.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ASN'
+          description: ''
+    put:
+      operationId: ipam_asns_update
+      description: Put a ASN object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this ASN.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableASNRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableASNRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ASN'
+          description: ''
+    patch:
+      operationId: ipam_asns_partial_update
+      description: Patch a ASN object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this ASN.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableASNRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableASNRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ASN'
+          description: ''
+    delete:
+      operationId: ipam_asns_destroy
+      description: Delete a ASN object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this ASN.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/fhrp-group-assignments/:
+    get:
+      operationId: ipam_fhrp_group_assignments_list
+      description: Get a list of FHRP group assignment objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: device
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: device_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interface_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interface_id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interface_id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interface_id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interface_id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interface_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interface_type
+        schema:
+          type: string
+      - in: query
+        name: interface_type__n
+        schema:
+          type: string
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: priority
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: priority__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: priority__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: priority__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: priority__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: priority__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: virtual_machine
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: virtual_machine_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedFHRPGroupAssignmentList'
+          description: ''
+    post:
+      operationId: ipam_fhrp_group_assignments_create
+      description: Post a list of FHRP group assignment objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableFHRPGroupAssignmentRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableFHRPGroupAssignmentRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/FHRPGroupAssignment'
+          description: ''
+    put:
+      operationId: ipam_fhrp_group_assignments_bulk_update
+      description: Put a list of FHRP group assignment objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/FHRPGroupAssignmentRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/FHRPGroupAssignmentRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/FHRPGroupAssignment'
+          description: ''
+    patch:
+      operationId: ipam_fhrp_group_assignments_bulk_partial_update
+      description: Patch a list of FHRP group assignment objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/FHRPGroupAssignmentRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/FHRPGroupAssignmentRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/FHRPGroupAssignment'
+          description: ''
+    delete:
+      operationId: ipam_fhrp_group_assignments_bulk_destroy
+      description: Delete a list of FHRP group assignment objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/FHRPGroupAssignmentRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/FHRPGroupAssignmentRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/fhrp-group-assignments/{id}/:
+    get:
+      operationId: ipam_fhrp_group_assignments_retrieve
+      description: Get a FHRP group assignment object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this FHRP group assignment.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/FHRPGroupAssignment'
+          description: ''
+    put:
+      operationId: ipam_fhrp_group_assignments_update
+      description: Put a FHRP group assignment object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this FHRP group assignment.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableFHRPGroupAssignmentRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableFHRPGroupAssignmentRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/FHRPGroupAssignment'
+          description: ''
+    patch:
+      operationId: ipam_fhrp_group_assignments_partial_update
+      description: Patch a FHRP group assignment object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this FHRP group assignment.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableFHRPGroupAssignmentRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableFHRPGroupAssignmentRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/FHRPGroupAssignment'
+          description: ''
+    delete:
+      operationId: ipam_fhrp_group_assignments_destroy
+      description: Delete a FHRP group assignment object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this FHRP group assignment.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/fhrp-groups/:
+    get:
+      operationId: ipam_fhrp_groups_list
+      description: Get a list of FHRP group objects.
+      parameters:
+      - in: query
+        name: auth_key
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_key__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_key__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_key__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_key__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_key__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_key__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_key__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_key__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_key__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_key__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_type
+        schema:
+          type: array
+          items:
+            type: string
+            title: Authentication type
+        description: |-
+          * `plaintext` - Plaintext
+          * `md5` - MD5
+        explode: true
+        style: form
+      - in: query
+        name: auth_type__n
+        schema:
+          type: array
+          items:
+            type: string
+            title: Authentication type
+        description: |-
+          * `plaintext` - Plaintext
+          * `md5` - MD5
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: group_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: group_id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: group_id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: group_id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: group_id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: protocol
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `vrrp2` - VRRPv2
+          * `vrrp3` - VRRPv3
+          * `carp` - CARP
+          * `clusterxl` - ClusterXL
+          * `hsrp` - HSRP
+          * `glbp` - GLBP
+          * `other` - Other
+        explode: true
+        style: form
+      - in: query
+        name: protocol__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `vrrp2` - VRRPv2
+          * `vrrp3` - VRRPv3
+          * `carp` - CARP
+          * `clusterxl` - ClusterXL
+          * `hsrp` - HSRP
+          * `glbp` - GLBP
+          * `other` - Other
+        explode: true
+        style: form
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: related_ip
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedFHRPGroupList'
+          description: ''
+    post:
+      operationId: ipam_fhrp_groups_create
+      description: Post a list of FHRP group objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/FHRPGroupRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/FHRPGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/FHRPGroup'
+          description: ''
+    put:
+      operationId: ipam_fhrp_groups_bulk_update
+      description: Put a list of FHRP group objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/FHRPGroupRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/FHRPGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/FHRPGroup'
+          description: ''
+    patch:
+      operationId: ipam_fhrp_groups_bulk_partial_update
+      description: Patch a list of FHRP group objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/FHRPGroupRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/FHRPGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/FHRPGroup'
+          description: ''
+    delete:
+      operationId: ipam_fhrp_groups_bulk_destroy
+      description: Delete a list of FHRP group objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/FHRPGroupRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/FHRPGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/fhrp-groups/{id}/:
+    get:
+      operationId: ipam_fhrp_groups_retrieve
+      description: Get a FHRP group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this FHRP group.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/FHRPGroup'
+          description: ''
+    put:
+      operationId: ipam_fhrp_groups_update
+      description: Put a FHRP group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this FHRP group.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/FHRPGroupRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/FHRPGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/FHRPGroup'
+          description: ''
+    patch:
+      operationId: ipam_fhrp_groups_partial_update
+      description: Patch a FHRP group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this FHRP group.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedFHRPGroupRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedFHRPGroupRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/FHRPGroup'
+          description: ''
+    delete:
+      operationId: ipam_fhrp_groups_destroy
+      description: Delete a FHRP group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this FHRP group.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/ip-addresses/:
+    get:
+      operationId: ipam_ip_addresses_list
+      description: Get a list of IP address objects.
+      parameters:
+      - in: query
+        name: address
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: assigned_to_interface
+        schema:
+          type: boolean
+        description: Is assigned to an interface
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: device
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: device_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: dns_name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: dns_name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: dns_name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: dns_name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: dns_name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: dns_name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: dns_name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: dns_name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: dns_name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: dns_name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: dns_name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: family
+        schema:
+          type: number
+      - in: query
+        name: fhrpgroup_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: FHRP group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: fhrpgroup_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: FHRP group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interface
+        schema:
+          type: array
+          items:
+            type: string
+        description: Interface (name)
+        explode: true
+        style: form
+      - in: query
+        name: interface__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Interface (name)
+        explode: true
+        style: form
+      - in: query
+        name: interface_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Interface (ID)
+        explode: true
+        style: form
+      - in: query
+        name: interface_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Interface (ID)
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: mask_length
+        schema:
+          type: number
+        description: Mask length
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: parent
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: present_in_vrf
+        schema:
+          type: string
+        description: VRF (RD)
+      - in: query
+        name: present_in_vrf_id
+        schema:
+          type: string
+        description: VRF
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: role
+        schema:
+          type: array
+          items:
+            type: string
+        description: The functional role of this IP
+        explode: true
+        style: form
+      - in: query
+        name: role__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: The functional role of this IP
+        explode: true
+        style: form
+      - in: query
+        name: status
+        schema:
+          type: array
+          items:
+            type: string
+        description: The operational status of this IP
+        explode: true
+        style: form
+      - in: query
+        name: status__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: The operational status of this IP
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tenant
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: virtual_machine
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: virtual_machine_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: vminterface
+        schema:
+          type: array
+          items:
+            type: string
+        description: VM interface (name)
+        explode: true
+        style: form
+      - in: query
+        name: vminterface__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: VM interface (name)
+        explode: true
+        style: form
+      - in: query
+        name: vminterface_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: VM interface (ID)
+        explode: true
+        style: form
+      - in: query
+        name: vminterface_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: VM interface (ID)
+        explode: true
+        style: form
+      - in: query
+        name: vrf
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+            title: Route distinguisher
+        description: VRF (RD)
+        explode: true
+        style: form
+      - in: query
+        name: vrf__n
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+            title: Route distinguisher
+        description: VRF (RD)
+        explode: true
+        style: form
+      - in: query
+        name: vrf_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: VRF
+        explode: true
+        style: form
+      - in: query
+        name: vrf_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: VRF
+        explode: true
+        style: form
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedIPAddressList'
+          description: ''
+    post:
+      operationId: ipam_ip_addresses_create
+      description: Post a list of IP address objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableIPAddressRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableIPAddressRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/IPAddress'
+          description: ''
+    put:
+      operationId: ipam_ip_addresses_bulk_update
+      description: Put a list of IP address objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/IPAddressRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/IPAddressRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/IPAddress'
+          description: ''
+    patch:
+      operationId: ipam_ip_addresses_bulk_partial_update
+      description: Patch a list of IP address objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/IPAddressRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/IPAddressRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/IPAddress'
+          description: ''
+    delete:
+      operationId: ipam_ip_addresses_bulk_destroy
+      description: Delete a list of IP address objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/IPAddressRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/IPAddressRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/ip-addresses/{id}/:
+    get:
+      operationId: ipam_ip_addresses_retrieve
+      description: Get a IP address object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this IP address.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/IPAddress'
+          description: ''
+    put:
+      operationId: ipam_ip_addresses_update
+      description: Put a IP address object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this IP address.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableIPAddressRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableIPAddressRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/IPAddress'
+          description: ''
+    patch:
+      operationId: ipam_ip_addresses_partial_update
+      description: Patch a IP address object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this IP address.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableIPAddressRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableIPAddressRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/IPAddress'
+          description: ''
+    delete:
+      operationId: ipam_ip_addresses_destroy
+      description: Delete a IP address object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this IP address.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/ip-ranges/:
+    get:
+      operationId: ipam_ip_ranges_list
+      description: Get a list of IP range objects.
+      parameters:
+      - in: query
+        name: contains
+        schema:
+          type: string
+        description: Ranges which contain this prefix or IP
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: end_address
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: family
+        schema:
+          type: number
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: mark_utilized
+        schema:
+          type: boolean
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: role
+        schema:
+          type: array
+          items:
+            type: string
+        description: Role (slug)
+        explode: true
+        style: form
+      - in: query
+        name: role__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Role (slug)
+        explode: true
+        style: form
+      - in: query
+        name: role_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Role (ID)
+        explode: true
+        style: form
+      - in: query
+        name: role_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Role (ID)
+        explode: true
+        style: form
+      - in: query
+        name: start_address
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: status
+        schema:
+          type: array
+          items:
+            type: string
+        description: Operational status of this range
+        explode: true
+        style: form
+      - in: query
+        name: status__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Operational status of this range
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tenant
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: vrf
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+            title: Route distinguisher
+        description: VRF (RD)
+        explode: true
+        style: form
+      - in: query
+        name: vrf__n
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+            title: Route distinguisher
+        description: VRF (RD)
+        explode: true
+        style: form
+      - in: query
+        name: vrf_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: VRF
+        explode: true
+        style: form
+      - in: query
+        name: vrf_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: VRF
+        explode: true
+        style: form
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedIPRangeList'
+          description: ''
+    post:
+      operationId: ipam_ip_ranges_create
+      description: Post a list of IP range objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableIPRangeRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableIPRangeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/IPRange'
+          description: ''
+    put:
+      operationId: ipam_ip_ranges_bulk_update
+      description: Put a list of IP range objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/IPRangeRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/IPRangeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/IPRange'
+          description: ''
+    patch:
+      operationId: ipam_ip_ranges_bulk_partial_update
+      description: Patch a list of IP range objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/IPRangeRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/IPRangeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/IPRange'
+          description: ''
+    delete:
+      operationId: ipam_ip_ranges_bulk_destroy
+      description: Delete a list of IP range objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/IPRangeRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/IPRangeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/ip-ranges/{id}/:
+    get:
+      operationId: ipam_ip_ranges_retrieve
+      description: Get a IP range object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this IP range.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/IPRange'
+          description: ''
+    put:
+      operationId: ipam_ip_ranges_update
+      description: Put a IP range object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this IP range.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableIPRangeRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableIPRangeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/IPRange'
+          description: ''
+    patch:
+      operationId: ipam_ip_ranges_partial_update
+      description: Patch a IP range object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this IP range.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableIPRangeRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableIPRangeRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/IPRange'
+          description: ''
+    delete:
+      operationId: ipam_ip_ranges_destroy
+      description: Delete a IP range object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this IP range.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/ip-ranges/{id}/available-ips/:
+    get:
+      operationId: ipam_ip_ranges_available_ips_list
+      description: Get a IP address object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/AvailableIP'
+          description: ''
+    post:
+      operationId: ipam_ip_ranges_available_ips_create
+      description: Post a IP address object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableIPAddressRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableIPAddressRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/IPAddress'
+          description: ''
+  /api/ipam/l2vpn-terminations/:
+    get:
+      operationId: ipam_l2vpn_terminations_list
+      description: Get a list of L2VPN termination objects.
+      parameters:
+      - in: query
+        name: assigned_object_type
+        schema:
+          type: string
+      - in: query
+        name: assigned_object_type__n
+        schema:
+          type: string
+      - in: query
+        name: assigned_object_type_id
+        schema:
+          type: integer
+      - in: query
+        name: assigned_object_type_id__n
+        schema:
+          type: integer
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: device
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+        description: Device (name)
+        explode: true
+        style: form
+      - in: query
+        name: device__n
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+        description: Device (name)
+        explode: true
+        style: form
+      - in: query
+        name: device_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device (ID)
+        explode: true
+        style: form
+      - in: query
+        name: device_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Device (ID)
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interface
+        schema:
+          type: array
+          items:
+            type: string
+        description: Interface (name)
+        explode: true
+        style: form
+      - in: query
+        name: interface__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Interface (name)
+        explode: true
+        style: form
+      - in: query
+        name: interface_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Interface (ID)
+        explode: true
+        style: form
+      - in: query
+        name: interface_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Interface (ID)
+        explode: true
+        style: form
+      - in: query
+        name: l2vpn
+        schema:
+          type: array
+          items:
+            type: string
+        description: L2VPN (slug)
+        explode: true
+        style: form
+      - in: query
+        name: l2vpn__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: L2VPN (slug)
+        explode: true
+        style: form
+      - in: query
+        name: l2vpn_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: L2VPN (ID)
+        explode: true
+        style: form
+      - in: query
+        name: l2vpn_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: L2VPN (ID)
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: region
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: region_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: site
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: site_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: virtual_machine
+        schema:
+          type: array
+          items:
+            type: string
+        description: Virtual machine (name)
+        explode: true
+        style: form
+      - in: query
+        name: virtual_machine__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Virtual machine (name)
+        explode: true
+        style: form
+      - in: query
+        name: virtual_machine_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Virtual machine (ID)
+        explode: true
+        style: form
+      - in: query
+        name: virtual_machine_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Virtual machine (ID)
+        explode: true
+        style: form
+      - in: query
+        name: vlan
+        schema:
+          type: array
+          items:
+            type: string
+        description: VLAN (name)
+        explode: true
+        style: form
+      - in: query
+        name: vlan__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: VLAN (name)
+        explode: true
+        style: form
+      - in: query
+        name: vlan_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: VLAN (ID)
+        explode: true
+        style: form
+      - in: query
+        name: vlan_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: VLAN (ID)
+        explode: true
+        style: form
+      - in: query
+        name: vlan_vid
+        schema:
+          type: integer
+        description: VLAN number (1-4094)
+      - in: query
+        name: vlan_vid__gt
+        schema:
+          type: integer
+        description: VLAN number (1-4094)
+      - in: query
+        name: vlan_vid__gte
+        schema:
+          type: integer
+        description: VLAN number (1-4094)
+      - in: query
+        name: vlan_vid__lt
+        schema:
+          type: integer
+        description: VLAN number (1-4094)
+      - in: query
+        name: vlan_vid__lte
+        schema:
+          type: integer
+        description: VLAN number (1-4094)
+      - in: query
+        name: vlan_vid__n
+        schema:
+          type: integer
+        description: VLAN number (1-4094)
+      - in: query
+        name: vminterface
+        schema:
+          type: array
+          items:
+            type: string
+        description: VM interface (name)
+        explode: true
+        style: form
+      - in: query
+        name: vminterface__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: VM interface (name)
+        explode: true
+        style: form
+      - in: query
+        name: vminterface_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: VM Interface (ID)
+        explode: true
+        style: form
+      - in: query
+        name: vminterface_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: VM Interface (ID)
+        explode: true
+        style: form
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedL2VPNTerminationList'
+          description: ''
+    post:
+      operationId: ipam_l2vpn_terminations_create
+      description: Post a list of L2VPN termination objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableL2VPNTerminationRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableL2VPNTerminationRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/L2VPNTermination'
+          description: ''
+    put:
+      operationId: ipam_l2vpn_terminations_bulk_update
+      description: Put a list of L2VPN termination objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/L2VPNTerminationRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/L2VPNTerminationRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/L2VPNTermination'
+          description: ''
+    patch:
+      operationId: ipam_l2vpn_terminations_bulk_partial_update
+      description: Patch a list of L2VPN termination objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/L2VPNTerminationRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/L2VPNTerminationRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/L2VPNTermination'
+          description: ''
+    delete:
+      operationId: ipam_l2vpn_terminations_bulk_destroy
+      description: Delete a list of L2VPN termination objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/L2VPNTerminationRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/L2VPNTerminationRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/l2vpn-terminations/{id}/:
+    get:
+      operationId: ipam_l2vpn_terminations_retrieve
+      description: Get a L2VPN termination object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this L2VPN termination.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/L2VPNTermination'
+          description: ''
+    put:
+      operationId: ipam_l2vpn_terminations_update
+      description: Put a L2VPN termination object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this L2VPN termination.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableL2VPNTerminationRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableL2VPNTerminationRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/L2VPNTermination'
+          description: ''
+    patch:
+      operationId: ipam_l2vpn_terminations_partial_update
+      description: Patch a L2VPN termination object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this L2VPN termination.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableL2VPNTerminationRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableL2VPNTerminationRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/L2VPNTermination'
+          description: ''
+    delete:
+      operationId: ipam_l2vpn_terminations_destroy
+      description: Delete a L2VPN termination object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this L2VPN termination.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/l2vpns/:
+    get:
+      operationId: ipam_l2vpns_list
+      description: Get a list of L2VPN objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: export_target
+        schema:
+          type: array
+          items:
+            type: string
+        description: Export target (name)
+        explode: true
+        style: form
+      - in: query
+        name: export_target__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Export target (name)
+        explode: true
+        style: form
+      - in: query
+        name: export_target_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Export target
+        explode: true
+        style: form
+      - in: query
+        name: export_target_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Export target
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: identifier
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: identifier__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: identifier__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: identifier__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: identifier__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: identifier__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: import_target
+        schema:
+          type: array
+          items:
+            type: string
+        description: Import target (name)
+        explode: true
+        style: form
+      - in: query
+        name: import_target__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Import target (name)
+        explode: true
+        style: form
+      - in: query
+        name: import_target_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Import target
+        explode: true
+        style: form
+      - in: query
+        name: import_target_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Import target
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: slug
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tenant
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: type
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `vpws` - VPWS
+          * `vpls` - VPLS
+          * `vxlan` - VXLAN
+          * `vxlan-evpn` - VXLAN-EVPN
+          * `mpls-evpn` - MPLS EVPN
+          * `pbb-evpn` - PBB EVPN
+          * `epl` - EPL
+          * `evpl` - EVPL
+          * `ep-lan` - Ethernet Private LAN
+          * `evp-lan` - Ethernet Virtual Private LAN
+          * `ep-tree` - Ethernet Private Tree
+          * `evp-tree` - Ethernet Virtual Private Tree
+        explode: true
+        style: form
+      - in: query
+        name: type__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `vpws` - VPWS
+          * `vpls` - VPLS
+          * `vxlan` - VXLAN
+          * `vxlan-evpn` - VXLAN-EVPN
+          * `mpls-evpn` - MPLS EVPN
+          * `pbb-evpn` - PBB EVPN
+          * `epl` - EPL
+          * `evpl` - EVPL
+          * `ep-lan` - Ethernet Private LAN
+          * `evp-lan` - Ethernet Virtual Private LAN
+          * `ep-tree` - Ethernet Private Tree
+          * `evp-tree` - Ethernet Virtual Private Tree
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedL2VPNList'
+          description: ''
+    post:
+      operationId: ipam_l2vpns_create
+      description: Post a list of L2VPN objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableL2VPNRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableL2VPNRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/L2VPN'
+          description: ''
+    put:
+      operationId: ipam_l2vpns_bulk_update
+      description: Put a list of L2VPN objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/L2VPNRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/L2VPNRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/L2VPN'
+          description: ''
+    patch:
+      operationId: ipam_l2vpns_bulk_partial_update
+      description: Patch a list of L2VPN objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/L2VPNRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/L2VPNRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/L2VPN'
+          description: ''
+    delete:
+      operationId: ipam_l2vpns_bulk_destroy
+      description: Delete a list of L2VPN objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/L2VPNRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/L2VPNRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/l2vpns/{id}/:
+    get:
+      operationId: ipam_l2vpns_retrieve
+      description: Get a L2VPN object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this L2VPN.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/L2VPN'
+          description: ''
+    put:
+      operationId: ipam_l2vpns_update
+      description: Put a L2VPN object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this L2VPN.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableL2VPNRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableL2VPNRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/L2VPN'
+          description: ''
+    patch:
+      operationId: ipam_l2vpns_partial_update
+      description: Patch a L2VPN object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this L2VPN.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableL2VPNRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableL2VPNRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/L2VPN'
+          description: ''
+    delete:
+      operationId: ipam_l2vpns_destroy
+      description: Delete a L2VPN object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this L2VPN.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/prefixes/:
+    get:
+      operationId: ipam_prefixes_list
+      description: Get a list of prefix objects.
+      parameters:
+      - in: query
+        name: children
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: children__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: children__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: children__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: children__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: children__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: contains
+        schema:
+          type: string
+        description: Prefixes which contain this prefix or IP
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: depth
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: depth__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: depth__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: depth__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: depth__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: depth__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: family
+        schema:
+          type: number
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: is_pool
+        schema:
+          type: boolean
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: mark_utilized
+        schema:
+          type: boolean
+      - in: query
+        name: mask_length
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: mask_length__gte
+        schema:
+          type: number
+      - in: query
+        name: mask_length__lte
+        schema:
+          type: number
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: prefix
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: present_in_vrf
+        schema:
+          type: string
+        description: VRF (RD)
+      - in: query
+        name: present_in_vrf_id
+        schema:
+          type: string
+        description: VRF
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: region
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: role
+        schema:
+          type: array
+          items:
+            type: string
+        description: Role (slug)
+        explode: true
+        style: form
+      - in: query
+        name: role__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Role (slug)
+        explode: true
+        style: form
+      - in: query
+        name: role_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Role (ID)
+        explode: true
+        style: form
+      - in: query
+        name: role_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Role (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: status
+        schema:
+          type: array
+          items:
+            type: string
+        description: Operational status of this prefix
+        explode: true
+        style: form
+      - in: query
+        name: status__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Operational status of this prefix
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tenant
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: vlan_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: VLAN (ID)
+        explode: true
+        style: form
+      - in: query
+        name: vlan_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: VLAN (ID)
+        explode: true
+        style: form
+      - in: query
+        name: vlan_vid
+        schema:
+          type: integer
+        description: VLAN number (1-4094)
+      - in: query
+        name: vlan_vid__gt
+        schema:
+          type: integer
+        description: VLAN number (1-4094)
+      - in: query
+        name: vlan_vid__gte
+        schema:
+          type: integer
+        description: VLAN number (1-4094)
+      - in: query
+        name: vlan_vid__lt
+        schema:
+          type: integer
+        description: VLAN number (1-4094)
+      - in: query
+        name: vlan_vid__lte
+        schema:
+          type: integer
+        description: VLAN number (1-4094)
+      - in: query
+        name: vlan_vid__n
+        schema:
+          type: integer
+        description: VLAN number (1-4094)
+      - in: query
+        name: vrf
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+            title: Route distinguisher
+        description: VRF (RD)
+        explode: true
+        style: form
+      - in: query
+        name: vrf__n
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+            title: Route distinguisher
+        description: VRF (RD)
+        explode: true
+        style: form
+      - in: query
+        name: vrf_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: VRF
+        explode: true
+        style: form
+      - in: query
+        name: vrf_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: VRF
+        explode: true
+        style: form
+      - in: query
+        name: within
+        schema:
+          type: string
+        description: Within prefix
+      - in: query
+        name: within_include
+        schema:
+          type: string
+        description: Within and including prefix
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedPrefixList'
+          description: ''
+    post:
+      operationId: ipam_prefixes_create
+      description: Post a list of prefix objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritablePrefixRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritablePrefixRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Prefix'
+          description: ''
+    put:
+      operationId: ipam_prefixes_bulk_update
+      description: Put a list of prefix objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PrefixRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PrefixRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Prefix'
+          description: ''
+    patch:
+      operationId: ipam_prefixes_bulk_partial_update
+      description: Patch a list of prefix objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PrefixRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PrefixRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Prefix'
+          description: ''
+    delete:
+      operationId: ipam_prefixes_bulk_destroy
+      description: Delete a list of prefix objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PrefixRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/PrefixRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/prefixes/{id}/:
+    get:
+      operationId: ipam_prefixes_retrieve
+      description: Get a prefix object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this prefix.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Prefix'
+          description: ''
+    put:
+      operationId: ipam_prefixes_update
+      description: Put a prefix object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this prefix.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritablePrefixRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritablePrefixRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Prefix'
+          description: ''
+    patch:
+      operationId: ipam_prefixes_partial_update
+      description: Patch a prefix object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this prefix.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritablePrefixRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritablePrefixRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Prefix'
+          description: ''
+    delete:
+      operationId: ipam_prefixes_destroy
+      description: Delete a prefix object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this prefix.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/prefixes/{id}/available-ips/:
+    get:
+      operationId: ipam_prefixes_available_ips_list
+      description: Get a IP address object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/AvailableIP'
+          description: ''
+    post:
+      operationId: ipam_prefixes_available_ips_create
+      description: Post a IP address object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableIPAddressRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableIPAddressRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/IPAddress'
+          description: ''
+  /api/ipam/prefixes/{id}/available-prefixes/:
+    get:
+      operationId: ipam_prefixes_available_prefixes_list
+      description: Get a prefix object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/AvailablePrefix'
+          description: ''
+    post:
+      operationId: ipam_prefixes_available_prefixes_create
+      description: Post a prefix object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PrefixLengthRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PrefixLengthRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Prefix'
+          description: ''
+  /api/ipam/rirs/:
+    get:
+      operationId: ipam_rirs_list
+      description: Get a list of RIR objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: is_private
+        schema:
+          type: boolean
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: slug
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedRIRList'
+          description: ''
+    post:
+      operationId: ipam_rirs_create
+      description: Post a list of RIR objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/RIRRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/RIRRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RIR'
+          description: ''
+    put:
+      operationId: ipam_rirs_bulk_update
+      description: Put a list of RIR objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RIRRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RIRRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/RIR'
+          description: ''
+    patch:
+      operationId: ipam_rirs_bulk_partial_update
+      description: Patch a list of RIR objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RIRRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RIRRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/RIR'
+          description: ''
+    delete:
+      operationId: ipam_rirs_bulk_destroy
+      description: Delete a list of RIR objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RIRRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RIRRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/rirs/{id}/:
+    get:
+      operationId: ipam_rirs_retrieve
+      description: Get a RIR object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this RIR.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RIR'
+          description: ''
+    put:
+      operationId: ipam_rirs_update
+      description: Put a RIR object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this RIR.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/RIRRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/RIRRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RIR'
+          description: ''
+    patch:
+      operationId: ipam_rirs_partial_update
+      description: Patch a RIR object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this RIR.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedRIRRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedRIRRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RIR'
+          description: ''
+    delete:
+      operationId: ipam_rirs_destroy
+      description: Delete a RIR object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this RIR.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/roles/:
+    get:
+      operationId: ipam_roles_list
+      description: Get a list of role objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: slug
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedRoleList'
+          description: ''
+    post:
+      operationId: ipam_roles_create
+      description: Post a list of role objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/RoleRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/RoleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Role'
+          description: ''
+    put:
+      operationId: ipam_roles_bulk_update
+      description: Put a list of role objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RoleRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RoleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Role'
+          description: ''
+    patch:
+      operationId: ipam_roles_bulk_partial_update
+      description: Patch a list of role objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RoleRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RoleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Role'
+          description: ''
+    delete:
+      operationId: ipam_roles_bulk_destroy
+      description: Delete a list of role objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RoleRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RoleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/roles/{id}/:
+    get:
+      operationId: ipam_roles_retrieve
+      description: Get a role object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this role.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Role'
+          description: ''
+    put:
+      operationId: ipam_roles_update
+      description: Put a role object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this role.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/RoleRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/RoleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Role'
+          description: ''
+    patch:
+      operationId: ipam_roles_partial_update
+      description: Patch a role object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this role.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedRoleRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedRoleRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Role'
+          description: ''
+    delete:
+      operationId: ipam_roles_destroy
+      description: Delete a role object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this role.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/route-targets/:
+    get:
+      operationId: ipam_route_targets_list
+      description: Get a list of route target objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: exporting_vrf
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+            title: Route distinguisher
+        description: Export VRF (RD)
+        explode: true
+        style: form
+      - in: query
+        name: exporting_vrf__n
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+            title: Route distinguisher
+        description: Export VRF (RD)
+        explode: true
+        style: form
+      - in: query
+        name: exporting_vrf_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Exporting VRF
+        explode: true
+        style: form
+      - in: query
+        name: exporting_vrf_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Exporting VRF
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: importing_vrf
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+            title: Route distinguisher
+        description: Import VRF (RD)
+        explode: true
+        style: form
+      - in: query
+        name: importing_vrf__n
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+            title: Route distinguisher
+        description: Import VRF (RD)
+        explode: true
+        style: form
+      - in: query
+        name: importing_vrf_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Importing VRF
+        explode: true
+        style: form
+      - in: query
+        name: importing_vrf_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Importing VRF
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tenant
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedRouteTargetList'
+          description: ''
+    post:
+      operationId: ipam_route_targets_create
+      description: Post a list of route target objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableRouteTargetRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableRouteTargetRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RouteTarget'
+          description: ''
+    put:
+      operationId: ipam_route_targets_bulk_update
+      description: Put a list of route target objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RouteTargetRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RouteTargetRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/RouteTarget'
+          description: ''
+    patch:
+      operationId: ipam_route_targets_bulk_partial_update
+      description: Patch a list of route target objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RouteTargetRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RouteTargetRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/RouteTarget'
+          description: ''
+    delete:
+      operationId: ipam_route_targets_bulk_destroy
+      description: Delete a list of route target objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RouteTargetRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/RouteTargetRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/route-targets/{id}/:
+    get:
+      operationId: ipam_route_targets_retrieve
+      description: Get a route target object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this route target.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RouteTarget'
+          description: ''
+    put:
+      operationId: ipam_route_targets_update
+      description: Put a route target object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this route target.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableRouteTargetRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableRouteTargetRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RouteTarget'
+          description: ''
+    patch:
+      operationId: ipam_route_targets_partial_update
+      description: Patch a route target object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this route target.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableRouteTargetRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableRouteTargetRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RouteTarget'
+          description: ''
+    delete:
+      operationId: ipam_route_targets_destroy
+      description: Delete a route target object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this route target.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/service-templates/:
+    get:
+      operationId: ipam_service_templates_list
+      description: Get a list of service template objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: port
+        schema:
+          type: number
+      - in: query
+        name: protocol
+        schema:
+          type: string
+        description: |-
+          * `tcp` - TCP
+          * `udp` - UDP
+          * `sctp` - SCTP
+      - in: query
+        name: protocol__n
+        schema:
+          type: string
+        description: |-
+          * `tcp` - TCP
+          * `udp` - UDP
+          * `sctp` - SCTP
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedServiceTemplateList'
+          description: ''
+    post:
+      operationId: ipam_service_templates_create
+      description: Post a list of service template objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableServiceTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableServiceTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ServiceTemplate'
+          description: ''
+    put:
+      operationId: ipam_service_templates_bulk_update
+      description: Put a list of service template objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ServiceTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ServiceTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ServiceTemplate'
+          description: ''
+    patch:
+      operationId: ipam_service_templates_bulk_partial_update
+      description: Patch a list of service template objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ServiceTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ServiceTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ServiceTemplate'
+          description: ''
+    delete:
+      operationId: ipam_service_templates_bulk_destroy
+      description: Delete a list of service template objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ServiceTemplateRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ServiceTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/service-templates/{id}/:
+    get:
+      operationId: ipam_service_templates_retrieve
+      description: Get a service template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this service template.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ServiceTemplate'
+          description: ''
+    put:
+      operationId: ipam_service_templates_update
+      description: Put a service template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this service template.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableServiceTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableServiceTemplateRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ServiceTemplate'
+          description: ''
+    patch:
+      operationId: ipam_service_templates_partial_update
+      description: Patch a service template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this service template.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableServiceTemplateRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableServiceTemplateRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ServiceTemplate'
+          description: ''
+    delete:
+      operationId: ipam_service_templates_destroy
+      description: Delete a service template object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this service template.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/services/:
+    get:
+      operationId: ipam_services_list
+      description: Get a list of service objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: device
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+        description: Device (name)
+        explode: true
+        style: form
+      - in: query
+        name: device__n
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+        description: Device (name)
+        explode: true
+        style: form
+      - in: query
+        name: device_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Device (ID)
+        explode: true
+        style: form
+      - in: query
+        name: device_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Device (ID)
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: ipaddress
+        schema:
+          type: array
+          items:
+            type: string
+        description: IP address
+        explode: true
+        style: form
+      - in: query
+        name: ipaddress__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: IP address
+        explode: true
+        style: form
+      - in: query
+        name: ipaddress_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: IP address (ID)
+        explode: true
+        style: form
+      - in: query
+        name: ipaddress_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: IP address (ID)
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: port
+        schema:
+          type: number
+      - in: query
+        name: protocol
+        schema:
+          type: string
+        description: |-
+          * `tcp` - TCP
+          * `udp` - UDP
+          * `sctp` - SCTP
+      - in: query
+        name: protocol__n
+        schema:
+          type: string
+        description: |-
+          * `tcp` - TCP
+          * `udp` - UDP
+          * `sctp` - SCTP
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: virtual_machine
+        schema:
+          type: array
+          items:
+            type: string
+        description: Virtual machine (name)
+        explode: true
+        style: form
+      - in: query
+        name: virtual_machine__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Virtual machine (name)
+        explode: true
+        style: form
+      - in: query
+        name: virtual_machine_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Virtual machine (ID)
+        explode: true
+        style: form
+      - in: query
+        name: virtual_machine_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Virtual machine (ID)
+        explode: true
+        style: form
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedServiceList'
+          description: ''
+    post:
+      operationId: ipam_services_create
+      description: Post a list of service objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableServiceRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableServiceRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Service'
+          description: ''
+    put:
+      operationId: ipam_services_bulk_update
+      description: Put a list of service objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ServiceRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ServiceRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Service'
+          description: ''
+    patch:
+      operationId: ipam_services_bulk_partial_update
+      description: Patch a list of service objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ServiceRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ServiceRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Service'
+          description: ''
+    delete:
+      operationId: ipam_services_bulk_destroy
+      description: Delete a list of service objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ServiceRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ServiceRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/services/{id}/:
+    get:
+      operationId: ipam_services_retrieve
+      description: Get a service object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this service.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Service'
+          description: ''
+    put:
+      operationId: ipam_services_update
+      description: Put a service object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this service.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableServiceRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableServiceRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Service'
+          description: ''
+    patch:
+      operationId: ipam_services_partial_update
+      description: Patch a service object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this service.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableServiceRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableServiceRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Service'
+          description: ''
+    delete:
+      operationId: ipam_services_destroy
+      description: Delete a service object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this service.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/vlan-groups/:
+    get:
+      operationId: ipam_vlan_groups_list
+      description: Get a list of VLAN group objects.
+      parameters:
+      - in: query
+        name: cluster
+        schema:
+          type: integer
+      - in: query
+        name: clustergroup
+        schema:
+          type: number
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: location
+        schema:
+          type: integer
+      - in: query
+        name: max_vid
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: max_vid__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: max_vid__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: max_vid__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: max_vid__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: max_vid__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: min_vid
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: min_vid__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: min_vid__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: min_vid__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: min_vid__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: min_vid__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: rack
+        schema:
+          type: integer
+      - in: query
+        name: region
+        schema:
+          type: integer
+      - in: query
+        name: scope_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: scope_id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: scope_id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: scope_id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: scope_id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: scope_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: scope_type
+        schema:
+          type: string
+      - in: query
+        name: scope_type__n
+        schema:
+          type: string
+      - in: query
+        name: site
+        schema:
+          type: integer
+      - in: query
+        name: sitegroup
+        schema:
+          type: number
+      - in: query
+        name: slug
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedVLANGroupList'
+          description: ''
+    post:
+      operationId: ipam_vlan_groups_create
+      description: Post a list of VLAN group objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/VLANGroupRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/VLANGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VLANGroup'
+          description: ''
+    put:
+      operationId: ipam_vlan_groups_bulk_update
+      description: Put a list of VLAN group objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VLANGroupRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VLANGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/VLANGroup'
+          description: ''
+    patch:
+      operationId: ipam_vlan_groups_bulk_partial_update
+      description: Patch a list of VLAN group objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VLANGroupRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VLANGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/VLANGroup'
+          description: ''
+    delete:
+      operationId: ipam_vlan_groups_bulk_destroy
+      description: Delete a list of VLAN group objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VLANGroupRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VLANGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/vlan-groups/{id}/:
+    get:
+      operationId: ipam_vlan_groups_retrieve
+      description: Get a VLAN group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this VLAN group.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VLANGroup'
+          description: ''
+    put:
+      operationId: ipam_vlan_groups_update
+      description: Put a VLAN group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this VLAN group.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/VLANGroupRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/VLANGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VLANGroup'
+          description: ''
+    patch:
+      operationId: ipam_vlan_groups_partial_update
+      description: Patch a VLAN group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this VLAN group.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedVLANGroupRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedVLANGroupRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VLANGroup'
+          description: ''
+    delete:
+      operationId: ipam_vlan_groups_destroy
+      description: Delete a VLAN group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this VLAN group.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/vlan-groups/{id}/available-vlans/:
+    get:
+      operationId: ipam_vlan_groups_available_vlans_list
+      description: Get a VLAN object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/AvailableVLAN'
+          description: ''
+    post:
+      operationId: ipam_vlan_groups_available_vlans_create
+      description: Post a VLAN object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableVLANRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableVLANRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/VLAN'
+          description: ''
+  /api/ipam/vlans/:
+    get:
+      operationId: ipam_vlans_list
+      description: Get a list of VLAN objects.
+      parameters:
+      - in: query
+        name: available_on_device
+        schema:
+          type: string
+      - in: query
+        name: available_on_virtualmachine
+        schema:
+          type: string
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: group
+        schema:
+          type: array
+          items:
+            type: string
+        description: Group
+        explode: true
+        style: form
+      - in: query
+        name: group__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Group
+        explode: true
+        style: form
+      - in: query
+        name: group_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: l2vpn
+        schema:
+          type: array
+          items:
+            type: integer
+            maximum: 9223372036854775807
+            minimum: -9223372036854775808
+            format: int64
+            nullable: true
+        description: L2VPN
+        explode: true
+        style: form
+      - in: query
+        name: l2vpn__n
+        schema:
+          type: array
+          items:
+            type: integer
+            maximum: 9223372036854775807
+            minimum: -9223372036854775808
+            format: int64
+            nullable: true
+        description: L2VPN
+        explode: true
+        style: form
+      - in: query
+        name: l2vpn_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: L2VPN (ID)
+        explode: true
+        style: form
+      - in: query
+        name: l2vpn_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: L2VPN (ID)
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: region
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: role
+        schema:
+          type: array
+          items:
+            type: string
+        description: Role (slug)
+        explode: true
+        style: form
+      - in: query
+        name: role__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Role (slug)
+        explode: true
+        style: form
+      - in: query
+        name: role_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Role (ID)
+        explode: true
+        style: form
+      - in: query
+        name: role_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Role (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: status
+        schema:
+          type: array
+          items:
+            type: string
+        description: Operational status of this VLAN
+        explode: true
+        style: form
+      - in: query
+        name: status__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Operational status of this VLAN
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tenant
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: vid
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: vid__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: vid__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: vid__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: vid__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: vid__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedVLANList'
+          description: ''
+    post:
+      operationId: ipam_vlans_create
+      description: Post a list of VLAN objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableVLANRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableVLANRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VLAN'
+          description: ''
+    put:
+      operationId: ipam_vlans_bulk_update
+      description: Put a list of VLAN objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VLANRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VLANRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/VLAN'
+          description: ''
+    patch:
+      operationId: ipam_vlans_bulk_partial_update
+      description: Patch a list of VLAN objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VLANRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VLANRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/VLAN'
+          description: ''
+    delete:
+      operationId: ipam_vlans_bulk_destroy
+      description: Delete a list of VLAN objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VLANRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VLANRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/vlans/{id}/:
+    get:
+      operationId: ipam_vlans_retrieve
+      description: Get a VLAN object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this VLAN.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VLAN'
+          description: ''
+    put:
+      operationId: ipam_vlans_update
+      description: Put a VLAN object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this VLAN.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableVLANRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableVLANRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VLAN'
+          description: ''
+    patch:
+      operationId: ipam_vlans_partial_update
+      description: Patch a VLAN object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this VLAN.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableVLANRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableVLANRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VLAN'
+          description: ''
+    delete:
+      operationId: ipam_vlans_destroy
+      description: Delete a VLAN object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this VLAN.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/vrfs/:
+    get:
+      operationId: ipam_vrfs_list
+      description: Get a list of VRF objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: enforce_unique
+        schema:
+          type: boolean
+      - in: query
+        name: export_target
+        schema:
+          type: array
+          items:
+            type: string
+        description: Export target (name)
+        explode: true
+        style: form
+      - in: query
+        name: export_target__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Export target (name)
+        explode: true
+        style: form
+      - in: query
+        name: export_target_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Export target
+        explode: true
+        style: form
+      - in: query
+        name: export_target_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Export target
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: import_target
+        schema:
+          type: array
+          items:
+            type: string
+        description: Import target (name)
+        explode: true
+        style: form
+      - in: query
+        name: import_target__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Import target (name)
+        explode: true
+        style: form
+      - in: query
+        name: import_target_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Import target
+        explode: true
+        style: form
+      - in: query
+        name: import_target_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Import target
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: rd
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: rd__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: rd__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: rd__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: rd__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: rd__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: rd__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: rd__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: rd__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: rd__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: rd__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tenant
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedVRFList'
+          description: ''
+    post:
+      operationId: ipam_vrfs_create
+      description: Post a list of VRF objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableVRFRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableVRFRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VRF'
+          description: ''
+    put:
+      operationId: ipam_vrfs_bulk_update
+      description: Put a list of VRF objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VRFRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VRFRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/VRF'
+          description: ''
+    patch:
+      operationId: ipam_vrfs_bulk_partial_update
+      description: Patch a list of VRF objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VRFRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VRFRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/VRF'
+          description: ''
+    delete:
+      operationId: ipam_vrfs_bulk_destroy
+      description: Delete a list of VRF objects.
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VRFRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VRFRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/ipam/vrfs/{id}/:
+    get:
+      operationId: ipam_vrfs_retrieve
+      description: Get a VRF object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this VRF.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VRF'
+          description: ''
+    put:
+      operationId: ipam_vrfs_update
+      description: Put a VRF object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this VRF.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableVRFRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableVRFRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VRF'
+          description: ''
+    patch:
+      operationId: ipam_vrfs_partial_update
+      description: Patch a VRF object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this VRF.
+        required: true
+      tags:
+      - ipam
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableVRFRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableVRFRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VRF'
+          description: ''
+    delete:
+      operationId: ipam_vrfs_destroy
+      description: Delete a VRF object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this VRF.
+        required: true
+      tags:
+      - ipam
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/plugins/rps/mapping/:
+    get:
+      operationId: plugins_rps_mapping_list
+      description: Get a list of mapping objects.
+      parameters:
+      - in: query
+        name: Comment
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: Comment__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: Comment__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: Comment__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: Comment__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: Comment__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: Comment__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: Comment__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: Comment__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: Comment__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: Comment__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: authentication
+        schema:
+          type: string
+          title: Auth
+        description: |-
+          * `none` - None
+          * `ldap` - Ldap
+          * `ecas` - Ecas
+      - in: query
+        name: authentication__n
+        schema:
+          type: string
+          title: Auth
+        description: |-
+          * `none` - None
+          * `ldap` - Ldap
+          * `ecas` - Ecas
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: source
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: source__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: source__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: source__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: source__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: source__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: source__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: source__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: source__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: source__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: source__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: target
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: target__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: target__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: target__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: target__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: target__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: target__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: target__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: target__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: target__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: target__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - plugins
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedMappingList'
+          description: ''
+    post:
+      operationId: plugins_rps_mapping_create
+      description: Post a list of mapping objects.
+      tags:
+      - plugins
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/MappingRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/MappingRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Mapping'
+          description: ''
+    patch:
+      operationId: plugins_rps_mapping_bulk_partial_update
+      description: Patch a list of mapping objects.
+      tags:
+      - plugins
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/MappingRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/MappingRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Mapping'
+          description: ''
+  /api/plugins/rps/mapping/{id}/:
+    get:
+      operationId: plugins_rps_mapping_retrieve
+      description: Get a mapping object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this mapping.
+        required: true
+      tags:
+      - plugins
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Mapping'
+          description: ''
+    patch:
+      operationId: plugins_rps_mapping_partial_update
+      description: Patch a mapping object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this mapping.
+        required: true
+      tags:
+      - plugins
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMappingRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMappingRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Mapping'
+          description: ''
+  /api/schema/:
+    get:
+      operationId: schema_retrieve
+      description: |-
+        OpenApi3 schema for this API. Format can be selected via content negotiation.
+
+        - YAML: application/vnd.oai.openapi
+        - JSON: application/vnd.oai.openapi+json
+      parameters:
+      - in: query
+        name: format
+        schema:
+          type: string
+          enum:
+          - json
+          - yaml
+      tags:
+      - schema
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      - {}
+      responses:
+        '200':
+          content:
+            application/vnd.oai.openapi:
+              schema:
+                type: object
+                additionalProperties: {}
+            application/yaml:
+              schema:
+                type: object
+                additionalProperties: {}
+            application/vnd.oai.openapi+json:
+              schema:
+                type: object
+                additionalProperties: {}
+            application/json:
+              schema:
+                type: object
+                additionalProperties: {}
+          description: ''
+  /api/status/:
+    get:
+      operationId: status_retrieve
+      description: A lightweight read-only endpoint for conveying NetBox's current
+        operational status.
+      tags:
+      - status
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: object
+                additionalProperties: {}
+          description: ''
+  /api/tenancy/contact-assignments/:
+    get:
+      operationId: tenancy_contact_assignments_list
+      description: Get a list of contact assignment objects.
+      parameters:
+      - in: query
+        name: contact_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact (ID)
+        explode: true
+        style: form
+      - in: query
+        name: contact_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact (ID)
+        explode: true
+        style: form
+      - in: query
+        name: content_type
+        schema:
+          type: string
+      - in: query
+        name: content_type__n
+        schema:
+          type: string
+      - in: query
+        name: content_type_id
+        schema:
+          type: integer
+      - in: query
+        name: content_type_id__n
+        schema:
+          type: integer
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: object_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: object_id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: object_id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: object_id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: object_id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: object_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: priority
+        schema:
+          type: string
+        description: |-
+          * `primary` - Primary
+          * `secondary` - Secondary
+          * `tertiary` - Tertiary
+          * `inactive` - Inactive
+      - in: query
+        name: priority__n
+        schema:
+          type: string
+        description: |-
+          * `primary` - Primary
+          * `secondary` - Secondary
+          * `tertiary` - Tertiary
+          * `inactive` - Inactive
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: role
+        schema:
+          type: array
+          items:
+            type: string
+        description: Contact role (slug)
+        explode: true
+        style: form
+      - in: query
+        name: role__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Contact role (slug)
+        explode: true
+        style: form
+      - in: query
+        name: role_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact role (ID)
+        explode: true
+        style: form
+      - in: query
+        name: role_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact role (ID)
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - tenancy
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedContactAssignmentList'
+          description: ''
+    post:
+      operationId: tenancy_contact_assignments_create
+      description: Post a list of contact assignment objects.
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableContactAssignmentRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableContactAssignmentRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ContactAssignment'
+          description: ''
+    put:
+      operationId: tenancy_contact_assignments_bulk_update
+      description: Put a list of contact assignment objects.
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ContactAssignmentRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ContactAssignmentRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ContactAssignment'
+          description: ''
+    patch:
+      operationId: tenancy_contact_assignments_bulk_partial_update
+      description: Patch a list of contact assignment objects.
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ContactAssignmentRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ContactAssignmentRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ContactAssignment'
+          description: ''
+    delete:
+      operationId: tenancy_contact_assignments_bulk_destroy
+      description: Delete a list of contact assignment objects.
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ContactAssignmentRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ContactAssignmentRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/tenancy/contact-assignments/{id}/:
+    get:
+      operationId: tenancy_contact_assignments_retrieve
+      description: Get a contact assignment object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this contact assignment.
+        required: true
+      tags:
+      - tenancy
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ContactAssignment'
+          description: ''
+    put:
+      operationId: tenancy_contact_assignments_update
+      description: Put a contact assignment object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this contact assignment.
+        required: true
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableContactAssignmentRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableContactAssignmentRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ContactAssignment'
+          description: ''
+    patch:
+      operationId: tenancy_contact_assignments_partial_update
+      description: Patch a contact assignment object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this contact assignment.
+        required: true
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableContactAssignmentRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableContactAssignmentRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ContactAssignment'
+          description: ''
+    delete:
+      operationId: tenancy_contact_assignments_destroy
+      description: Delete a contact assignment object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this contact assignment.
+        required: true
+      tags:
+      - tenancy
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/tenancy/contact-groups/:
+    get:
+      operationId: tenancy_contact_groups_list
+      description: Get a list of contact group objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: parent
+        schema:
+          type: array
+          items:
+            type: string
+        description: Contact group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: parent__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Contact group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: parent_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Contact group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: parent_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Contact group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: slug
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - tenancy
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedContactGroupList'
+          description: ''
+    post:
+      operationId: tenancy_contact_groups_create
+      description: Post a list of contact group objects.
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableContactGroupRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableContactGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ContactGroup'
+          description: ''
+    put:
+      operationId: tenancy_contact_groups_bulk_update
+      description: Put a list of contact group objects.
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ContactGroupRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ContactGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ContactGroup'
+          description: ''
+    patch:
+      operationId: tenancy_contact_groups_bulk_partial_update
+      description: Patch a list of contact group objects.
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ContactGroupRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ContactGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ContactGroup'
+          description: ''
+    delete:
+      operationId: tenancy_contact_groups_bulk_destroy
+      description: Delete a list of contact group objects.
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ContactGroupRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ContactGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/tenancy/contact-groups/{id}/:
+    get:
+      operationId: tenancy_contact_groups_retrieve
+      description: Get a contact group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this contact group.
+        required: true
+      tags:
+      - tenancy
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ContactGroup'
+          description: ''
+    put:
+      operationId: tenancy_contact_groups_update
+      description: Put a contact group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this contact group.
+        required: true
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableContactGroupRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableContactGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ContactGroup'
+          description: ''
+    patch:
+      operationId: tenancy_contact_groups_partial_update
+      description: Patch a contact group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this contact group.
+        required: true
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableContactGroupRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableContactGroupRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ContactGroup'
+          description: ''
+    delete:
+      operationId: tenancy_contact_groups_destroy
+      description: Delete a contact group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this contact group.
+        required: true
+      tags:
+      - tenancy
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/tenancy/contact-roles/:
+    get:
+      operationId: tenancy_contact_roles_list
+      description: Get a list of contact role objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: slug
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - tenancy
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedContactRoleList'
+          description: ''
+    post:
+      operationId: tenancy_contact_roles_create
+      description: Post a list of contact role objects.
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ContactRoleRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ContactRoleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ContactRole'
+          description: ''
+    put:
+      operationId: tenancy_contact_roles_bulk_update
+      description: Put a list of contact role objects.
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ContactRoleRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ContactRoleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ContactRole'
+          description: ''
+    patch:
+      operationId: tenancy_contact_roles_bulk_partial_update
+      description: Patch a list of contact role objects.
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ContactRoleRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ContactRoleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ContactRole'
+          description: ''
+    delete:
+      operationId: tenancy_contact_roles_bulk_destroy
+      description: Delete a list of contact role objects.
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ContactRoleRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ContactRoleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/tenancy/contact-roles/{id}/:
+    get:
+      operationId: tenancy_contact_roles_retrieve
+      description: Get a contact role object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this contact role.
+        required: true
+      tags:
+      - tenancy
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ContactRole'
+          description: ''
+    put:
+      operationId: tenancy_contact_roles_update
+      description: Put a contact role object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this contact role.
+        required: true
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ContactRoleRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ContactRoleRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ContactRole'
+          description: ''
+    patch:
+      operationId: tenancy_contact_roles_partial_update
+      description: Patch a contact role object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this contact role.
+        required: true
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedContactRoleRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedContactRoleRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ContactRole'
+          description: ''
+    delete:
+      operationId: tenancy_contact_roles_destroy
+      description: Delete a contact role object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this contact role.
+        required: true
+      tags:
+      - tenancy
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/tenancy/contacts/:
+    get:
+      operationId: tenancy_contacts_list
+      description: Get a list of contact objects.
+      parameters:
+      - in: query
+        name: address
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: address__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: address__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: address__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: address__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: address__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: address__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: address__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: address__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: address__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: address__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: email
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: email__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: email__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: email__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: email__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: email__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: email__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: email__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: email__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: email__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: email__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: link
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: link__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: link__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: link__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: link__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: link__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: link__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: link__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: link__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: link__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: link__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: phone
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: phone__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: phone__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: phone__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: phone__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: phone__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: phone__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: phone__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: phone__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: phone__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: phone__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: title
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: title__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: title__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: title__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: title__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: title__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: title__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: title__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: title__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: title__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: title__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - tenancy
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedContactList'
+          description: ''
+    post:
+      operationId: tenancy_contacts_create
+      description: Post a list of contact objects.
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableContactRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableContactRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Contact'
+          description: ''
+    put:
+      operationId: tenancy_contacts_bulk_update
+      description: Put a list of contact objects.
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ContactRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ContactRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Contact'
+          description: ''
+    patch:
+      operationId: tenancy_contacts_bulk_partial_update
+      description: Patch a list of contact objects.
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ContactRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ContactRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Contact'
+          description: ''
+    delete:
+      operationId: tenancy_contacts_bulk_destroy
+      description: Delete a list of contact objects.
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ContactRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ContactRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/tenancy/contacts/{id}/:
+    get:
+      operationId: tenancy_contacts_retrieve
+      description: Get a contact object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this contact.
+        required: true
+      tags:
+      - tenancy
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Contact'
+          description: ''
+    put:
+      operationId: tenancy_contacts_update
+      description: Put a contact object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this contact.
+        required: true
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableContactRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableContactRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Contact'
+          description: ''
+    patch:
+      operationId: tenancy_contacts_partial_update
+      description: Patch a contact object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this contact.
+        required: true
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableContactRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableContactRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Contact'
+          description: ''
+    delete:
+      operationId: tenancy_contacts_destroy
+      description: Delete a contact object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this contact.
+        required: true
+      tags:
+      - tenancy
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/tenancy/tenant-groups/:
+    get:
+      operationId: tenancy_tenant_groups_list
+      description: Get a list of tenant group objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: parent
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: parent__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: parent_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: parent_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: slug
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - tenancy
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedTenantGroupList'
+          description: ''
+    post:
+      operationId: tenancy_tenant_groups_create
+      description: Post a list of tenant group objects.
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableTenantGroupRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableTenantGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/TenantGroup'
+          description: ''
+    put:
+      operationId: tenancy_tenant_groups_bulk_update
+      description: Put a list of tenant group objects.
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/TenantGroupRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/TenantGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/TenantGroup'
+          description: ''
+    patch:
+      operationId: tenancy_tenant_groups_bulk_partial_update
+      description: Patch a list of tenant group objects.
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/TenantGroupRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/TenantGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/TenantGroup'
+          description: ''
+    delete:
+      operationId: tenancy_tenant_groups_bulk_destroy
+      description: Delete a list of tenant group objects.
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/TenantGroupRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/TenantGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/tenancy/tenant-groups/{id}/:
+    get:
+      operationId: tenancy_tenant_groups_retrieve
+      description: Get a tenant group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this tenant group.
+        required: true
+      tags:
+      - tenancy
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/TenantGroup'
+          description: ''
+    put:
+      operationId: tenancy_tenant_groups_update
+      description: Put a tenant group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this tenant group.
+        required: true
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableTenantGroupRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableTenantGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/TenantGroup'
+          description: ''
+    patch:
+      operationId: tenancy_tenant_groups_partial_update
+      description: Patch a tenant group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this tenant group.
+        required: true
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableTenantGroupRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableTenantGroupRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/TenantGroup'
+          description: ''
+    delete:
+      operationId: tenancy_tenant_groups_destroy
+      description: Delete a tenant group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this tenant group.
+        required: true
+      tags:
+      - tenancy
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/tenancy/tenants/:
+    get:
+      operationId: tenancy_tenants_list
+      description: Get a list of tenant objects.
+      parameters:
+      - in: query
+        name: contact
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact
+        explode: true
+        style: form
+      - in: query
+        name: contact__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact
+        explode: true
+        style: form
+      - in: query
+        name: contact_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group
+        explode: true
+        style: form
+      - in: query
+        name: contact_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group
+        explode: true
+        style: form
+      - in: query
+        name: contact_role
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact Role
+        explode: true
+        style: form
+      - in: query
+        name: contact_role__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact Role
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: slug
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - tenancy
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedTenantList'
+          description: ''
+    post:
+      operationId: tenancy_tenants_create
+      description: Post a list of tenant objects.
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableTenantRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableTenantRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Tenant'
+          description: ''
+    put:
+      operationId: tenancy_tenants_bulk_update
+      description: Put a list of tenant objects.
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/TenantRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/TenantRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Tenant'
+          description: ''
+    patch:
+      operationId: tenancy_tenants_bulk_partial_update
+      description: Patch a list of tenant objects.
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/TenantRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/TenantRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Tenant'
+          description: ''
+    delete:
+      operationId: tenancy_tenants_bulk_destroy
+      description: Delete a list of tenant objects.
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/TenantRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/TenantRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/tenancy/tenants/{id}/:
+    get:
+      operationId: tenancy_tenants_retrieve
+      description: Get a tenant object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this tenant.
+        required: true
+      tags:
+      - tenancy
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Tenant'
+          description: ''
+    put:
+      operationId: tenancy_tenants_update
+      description: Put a tenant object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this tenant.
+        required: true
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableTenantRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableTenantRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Tenant'
+          description: ''
+    patch:
+      operationId: tenancy_tenants_partial_update
+      description: Patch a tenant object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this tenant.
+        required: true
+      tags:
+      - tenancy
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableTenantRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableTenantRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Tenant'
+          description: ''
+    delete:
+      operationId: tenancy_tenants_destroy
+      description: Delete a tenant object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this tenant.
+        required: true
+      tags:
+      - tenancy
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/users/config/:
+    get:
+      operationId: users_config_retrieve
+      description: An API endpoint via which a user can update his or her own UserConfig
+        data (but no one else's).
+      tags:
+      - users
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: object
+                additionalProperties: {}
+          description: ''
+  /api/users/groups/:
+    get:
+      operationId: users_groups_list
+      description: Get a list of group objects.
+      parameters:
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      tags:
+      - users
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedGroupList'
+          description: ''
+    post:
+      operationId: users_groups_create
+      description: Post a list of group objects.
+      tags:
+      - users
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/GroupRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/GroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Group'
+          description: ''
+    put:
+      operationId: users_groups_bulk_update
+      description: Put a list of group objects.
+      tags:
+      - users
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/GroupRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/GroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Group'
+          description: ''
+    patch:
+      operationId: users_groups_bulk_partial_update
+      description: Patch a list of group objects.
+      tags:
+      - users
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/GroupRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/GroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Group'
+          description: ''
+    delete:
+      operationId: users_groups_bulk_destroy
+      description: Delete a list of group objects.
+      tags:
+      - users
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/GroupRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/GroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/users/groups/{id}/:
+    get:
+      operationId: users_groups_retrieve
+      description: Get a group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this group.
+        required: true
+      tags:
+      - users
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Group'
+          description: ''
+    put:
+      operationId: users_groups_update
+      description: Put a group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this group.
+        required: true
+      tags:
+      - users
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/GroupRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/GroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Group'
+          description: ''
+    patch:
+      operationId: users_groups_partial_update
+      description: Patch a group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this group.
+        required: true
+      tags:
+      - users
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedGroupRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedGroupRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Group'
+          description: ''
+    delete:
+      operationId: users_groups_destroy
+      description: Delete a group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this group.
+        required: true
+      tags:
+      - users
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/users/permissions/:
+    get:
+      operationId: users_permissions_list
+      description: Get a list of permission objects.
+      parameters:
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: enabled
+        schema:
+          type: boolean
+      - in: query
+        name: group
+        schema:
+          type: array
+          items:
+            type: string
+        description: Group (name)
+        explode: true
+        style: form
+      - in: query
+        name: group__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Group (name)
+        explode: true
+        style: form
+      - in: query
+        name: group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Group
+        explode: true
+        style: form
+      - in: query
+        name: group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Group
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: object_types
+        schema:
+          type: array
+          items:
+            type: integer
+        explode: true
+        style: form
+      - in: query
+        name: object_types__n
+        schema:
+          type: array
+          items:
+            type: integer
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: user
+        schema:
+          type: array
+          items:
+            type: string
+        description: User (name)
+        explode: true
+        style: form
+      - in: query
+        name: user__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: User (name)
+        explode: true
+        style: form
+      - in: query
+        name: user_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: User
+        explode: true
+        style: form
+      - in: query
+        name: user_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: User
+        explode: true
+        style: form
+      tags:
+      - users
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedObjectPermissionList'
+          description: ''
+    post:
+      operationId: users_permissions_create
+      description: Post a list of permission objects.
+      tags:
+      - users
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableObjectPermissionRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableObjectPermissionRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectPermission'
+          description: ''
+    put:
+      operationId: users_permissions_bulk_update
+      description: Put a list of permission objects.
+      tags:
+      - users
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ObjectPermissionRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ObjectPermissionRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ObjectPermission'
+          description: ''
+    patch:
+      operationId: users_permissions_bulk_partial_update
+      description: Patch a list of permission objects.
+      tags:
+      - users
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ObjectPermissionRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ObjectPermissionRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ObjectPermission'
+          description: ''
+    delete:
+      operationId: users_permissions_bulk_destroy
+      description: Delete a list of permission objects.
+      tags:
+      - users
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ObjectPermissionRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ObjectPermissionRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/users/permissions/{id}/:
+    get:
+      operationId: users_permissions_retrieve
+      description: Get a permission object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this permission.
+        required: true
+      tags:
+      - users
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectPermission'
+          description: ''
+    put:
+      operationId: users_permissions_update
+      description: Put a permission object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this permission.
+        required: true
+      tags:
+      - users
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableObjectPermissionRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableObjectPermissionRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectPermission'
+          description: ''
+    patch:
+      operationId: users_permissions_partial_update
+      description: Patch a permission object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this permission.
+        required: true
+      tags:
+      - users
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableObjectPermissionRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableObjectPermissionRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectPermission'
+          description: ''
+    delete:
+      operationId: users_permissions_destroy
+      description: Delete a permission object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this permission.
+        required: true
+      tags:
+      - users
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/users/tokens/:
+    get:
+      operationId: users_tokens_list
+      description: Get a list of token objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: string
+          format: date-time
+      - in: query
+        name: created__gte
+        schema:
+          type: string
+          format: date-time
+      - in: query
+        name: created__lte
+        schema:
+          type: string
+          format: date-time
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: expires
+        schema:
+          type: string
+          format: date-time
+      - in: query
+        name: expires__gte
+        schema:
+          type: string
+          format: date-time
+      - in: query
+        name: expires__lte
+        schema:
+          type: string
+          format: date-time
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: key
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: key__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: key__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: key__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: key__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: key__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: key__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: key__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: key__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: key__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: key__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: user
+        schema:
+          type: array
+          items:
+            type: string
+        description: User (name)
+        explode: true
+        style: form
+      - in: query
+        name: user__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: User (name)
+        explode: true
+        style: form
+      - in: query
+        name: user_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: User
+        explode: true
+        style: form
+      - in: query
+        name: user_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: User
+        explode: true
+        style: form
+      - in: query
+        name: write_enabled
+        schema:
+          type: boolean
+      tags:
+      - users
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedTokenList'
+          description: ''
+    post:
+      operationId: users_tokens_create
+      description: Post a list of token objects.
+      tags:
+      - users
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableTokenRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableTokenRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Token'
+          description: ''
+    put:
+      operationId: users_tokens_bulk_update
+      description: Put a list of token objects.
+      tags:
+      - users
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/TokenRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/TokenRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Token'
+          description: ''
+    patch:
+      operationId: users_tokens_bulk_partial_update
+      description: Patch a list of token objects.
+      tags:
+      - users
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/TokenRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/TokenRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Token'
+          description: ''
+    delete:
+      operationId: users_tokens_bulk_destroy
+      description: Delete a list of token objects.
+      tags:
+      - users
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/TokenRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/TokenRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/users/tokens/{id}/:
+    get:
+      operationId: users_tokens_retrieve
+      description: Get a token object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this token.
+        required: true
+      tags:
+      - users
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Token'
+          description: ''
+    put:
+      operationId: users_tokens_update
+      description: Put a token object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this token.
+        required: true
+      tags:
+      - users
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableTokenRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableTokenRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Token'
+          description: ''
+    patch:
+      operationId: users_tokens_partial_update
+      description: Patch a token object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this token.
+        required: true
+      tags:
+      - users
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableTokenRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableTokenRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Token'
+          description: ''
+    delete:
+      operationId: users_tokens_destroy
+      description: Delete a token object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this token.
+        required: true
+      tags:
+      - users
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/users/tokens/provision/:
+    post:
+      operationId: users_tokens_provision_create
+      description: Non-authenticated REST API endpoint via which a user may create
+        a Token.
+      tags:
+      - users
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableTokenRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableTokenRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Token'
+          description: ''
+  /api/users/users/:
+    get:
+      operationId: users_users_list
+      description: Get a list of user objects.
+      parameters:
+      - in: query
+        name: email
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: email__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: email__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: email__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: email__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: email__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: email__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: email__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: email__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: email__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: email__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: first_name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: first_name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: first_name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: first_name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: first_name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: first_name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: first_name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: first_name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: first_name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: first_name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: first_name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: group
+        schema:
+          type: array
+          items:
+            type: string
+        description: Group (name)
+        explode: true
+        style: form
+      - in: query
+        name: group__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Group (name)
+        explode: true
+        style: form
+      - in: query
+        name: group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Group
+        explode: true
+        style: form
+      - in: query
+        name: group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Group
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: is_active
+        schema:
+          type: boolean
+      - in: query
+        name: is_staff
+        schema:
+          type: boolean
+      - in: query
+        name: last_name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: last_name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: last_name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: last_name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: last_name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: last_name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: last_name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: last_name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: last_name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: last_name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: last_name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: username
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: username__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: username__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: username__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: username__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: username__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: username__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: username__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: username__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: username__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: username__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      tags:
+      - users
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedUserList'
+          description: ''
+    post:
+      operationId: users_users_create
+      description: Post a list of user objects.
+      tags:
+      - users
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableUserRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableUserRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/User'
+          description: ''
+    put:
+      operationId: users_users_bulk_update
+      description: Put a list of user objects.
+      tags:
+      - users
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/UserRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/UserRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/User'
+          description: ''
+    patch:
+      operationId: users_users_bulk_partial_update
+      description: Patch a list of user objects.
+      tags:
+      - users
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/UserRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/UserRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/User'
+          description: ''
+    delete:
+      operationId: users_users_bulk_destroy
+      description: Delete a list of user objects.
+      tags:
+      - users
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/UserRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/UserRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/users/users/{id}/:
+    get:
+      operationId: users_users_retrieve
+      description: Get a user object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this user.
+        required: true
+      tags:
+      - users
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/User'
+          description: ''
+    put:
+      operationId: users_users_update
+      description: Put a user object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this user.
+        required: true
+      tags:
+      - users
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableUserRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableUserRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/User'
+          description: ''
+    patch:
+      operationId: users_users_partial_update
+      description: Patch a user object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this user.
+        required: true
+      tags:
+      - users
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableUserRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableUserRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/User'
+          description: ''
+    delete:
+      operationId: users_users_destroy
+      description: Delete a user object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this user.
+        required: true
+      tags:
+      - users
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/virtualization/cluster-groups/:
+    get:
+      operationId: virtualization_cluster_groups_list
+      description: Get a list of cluster group objects.
+      parameters:
+      - in: query
+        name: contact
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact
+        explode: true
+        style: form
+      - in: query
+        name: contact__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact
+        explode: true
+        style: form
+      - in: query
+        name: contact_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group
+        explode: true
+        style: form
+      - in: query
+        name: contact_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group
+        explode: true
+        style: form
+      - in: query
+        name: contact_role
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact Role
+        explode: true
+        style: form
+      - in: query
+        name: contact_role__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact Role
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: slug
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - virtualization
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedClusterGroupList'
+          description: ''
+    post:
+      operationId: virtualization_cluster_groups_create
+      description: Post a list of cluster group objects.
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ClusterGroupRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ClusterGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ClusterGroup'
+          description: ''
+    put:
+      operationId: virtualization_cluster_groups_bulk_update
+      description: Put a list of cluster group objects.
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ClusterGroupRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ClusterGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ClusterGroup'
+          description: ''
+    patch:
+      operationId: virtualization_cluster_groups_bulk_partial_update
+      description: Patch a list of cluster group objects.
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ClusterGroupRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ClusterGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ClusterGroup'
+          description: ''
+    delete:
+      operationId: virtualization_cluster_groups_bulk_destroy
+      description: Delete a list of cluster group objects.
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ClusterGroupRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ClusterGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/virtualization/cluster-groups/{id}/:
+    get:
+      operationId: virtualization_cluster_groups_retrieve
+      description: Get a cluster group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this cluster group.
+        required: true
+      tags:
+      - virtualization
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ClusterGroup'
+          description: ''
+    put:
+      operationId: virtualization_cluster_groups_update
+      description: Put a cluster group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this cluster group.
+        required: true
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ClusterGroupRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ClusterGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ClusterGroup'
+          description: ''
+    patch:
+      operationId: virtualization_cluster_groups_partial_update
+      description: Patch a cluster group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this cluster group.
+        required: true
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedClusterGroupRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedClusterGroupRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ClusterGroup'
+          description: ''
+    delete:
+      operationId: virtualization_cluster_groups_destroy
+      description: Delete a cluster group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this cluster group.
+        required: true
+      tags:
+      - virtualization
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/virtualization/cluster-types/:
+    get:
+      operationId: virtualization_cluster_types_list
+      description: Get a list of cluster type objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: slug
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - virtualization
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedClusterTypeList'
+          description: ''
+    post:
+      operationId: virtualization_cluster_types_create
+      description: Post a list of cluster type objects.
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ClusterTypeRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ClusterTypeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ClusterType'
+          description: ''
+    put:
+      operationId: virtualization_cluster_types_bulk_update
+      description: Put a list of cluster type objects.
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ClusterTypeRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ClusterTypeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ClusterType'
+          description: ''
+    patch:
+      operationId: virtualization_cluster_types_bulk_partial_update
+      description: Patch a list of cluster type objects.
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ClusterTypeRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ClusterTypeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ClusterType'
+          description: ''
+    delete:
+      operationId: virtualization_cluster_types_bulk_destroy
+      description: Delete a list of cluster type objects.
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ClusterTypeRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ClusterTypeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/virtualization/cluster-types/{id}/:
+    get:
+      operationId: virtualization_cluster_types_retrieve
+      description: Get a cluster type object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this cluster type.
+        required: true
+      tags:
+      - virtualization
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ClusterType'
+          description: ''
+    put:
+      operationId: virtualization_cluster_types_update
+      description: Put a cluster type object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this cluster type.
+        required: true
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ClusterTypeRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ClusterTypeRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ClusterType'
+          description: ''
+    patch:
+      operationId: virtualization_cluster_types_partial_update
+      description: Patch a cluster type object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this cluster type.
+        required: true
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedClusterTypeRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedClusterTypeRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ClusterType'
+          description: ''
+    delete:
+      operationId: virtualization_cluster_types_destroy
+      description: Delete a cluster type object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this cluster type.
+        required: true
+      tags:
+      - virtualization
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/virtualization/clusters/:
+    get:
+      operationId: virtualization_clusters_list
+      description: Get a list of cluster objects.
+      parameters:
+      - in: query
+        name: contact
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact
+        explode: true
+        style: form
+      - in: query
+        name: contact__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact
+        explode: true
+        style: form
+      - in: query
+        name: contact_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group
+        explode: true
+        style: form
+      - in: query
+        name: contact_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group
+        explode: true
+        style: form
+      - in: query
+        name: contact_role
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact Role
+        explode: true
+        style: form
+      - in: query
+        name: contact_role__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact Role
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: group
+        schema:
+          type: array
+          items:
+            type: string
+        description: Parent group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: group__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Parent group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: group_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Parent group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Parent group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: region
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: status
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `planned` - Planned
+          * `staging` - Staging
+          * `active` - Active
+          * `decommissioning` - Decommissioning
+          * `offline` - Offline
+        explode: true
+        style: form
+      - in: query
+        name: status__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `planned` - Planned
+          * `staging` - Staging
+          * `active` - Active
+          * `decommissioning` - Decommissioning
+          * `offline` - Offline
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tenant
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: type
+        schema:
+          type: array
+          items:
+            type: string
+        description: Cluster type (slug)
+        explode: true
+        style: form
+      - in: query
+        name: type__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Cluster type (slug)
+        explode: true
+        style: form
+      - in: query
+        name: type_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Cluster type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: type_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Cluster type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - virtualization
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedClusterList'
+          description: ''
+    post:
+      operationId: virtualization_clusters_create
+      description: Post a list of cluster objects.
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableClusterRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableClusterRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Cluster'
+          description: ''
+    put:
+      operationId: virtualization_clusters_bulk_update
+      description: Put a list of cluster objects.
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ClusterRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ClusterRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Cluster'
+          description: ''
+    patch:
+      operationId: virtualization_clusters_bulk_partial_update
+      description: Patch a list of cluster objects.
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ClusterRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ClusterRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Cluster'
+          description: ''
+    delete:
+      operationId: virtualization_clusters_bulk_destroy
+      description: Delete a list of cluster objects.
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ClusterRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/ClusterRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/virtualization/clusters/{id}/:
+    get:
+      operationId: virtualization_clusters_retrieve
+      description: Get a cluster object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this cluster.
+        required: true
+      tags:
+      - virtualization
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Cluster'
+          description: ''
+    put:
+      operationId: virtualization_clusters_update
+      description: Put a cluster object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this cluster.
+        required: true
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableClusterRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableClusterRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Cluster'
+          description: ''
+    patch:
+      operationId: virtualization_clusters_partial_update
+      description: Patch a cluster object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this cluster.
+        required: true
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableClusterRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableClusterRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Cluster'
+          description: ''
+    delete:
+      operationId: virtualization_clusters_destroy
+      description: Delete a cluster object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this cluster.
+        required: true
+      tags:
+      - virtualization
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/virtualization/interfaces/:
+    get:
+      operationId: virtualization_interfaces_list
+      description: Get a list of interface objects.
+      parameters:
+      - in: query
+        name: bridge_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Bridged interface (ID)
+        explode: true
+        style: form
+      - in: query
+        name: bridge_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Bridged interface (ID)
+        explode: true
+        style: form
+      - in: query
+        name: cluster
+        schema:
+          type: array
+          items:
+            type: string
+        description: Cluster
+        explode: true
+        style: form
+      - in: query
+        name: cluster__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Cluster
+        explode: true
+        style: form
+      - in: query
+        name: cluster_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Cluster (ID)
+        explode: true
+        style: form
+      - in: query
+        name: cluster_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Cluster (ID)
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: enabled
+        schema:
+          type: boolean
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: l2vpn
+        schema:
+          type: array
+          items:
+            type: integer
+            maximum: 9223372036854775807
+            minimum: -9223372036854775808
+            format: int64
+            nullable: true
+        description: L2VPN
+        explode: true
+        style: form
+      - in: query
+        name: l2vpn__n
+        schema:
+          type: array
+          items:
+            type: integer
+            maximum: 9223372036854775807
+            minimum: -9223372036854775808
+            format: int64
+            nullable: true
+        description: L2VPN
+        explode: true
+        style: form
+      - in: query
+        name: l2vpn_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: L2VPN (ID)
+        explode: true
+        style: form
+      - in: query
+        name: l2vpn_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: L2VPN (ID)
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: mac_address
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mtu
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: mtu__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: mtu__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: mtu__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: mtu__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: mtu__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: parent_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Parent interface (ID)
+        explode: true
+        style: form
+      - in: query
+        name: parent_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Parent interface (ID)
+        explode: true
+        style: form
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: virtual_machine
+        schema:
+          type: array
+          items:
+            type: string
+        description: Virtual machine
+        explode: true
+        style: form
+      - in: query
+        name: virtual_machine__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Virtual machine
+        explode: true
+        style: form
+      - in: query
+        name: virtual_machine_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Virtual machine (ID)
+        explode: true
+        style: form
+      - in: query
+        name: virtual_machine_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Virtual machine (ID)
+        explode: true
+        style: form
+      - in: query
+        name: vlan
+        schema:
+          type: string
+        description: Assigned VID
+      - in: query
+        name: vlan_id
+        schema:
+          type: string
+        description: Assigned VLAN
+      - in: query
+        name: vrf
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+            title: Route distinguisher
+        description: VRF (RD)
+        explode: true
+        style: form
+      - in: query
+        name: vrf__n
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+            title: Route distinguisher
+        description: VRF (RD)
+        explode: true
+        style: form
+      - in: query
+        name: vrf_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: VRF
+        explode: true
+        style: form
+      - in: query
+        name: vrf_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: VRF
+        explode: true
+        style: form
+      tags:
+      - virtualization
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedVMInterfaceList'
+          description: ''
+    post:
+      operationId: virtualization_interfaces_create
+      description: Post a list of interface objects.
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableVMInterfaceRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableVMInterfaceRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VMInterface'
+          description: ''
+    put:
+      operationId: virtualization_interfaces_bulk_update
+      description: Put a list of interface objects.
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VMInterfaceRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VMInterfaceRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/VMInterface'
+          description: ''
+    patch:
+      operationId: virtualization_interfaces_bulk_partial_update
+      description: Patch a list of interface objects.
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VMInterfaceRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VMInterfaceRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/VMInterface'
+          description: ''
+    delete:
+      operationId: virtualization_interfaces_bulk_destroy
+      description: Delete a list of interface objects.
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VMInterfaceRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VMInterfaceRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/virtualization/interfaces/{id}/:
+    get:
+      operationId: virtualization_interfaces_retrieve
+      description: Get a interface object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this interface.
+        required: true
+      tags:
+      - virtualization
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VMInterface'
+          description: ''
+    put:
+      operationId: virtualization_interfaces_update
+      description: Put a interface object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this interface.
+        required: true
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableVMInterfaceRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableVMInterfaceRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VMInterface'
+          description: ''
+    patch:
+      operationId: virtualization_interfaces_partial_update
+      description: Patch a interface object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this interface.
+        required: true
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableVMInterfaceRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableVMInterfaceRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VMInterface'
+          description: ''
+    delete:
+      operationId: virtualization_interfaces_destroy
+      description: Delete a interface object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this interface.
+        required: true
+      tags:
+      - virtualization
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/virtualization/virtual-machines/:
+    get:
+      operationId: virtualization_virtual_machines_list
+      description: Get a list of virtual machine objects.
+      parameters:
+      - in: query
+        name: cluster
+        schema:
+          type: array
+          items:
+            type: string
+        description: Cluster
+        explode: true
+        style: form
+      - in: query
+        name: cluster__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Cluster
+        explode: true
+        style: form
+      - in: query
+        name: cluster_group
+        schema:
+          type: array
+          items:
+            type: string
+        description: Cluster group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: cluster_group__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Cluster group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: cluster_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Cluster group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: cluster_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Cluster group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: cluster_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Cluster (ID)
+        explode: true
+        style: form
+      - in: query
+        name: cluster_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Cluster (ID)
+        explode: true
+        style: form
+      - in: query
+        name: cluster_type
+        schema:
+          type: array
+          items:
+            type: string
+        description: Cluster type (slug)
+        explode: true
+        style: form
+      - in: query
+        name: cluster_type__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Cluster type (slug)
+        explode: true
+        style: form
+      - in: query
+        name: cluster_type_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Cluster type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: cluster_type_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Cluster type (ID)
+        explode: true
+        style: form
+      - in: query
+        name: contact
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact
+        explode: true
+        style: form
+      - in: query
+        name: contact__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact
+        explode: true
+        style: form
+      - in: query
+        name: contact_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group
+        explode: true
+        style: form
+      - in: query
+        name: contact_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact group
+        explode: true
+        style: form
+      - in: query
+        name: contact_role
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact Role
+        explode: true
+        style: form
+      - in: query
+        name: contact_role__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Contact Role
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: device
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+        description: Device
+        explode: true
+        style: form
+      - in: query
+        name: device__n
+        schema:
+          type: array
+          items:
+            type: string
+            nullable: true
+        description: Device
+        explode: true
+        style: form
+      - in: query
+        name: device_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Device (ID)
+        explode: true
+        style: form
+      - in: query
+        name: device_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Device (ID)
+        explode: true
+        style: form
+      - in: query
+        name: disk
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: disk__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: disk__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: disk__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: disk__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: disk__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: has_primary_ip
+        schema:
+          type: boolean
+        description: Has a primary IP
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: local_context_data
+        schema:
+          type: boolean
+        description: Has local config context data
+      - in: query
+        name: mac_address
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: mac_address__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: memory
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: memory__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: memory__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: memory__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: memory__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: memory__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: platform
+        schema:
+          type: array
+          items:
+            type: string
+        description: Platform (slug)
+        explode: true
+        style: form
+      - in: query
+        name: platform__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Platform (slug)
+        explode: true
+        style: form
+      - in: query
+        name: platform_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Platform (ID)
+        explode: true
+        style: form
+      - in: query
+        name: platform_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Platform (ID)
+        explode: true
+        style: form
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: region
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (slug)
+        explode: true
+        style: form
+      - in: query
+        name: region_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: region_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Region (ID)
+        explode: true
+        style: form
+      - in: query
+        name: role
+        schema:
+          type: array
+          items:
+            type: string
+        description: Role (slug)
+        explode: true
+        style: form
+      - in: query
+        name: role__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Role (slug)
+        explode: true
+        style: form
+      - in: query
+        name: role_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Role (ID)
+        explode: true
+        style: form
+      - in: query
+        name: role_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Role (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Site (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Site group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: site_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Site (ID)
+        explode: true
+        style: form
+      - in: query
+        name: status
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `offline` - Offline
+          * `active` - Active
+          * `planned` - Planned
+          * `staged` - Staged
+          * `failed` - Failed
+          * `decommissioning` - Decommissioning
+        explode: true
+        style: form
+      - in: query
+        name: status__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `offline` - Offline
+          * `active` - Active
+          * `planned` - Planned
+          * `staged` - Staged
+          * `failed` - Failed
+          * `decommissioning` - Decommissioning
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tenant
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: vcpus
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: vcpus__gt
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: vcpus__gte
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: vcpus__lt
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: vcpus__lte
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      - in: query
+        name: vcpus__n
+        schema:
+          type: array
+          items:
+            type: number
+            format: double
+        explode: true
+        style: form
+      tags:
+      - virtualization
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedVirtualMachineWithConfigContextList'
+          description: ''
+    post:
+      operationId: virtualization_virtual_machines_create
+      description: Post a list of virtual machine objects.
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableVirtualMachineWithConfigContextRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableVirtualMachineWithConfigContextRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VirtualMachineWithConfigContext'
+          description: ''
+    put:
+      operationId: virtualization_virtual_machines_bulk_update
+      description: Put a list of virtual machine objects.
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VirtualMachineWithConfigContextRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VirtualMachineWithConfigContextRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/VirtualMachineWithConfigContext'
+          description: ''
+    patch:
+      operationId: virtualization_virtual_machines_bulk_partial_update
+      description: Patch a list of virtual machine objects.
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VirtualMachineWithConfigContextRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VirtualMachineWithConfigContextRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/VirtualMachineWithConfigContext'
+          description: ''
+    delete:
+      operationId: virtualization_virtual_machines_bulk_destroy
+      description: Delete a list of virtual machine objects.
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VirtualMachineWithConfigContextRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/VirtualMachineWithConfigContextRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/virtualization/virtual-machines/{id}/:
+    get:
+      operationId: virtualization_virtual_machines_retrieve
+      description: Get a virtual machine object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this virtual machine.
+        required: true
+      tags:
+      - virtualization
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VirtualMachineWithConfigContext'
+          description: ''
+    put:
+      operationId: virtualization_virtual_machines_update
+      description: Put a virtual machine object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this virtual machine.
+        required: true
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableVirtualMachineWithConfigContextRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableVirtualMachineWithConfigContextRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VirtualMachineWithConfigContext'
+          description: ''
+    patch:
+      operationId: virtualization_virtual_machines_partial_update
+      description: Patch a virtual machine object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this virtual machine.
+        required: true
+      tags:
+      - virtualization
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableVirtualMachineWithConfigContextRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableVirtualMachineWithConfigContextRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VirtualMachineWithConfigContext'
+          description: ''
+    delete:
+      operationId: virtualization_virtual_machines_destroy
+      description: Delete a virtual machine object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this virtual machine.
+        required: true
+      tags:
+      - virtualization
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/wireless/wireless-lan-groups/:
+    get:
+      operationId: wireless_wireless_lan_groups_list
+      description: Get a list of Wireless LAN Group objects.
+      parameters:
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: name__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: parent
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: parent__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: parent_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        explode: true
+        style: form
+      - in: query
+        name: parent_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        explode: true
+        style: form
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: slug
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: slug__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - wireless
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedWirelessLANGroupList'
+          description: ''
+    post:
+      operationId: wireless_wireless_lan_groups_create
+      description: Post a list of Wireless LAN Group objects.
+      tags:
+      - wireless
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableWirelessLANGroupRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableWirelessLANGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/WirelessLANGroup'
+          description: ''
+    put:
+      operationId: wireless_wireless_lan_groups_bulk_update
+      description: Put a list of Wireless LAN Group objects.
+      tags:
+      - wireless
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/WirelessLANGroupRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/WirelessLANGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/WirelessLANGroup'
+          description: ''
+    patch:
+      operationId: wireless_wireless_lan_groups_bulk_partial_update
+      description: Patch a list of Wireless LAN Group objects.
+      tags:
+      - wireless
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/WirelessLANGroupRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/WirelessLANGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/WirelessLANGroup'
+          description: ''
+    delete:
+      operationId: wireless_wireless_lan_groups_bulk_destroy
+      description: Delete a list of Wireless LAN Group objects.
+      tags:
+      - wireless
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/WirelessLANGroupRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/WirelessLANGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/wireless/wireless-lan-groups/{id}/:
+    get:
+      operationId: wireless_wireless_lan_groups_retrieve
+      description: Get a Wireless LAN Group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this Wireless LAN Group.
+        required: true
+      tags:
+      - wireless
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/WirelessLANGroup'
+          description: ''
+    put:
+      operationId: wireless_wireless_lan_groups_update
+      description: Put a Wireless LAN Group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this Wireless LAN Group.
+        required: true
+      tags:
+      - wireless
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableWirelessLANGroupRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableWirelessLANGroupRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/WirelessLANGroup'
+          description: ''
+    patch:
+      operationId: wireless_wireless_lan_groups_partial_update
+      description: Patch a Wireless LAN Group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this Wireless LAN Group.
+        required: true
+      tags:
+      - wireless
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableWirelessLANGroupRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableWirelessLANGroupRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/WirelessLANGroup'
+          description: ''
+    delete:
+      operationId: wireless_wireless_lan_groups_destroy
+      description: Delete a Wireless LAN Group object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this Wireless LAN Group.
+        required: true
+      tags:
+      - wireless
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/wireless/wireless-lans/:
+    get:
+      operationId: wireless_wireless_lans_list
+      description: Get a list of Wireless LAN objects.
+      parameters:
+      - in: query
+        name: auth_cipher
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `auto` - Auto
+          * `tkip` - TKIP
+          * `aes` - AES
+        explode: true
+        style: form
+      - in: query
+        name: auth_cipher__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `auto` - Auto
+          * `tkip` - TKIP
+          * `aes` - AES
+        explode: true
+        style: form
+      - in: query
+        name: auth_psk
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_psk__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_psk__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_psk__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_psk__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_psk__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_psk__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_psk__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_psk__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_psk__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_psk__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_type
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `open` - Open
+          * `wep` - WEP
+          * `wpa-personal` - WPA Personal (PSK)
+          * `wpa-enterprise` - WPA Enterprise
+        explode: true
+        style: form
+      - in: query
+        name: auth_type__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `open` - Open
+          * `wep` - WEP
+          * `wpa-personal` - WPA Personal (PSK)
+          * `wpa-enterprise` - WPA Enterprise
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: group
+        schema:
+          type: array
+          items:
+            type: integer
+        explode: true
+        style: form
+      - in: query
+        name: group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        explode: true
+        style: form
+      - in: query
+        name: group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        explode: true
+        style: form
+      - in: query
+        name: group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: ssid
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ssid__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ssid__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ssid__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ssid__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ssid__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ssid__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ssid__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ssid__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ssid__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ssid__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: status
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `active` - Active
+          * `reserved` - Reserved
+          * `disabled` - Disabled
+          * `deprecated` - Deprecated
+        explode: true
+        style: form
+      - in: query
+        name: status__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `active` - Active
+          * `reserved` - Reserved
+          * `disabled` - Disabled
+          * `deprecated` - Deprecated
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tenant
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: vlan_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        explode: true
+        style: form
+      - in: query
+        name: vlan_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        explode: true
+        style: form
+      tags:
+      - wireless
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedWirelessLANList'
+          description: ''
+    post:
+      operationId: wireless_wireless_lans_create
+      description: Post a list of Wireless LAN objects.
+      tags:
+      - wireless
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableWirelessLANRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableWirelessLANRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/WirelessLAN'
+          description: ''
+    put:
+      operationId: wireless_wireless_lans_bulk_update
+      description: Put a list of Wireless LAN objects.
+      tags:
+      - wireless
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/WirelessLANRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/WirelessLANRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/WirelessLAN'
+          description: ''
+    patch:
+      operationId: wireless_wireless_lans_bulk_partial_update
+      description: Patch a list of Wireless LAN objects.
+      tags:
+      - wireless
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/WirelessLANRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/WirelessLANRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/WirelessLAN'
+          description: ''
+    delete:
+      operationId: wireless_wireless_lans_bulk_destroy
+      description: Delete a list of Wireless LAN objects.
+      tags:
+      - wireless
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/WirelessLANRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/WirelessLANRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/wireless/wireless-lans/{id}/:
+    get:
+      operationId: wireless_wireless_lans_retrieve
+      description: Get a Wireless LAN object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this Wireless LAN.
+        required: true
+      tags:
+      - wireless
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/WirelessLAN'
+          description: ''
+    put:
+      operationId: wireless_wireless_lans_update
+      description: Put a Wireless LAN object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this Wireless LAN.
+        required: true
+      tags:
+      - wireless
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableWirelessLANRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableWirelessLANRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/WirelessLAN'
+          description: ''
+    patch:
+      operationId: wireless_wireless_lans_partial_update
+      description: Patch a Wireless LAN object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this Wireless LAN.
+        required: true
+      tags:
+      - wireless
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableWirelessLANRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableWirelessLANRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/WirelessLAN'
+          description: ''
+    delete:
+      operationId: wireless_wireless_lans_destroy
+      description: Delete a Wireless LAN object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this Wireless LAN.
+        required: true
+      tags:
+      - wireless
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/wireless/wireless-links/:
+    get:
+      operationId: wireless_wireless_links_list
+      description: Get a list of wireless link objects.
+      parameters:
+      - in: query
+        name: auth_cipher
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `auto` - Auto
+          * `tkip` - TKIP
+          * `aes` - AES
+        explode: true
+        style: form
+      - in: query
+        name: auth_cipher__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `auto` - Auto
+          * `tkip` - TKIP
+          * `aes` - AES
+        explode: true
+        style: form
+      - in: query
+        name: auth_psk
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_psk__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_psk__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_psk__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_psk__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_psk__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_psk__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_psk__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_psk__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_psk__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_psk__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: auth_type
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `open` - Open
+          * `wep` - WEP
+          * `wpa-personal` - WPA Personal (PSK)
+          * `wpa-enterprise` - WPA Enterprise
+        explode: true
+        style: form
+      - in: query
+        name: auth_type__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `open` - Open
+          * `wep` - WEP
+          * `wpa-personal` - WPA Personal (PSK)
+          * `wpa-enterprise` - WPA Enterprise
+        explode: true
+        style: form
+      - in: query
+        name: created
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: created_by_request
+        schema:
+          type: string
+          format: uuid
+      - in: query
+        name: description
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: description__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interface_a_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interface_a_id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interface_a_id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interface_a_id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interface_a_id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interface_a_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interface_b_id
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interface_b_id__gt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interface_b_id__gte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interface_b_id__lt
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interface_b_id__lte
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: interface_b_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        explode: true
+        style: form
+      - in: query
+        name: last_updated
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__gte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lt
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__lte
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - in: query
+        name: last_updated__n
+        schema:
+          type: array
+          items:
+            type: string
+            format: date-time
+        explode: true
+        style: form
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: q
+        schema:
+          type: string
+        description: Search
+      - in: query
+        name: ssid
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ssid__empty
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ssid__ic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ssid__ie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ssid__iew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ssid__isw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ssid__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ssid__nic
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ssid__nie
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ssid__niew
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: ssid__nisw
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: status
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `connected` - Connected
+          * `planned` - Planned
+          * `decommissioning` - Decommissioning
+        explode: true
+        style: form
+      - in: query
+        name: status__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: |-
+          * `connected` - Connected
+          * `planned` - Planned
+          * `decommissioning` - Decommissioning
+        explode: true
+        style: form
+      - in: query
+        name: tag
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tag__n
+        schema:
+          type: array
+          items:
+            type: string
+        explode: true
+        style: form
+      - in: query
+        name: tenant
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant__n
+        schema:
+          type: array
+          items:
+            type: string
+        description: Tenant (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (slug)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_group_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+        description: Tenant Group (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: tenant_id__n
+        schema:
+          type: array
+          items:
+            type: integer
+            nullable: true
+        description: Tenant (ID)
+        explode: true
+        style: form
+      - in: query
+        name: updated_by_request
+        schema:
+          type: string
+          format: uuid
+      tags:
+      - wireless
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedWirelessLinkList'
+          description: ''
+    post:
+      operationId: wireless_wireless_links_create
+      description: Post a list of wireless link objects.
+      tags:
+      - wireless
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableWirelessLinkRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableWirelessLinkRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/WirelessLink'
+          description: ''
+    put:
+      operationId: wireless_wireless_links_bulk_update
+      description: Put a list of wireless link objects.
+      tags:
+      - wireless
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/WirelessLinkRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/WirelessLinkRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/WirelessLink'
+          description: ''
+    patch:
+      operationId: wireless_wireless_links_bulk_partial_update
+      description: Patch a list of wireless link objects.
+      tags:
+      - wireless
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/WirelessLinkRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/WirelessLinkRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/WirelessLink'
+          description: ''
+    delete:
+      operationId: wireless_wireless_links_bulk_destroy
+      description: Delete a list of wireless link objects.
+      tags:
+      - wireless
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/WirelessLinkRequest'
+          multipart/form-data:
+            schema:
+              type: array
+              items:
+                $ref: '#/components/schemas/WirelessLinkRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/wireless/wireless-links/{id}/:
+    get:
+      operationId: wireless_wireless_links_retrieve
+      description: Get a wireless link object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this wireless link.
+        required: true
+      tags:
+      - wireless
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/WirelessLink'
+          description: ''
+    put:
+      operationId: wireless_wireless_links_update
+      description: Put a wireless link object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this wireless link.
+        required: true
+      tags:
+      - wireless
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/WritableWirelessLinkRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/WritableWirelessLinkRequest'
+        required: true
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/WirelessLink'
+          description: ''
+    patch:
+      operationId: wireless_wireless_links_partial_update
+      description: Patch a wireless link object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this wireless link.
+        required: true
+      tags:
+      - wireless
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableWirelessLinkRequest'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedWritableWirelessLinkRequest'
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/WirelessLink'
+          description: ''
+    delete:
+      operationId: wireless_wireless_links_destroy
+      description: Delete a wireless link object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        description: A unique integer value identifying this wireless link.
+        required: true
+      tags:
+      - wireless
+      security:
+      - cookieAuth: []
+      - tokenAuth: []
+      responses:
+        '204':
+          description: No response body
+components:
+  schemas:
+    ASN:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        asn:
+          type: integer
+          maximum: 4294967295
+          minimum: 1
+          format: int64
+          description: 16- or 32-bit autonomous system number
+        rir:
+          allOf:
+          - $ref: '#/components/schemas/NestedRIR'
+          nullable: true
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenant'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        site_count:
+          type: integer
+          readOnly: true
+        provider_count:
+          type: integer
+          readOnly: true
+      required:
+      - asn
+      - created
+      - display
+      - id
+      - last_updated
+      - provider_count
+      - site_count
+      - url
+    ASNRange:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        rir:
+          $ref: '#/components/schemas/NestedRIR'
+        start:
+          type: integer
+          maximum: 4294967295
+          minimum: 1
+          format: int64
+        end:
+          type: integer
+          maximum: 4294967295
+          minimum: 1
+          format: int64
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenant'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        asn_count:
+          type: integer
+          readOnly: true
+      required:
+      - asn_count
+      - created
+      - display
+      - end
+      - id
+      - last_updated
+      - name
+      - rir
+      - slug
+      - start
+      - url
+    ASNRangeRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        rir:
+          $ref: '#/components/schemas/NestedRIRRequest'
+        start:
+          type: integer
+          maximum: 4294967295
+          minimum: 1
+          format: int64
+        end:
+          type: integer
+          maximum: 4294967295
+          minimum: 1
+          format: int64
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenantRequest'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - end
+      - name
+      - rir
+      - slug
+      - start
+    ASNRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        asn:
+          type: integer
+          maximum: 4294967295
+          minimum: 1
+          format: int64
+          description: 16- or 32-bit autonomous system number
+        rir:
+          allOf:
+          - $ref: '#/components/schemas/NestedRIRRequest'
+          nullable: true
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenantRequest'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - asn
+    Aggregate:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        family:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          readOnly: true
+        prefix:
+          type: string
+        rir:
+          $ref: '#/components/schemas/NestedRIR'
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenant'
+          nullable: true
+        date_added:
+          type: string
+          format: date
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - display
+      - family
+      - id
+      - last_updated
+      - prefix
+      - rir
+      - url
+    AggregateRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        prefix:
+          type: string
+          minLength: 1
+        rir:
+          $ref: '#/components/schemas/NestedRIRRequest'
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenantRequest'
+          nullable: true
+        date_added:
+          type: string
+          format: date
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - prefix
+      - rir
+    AvailableASN:
+      type: object
+      description: Representation of an ASN which does not exist in the database.
+      properties:
+        asn:
+          type: integer
+          readOnly: true
+      required:
+      - asn
+    AvailableIP:
+      type: object
+      description: Representation of an IP address which does not exist in the database.
+      properties:
+        family:
+          type: integer
+          readOnly: true
+        address:
+          type: string
+          readOnly: true
+        vrf:
+          allOf:
+          - $ref: '#/components/schemas/NestedVRF'
+          readOnly: true
+      required:
+      - address
+      - family
+      - vrf
+    AvailablePrefix:
+      type: object
+      description: Representation of a prefix which does not exist in the database.
+      properties:
+        family:
+          type: integer
+          readOnly: true
+        prefix:
+          type: string
+          readOnly: true
+        vrf:
+          allOf:
+          - $ref: '#/components/schemas/NestedVRF'
+          readOnly: true
+      required:
+      - family
+      - prefix
+      - vrf
+    AvailableVLAN:
+      type: object
+      description: Representation of a VLAN which does not exist in the database.
+      properties:
+        vid:
+          type: integer
+          readOnly: true
+        group:
+          allOf:
+          - $ref: '#/components/schemas/NestedVLANGroup'
+          readOnly: true
+      required:
+      - group
+      - vid
+    Cable:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        type:
+          enum:
+          - cat3
+          - cat5
+          - cat5e
+          - cat6
+          - cat6a
+          - cat7
+          - cat7a
+          - cat8
+          - dac-active
+          - dac-passive
+          - mrj21-trunk
+          - coaxial
+          - mmf
+          - mmf-om1
+          - mmf-om2
+          - mmf-om3
+          - mmf-om4
+          - mmf-om5
+          - smf
+          - smf-os1
+          - smf-os2
+          - aoc
+          - power
+          - ''
+          type: string
+          description: |-
+            * `cat3` - CAT3
+            * `cat5` - CAT5
+            * `cat5e` - CAT5e
+            * `cat6` - CAT6
+            * `cat6a` - CAT6a
+            * `cat7` - CAT7
+            * `cat7a` - CAT7a
+            * `cat8` - CAT8
+            * `dac-active` - Direct Attach Copper (Active)
+            * `dac-passive` - Direct Attach Copper (Passive)
+            * `mrj21-trunk` - MRJ21 Trunk
+            * `coaxial` - Coaxial
+            * `mmf` - Multimode Fiber
+            * `mmf-om1` - Multimode Fiber (OM1)
+            * `mmf-om2` - Multimode Fiber (OM2)
+            * `mmf-om3` - Multimode Fiber (OM3)
+            * `mmf-om4` - Multimode Fiber (OM4)
+            * `mmf-om5` - Multimode Fiber (OM5)
+            * `smf` - Singlemode Fiber
+            * `smf-os1` - Singlemode Fiber (OS1)
+            * `smf-os2` - Singlemode Fiber (OS2)
+            * `aoc` - Active Optical Cabling (AOC)
+            * `power` - Power
+        a_terminations:
+          type: array
+          items:
+            $ref: '#/components/schemas/GenericObject'
+        b_terminations:
+          type: array
+          items:
+            $ref: '#/components/schemas/GenericObject'
+        status:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenant'
+          nullable: true
+        label:
+          type: string
+          maxLength: 100
+        color:
+          type: string
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        length:
+          type: number
+          format: double
+          maximum: 1000000
+          minimum: -1000000
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+        length_unit:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - display
+      - id
+      - last_updated
+      - url
+    CableRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        type:
+          enum:
+          - cat3
+          - cat5
+          - cat5e
+          - cat6
+          - cat6a
+          - cat7
+          - cat7a
+          - cat8
+          - dac-active
+          - dac-passive
+          - mrj21-trunk
+          - coaxial
+          - mmf
+          - mmf-om1
+          - mmf-om2
+          - mmf-om3
+          - mmf-om4
+          - mmf-om5
+          - smf
+          - smf-os1
+          - smf-os2
+          - aoc
+          - power
+          - ''
+          type: string
+          description: |-
+            * `cat3` - CAT3
+            * `cat5` - CAT5
+            * `cat5e` - CAT5e
+            * `cat6` - CAT6
+            * `cat6a` - CAT6a
+            * `cat7` - CAT7
+            * `cat7a` - CAT7a
+            * `cat8` - CAT8
+            * `dac-active` - Direct Attach Copper (Active)
+            * `dac-passive` - Direct Attach Copper (Passive)
+            * `mrj21-trunk` - MRJ21 Trunk
+            * `coaxial` - Coaxial
+            * `mmf` - Multimode Fiber
+            * `mmf-om1` - Multimode Fiber (OM1)
+            * `mmf-om2` - Multimode Fiber (OM2)
+            * `mmf-om3` - Multimode Fiber (OM3)
+            * `mmf-om4` - Multimode Fiber (OM4)
+            * `mmf-om5` - Multimode Fiber (OM5)
+            * `smf` - Singlemode Fiber
+            * `smf-os1` - Singlemode Fiber (OS1)
+            * `smf-os2` - Singlemode Fiber (OS2)
+            * `aoc` - Active Optical Cabling (AOC)
+            * `power` - Power
+        a_terminations:
+          type: array
+          items:
+            $ref: '#/components/schemas/GenericObjectRequest'
+        b_terminations:
+          type: array
+          items:
+            $ref: '#/components/schemas/GenericObjectRequest'
+        status:
+          enum:
+          - connected
+          - planned
+          - decommissioning
+          type: string
+          description: |-
+            * `connected` - Connected
+            * `planned` - Planned
+            * `decommissioning` - Decommissioning
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenantRequest'
+          nullable: true
+        label:
+          type: string
+          maxLength: 100
+        color:
+          type: string
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        length:
+          type: number
+          format: double
+          maximum: 1000000
+          minimum: -1000000
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+        length_unit:
+          enum:
+          - km
+          - m
+          - cm
+          - mi
+          - ft
+          - in
+          - ''
+          - null
+          type: string
+          description: |-
+            * `km` - Kilometers
+            * `m` - Meters
+            * `cm` - Centimeters
+            * `mi` - Miles
+            * `ft` - Feet
+            * `in` - Inches
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    CableTermination:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        cable:
+          type: integer
+        cable_end:
+          enum:
+          - A
+          - B
+          type: string
+          description: |-
+            * `A` - A
+            * `B` - B
+          title: End
+        termination_type:
+          type: string
+        termination_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+        termination:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          readOnly: true
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - cable
+      - cable_end
+      - created
+      - display
+      - id
+      - last_updated
+      - termination
+      - termination_id
+      - termination_type
+      - url
+    CableTerminationRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        cable:
+          type: integer
+        cable_end:
+          enum:
+          - A
+          - B
+          type: string
+          description: |-
+            * `A` - A
+            * `B` - B
+          title: End
+        termination_type:
+          type: string
+        termination_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+      required:
+      - cable
+      - cable_end
+      - termination_id
+      - termination_type
+    Circuit:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        cid:
+          type: string
+          title: Circuit ID
+          description: Unique circuit ID
+          maxLength: 100
+        provider:
+          $ref: '#/components/schemas/NestedProvider'
+        provider_account:
+          allOf:
+          - $ref: '#/components/schemas/NestedProviderAccount'
+          nullable: true
+        type:
+          $ref: '#/components/schemas/NestedCircuitType'
+        status:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenant'
+          nullable: true
+        install_date:
+          type: string
+          format: date
+          nullable: true
+          title: Installed
+        termination_date:
+          type: string
+          format: date
+          nullable: true
+          title: Terminates
+        commit_rate:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          title: Commit rate (Kbps)
+          description: Committed rate
+        description:
+          type: string
+          maxLength: 200
+        termination_a:
+          allOf:
+          - $ref: '#/components/schemas/CircuitCircuitTermination'
+          readOnly: true
+          nullable: true
+        termination_z:
+          allOf:
+          - $ref: '#/components/schemas/CircuitCircuitTermination'
+          readOnly: true
+          nullable: true
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - cid
+      - created
+      - display
+      - id
+      - last_updated
+      - provider
+      - termination_a
+      - termination_z
+      - type
+      - url
+    CircuitCircuitTermination:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        site:
+          allOf:
+          - $ref: '#/components/schemas/NestedSite'
+          nullable: true
+        provider_network:
+          allOf:
+          - $ref: '#/components/schemas/NestedProviderNetwork'
+          nullable: true
+        port_speed:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          title: Port speed (Kbps)
+          description: Physical circuit speed
+        upstream_speed:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          title: Upstream speed (Kbps)
+          description: Upstream speed, if different from port speed
+        xconnect_id:
+          type: string
+          title: Cross-connect ID
+          description: ID of the local cross-connect
+          maxLength: 50
+        description:
+          type: string
+          maxLength: 200
+      required:
+      - display
+      - id
+      - provider_network
+      - site
+      - url
+    CircuitCircuitTerminationRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        site:
+          allOf:
+          - $ref: '#/components/schemas/NestedSiteRequest'
+          nullable: true
+        provider_network:
+          allOf:
+          - $ref: '#/components/schemas/NestedProviderNetworkRequest'
+          nullable: true
+        port_speed:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          title: Port speed (Kbps)
+          description: Physical circuit speed
+        upstream_speed:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          title: Upstream speed (Kbps)
+          description: Upstream speed, if different from port speed
+        xconnect_id:
+          type: string
+          title: Cross-connect ID
+          description: ID of the local cross-connect
+          maxLength: 50
+        description:
+          type: string
+          maxLength: 200
+      required:
+      - provider_network
+      - site
+    CircuitRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        cid:
+          type: string
+          minLength: 1
+          title: Circuit ID
+          description: Unique circuit ID
+          maxLength: 100
+        provider:
+          $ref: '#/components/schemas/NestedProviderRequest'
+        provider_account:
+          allOf:
+          - $ref: '#/components/schemas/NestedProviderAccountRequest'
+          nullable: true
+        type:
+          $ref: '#/components/schemas/NestedCircuitTypeRequest'
+        status:
+          enum:
+          - planned
+          - provisioning
+          - active
+          - offline
+          - deprovisioning
+          - decommissioned
+          type: string
+          description: |-
+            * `planned` - Planned
+            * `provisioning` - Provisioning
+            * `active` - Active
+            * `offline` - Offline
+            * `deprovisioning` - Deprovisioning
+            * `decommissioned` - Decommissioned
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenantRequest'
+          nullable: true
+        install_date:
+          type: string
+          format: date
+          nullable: true
+          title: Installed
+        termination_date:
+          type: string
+          format: date
+          nullable: true
+          title: Terminates
+        commit_rate:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          title: Commit rate (Kbps)
+          description: Committed rate
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - cid
+      - provider
+      - type
+    CircuitTermination:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        circuit:
+          $ref: '#/components/schemas/NestedCircuit'
+        term_side:
+          enum:
+          - A
+          - Z
+          type: string
+          description: |-
+            * `A` - A
+            * `Z` - Z
+          title: Termination
+        site:
+          allOf:
+          - $ref: '#/components/schemas/NestedSite'
+          nullable: true
+        provider_network:
+          allOf:
+          - $ref: '#/components/schemas/NestedProviderNetwork'
+          nullable: true
+        port_speed:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          title: Port speed (Kbps)
+          description: Physical circuit speed
+        upstream_speed:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          title: Upstream speed (Kbps)
+          description: Upstream speed, if different from port speed
+        xconnect_id:
+          type: string
+          title: Cross-connect ID
+          description: ID of the local cross-connect
+          maxLength: 50
+        pp_info:
+          type: string
+          title: Patch panel/port(s)
+          description: Patch panel ID and port number(s)
+          maxLength: 100
+        description:
+          type: string
+          maxLength: 200
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        cable:
+          allOf:
+          - $ref: '#/components/schemas/NestedCable'
+          readOnly: true
+          nullable: true
+        cable_end:
+          type: string
+          readOnly: true
+        link_peers:
+          type: array
+          items: {}
+          readOnly: true
+        link_peers_type:
+          type: string
+          description: Return the type of the peer link terminations, or None.
+          readOnly: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        _occupied:
+          type: boolean
+          readOnly: true
+          title: ' occupied'
+      required:
+      - _occupied
+      - cable
+      - cable_end
+      - circuit
+      - created
+      - display
+      - id
+      - last_updated
+      - link_peers
+      - link_peers_type
+      - term_side
+      - url
+    CircuitTerminationRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        circuit:
+          $ref: '#/components/schemas/NestedCircuitRequest'
+        term_side:
+          enum:
+          - A
+          - Z
+          type: string
+          description: |-
+            * `A` - A
+            * `Z` - Z
+          title: Termination
+        site:
+          allOf:
+          - $ref: '#/components/schemas/NestedSiteRequest'
+          nullable: true
+        provider_network:
+          allOf:
+          - $ref: '#/components/schemas/NestedProviderNetworkRequest'
+          nullable: true
+        port_speed:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          title: Port speed (Kbps)
+          description: Physical circuit speed
+        upstream_speed:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          title: Upstream speed (Kbps)
+          description: Upstream speed, if different from port speed
+        xconnect_id:
+          type: string
+          title: Cross-connect ID
+          description: ID of the local cross-connect
+          maxLength: 50
+        pp_info:
+          type: string
+          title: Patch panel/port(s)
+          description: Patch panel ID and port number(s)
+          maxLength: 100
+        description:
+          type: string
+          maxLength: 200
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - circuit
+      - term_side
+    CircuitType:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        circuit_count:
+          type: integer
+          readOnly: true
+      required:
+      - circuit_count
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - slug
+      - url
+    CircuitTypeRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    Cluster:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        type:
+          $ref: '#/components/schemas/NestedClusterType'
+        group:
+          allOf:
+          - $ref: '#/components/schemas/NestedClusterGroup'
+          nullable: true
+        status:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenant'
+          nullable: true
+        site:
+          allOf:
+          - $ref: '#/components/schemas/NestedSite'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        device_count:
+          type: integer
+          readOnly: true
+        virtualmachine_count:
+          type: integer
+          readOnly: true
+      required:
+      - created
+      - device_count
+      - display
+      - id
+      - last_updated
+      - name
+      - type
+      - url
+      - virtualmachine_count
+    ClusterGroup:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        cluster_count:
+          type: integer
+          readOnly: true
+      required:
+      - cluster_count
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - slug
+      - url
+    ClusterGroupRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    ClusterRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        type:
+          $ref: '#/components/schemas/NestedClusterTypeRequest'
+        group:
+          allOf:
+          - $ref: '#/components/schemas/NestedClusterGroupRequest'
+          nullable: true
+        status:
+          enum:
+          - planned
+          - staging
+          - active
+          - decommissioning
+          - offline
+          type: string
+          description: |-
+            * `planned` - Planned
+            * `staging` - Staging
+            * `active` - Active
+            * `decommissioning` - Decommissioning
+            * `offline` - Offline
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenantRequest'
+          nullable: true
+        site:
+          allOf:
+          - $ref: '#/components/schemas/NestedSiteRequest'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - type
+    ClusterType:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        cluster_count:
+          type: integer
+          readOnly: true
+      required:
+      - cluster_count
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - slug
+      - url
+    ClusterTypeRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    ComponentNestedModule:
+      type: object
+      description: Used by device component serializers.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        device:
+          type: integer
+        module_bay:
+          allOf:
+          - $ref: '#/components/schemas/ModuleNestedModuleBay'
+          readOnly: true
+      required:
+      - device
+      - display
+      - id
+      - module_bay
+      - url
+    ComponentNestedModuleRequest:
+      type: object
+      description: Used by device component serializers.
+      properties:
+        device:
+          type: integer
+      required:
+      - device
+    ConfigContext:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        weight:
+          type: integer
+          maximum: 32767
+          minimum: 0
+        description:
+          type: string
+          maxLength: 200
+        is_active:
+          type: boolean
+        regions:
+          type: array
+          items:
+            type: integer
+        site_groups:
+          type: array
+          items:
+            type: integer
+        sites:
+          type: array
+          items:
+            type: integer
+        locations:
+          type: array
+          items:
+            type: integer
+        device_types:
+          type: array
+          items:
+            type: integer
+        roles:
+          type: array
+          items:
+            type: integer
+        platforms:
+          type: array
+          items:
+            type: integer
+        cluster_types:
+          type: array
+          items:
+            type: integer
+        cluster_groups:
+          type: array
+          items:
+            type: integer
+        clusters:
+          type: array
+          items:
+            type: integer
+        tenant_groups:
+          type: array
+          items:
+            type: integer
+        tenants:
+          type: array
+          items:
+            type: integer
+        tags:
+          type: array
+          items:
+            type: string
+        data_source:
+          $ref: '#/components/schemas/NestedDataSource'
+        data_path:
+          type: string
+          readOnly: true
+          description: Path to remote file (relative to data source root)
+        data_file:
+          allOf:
+          - $ref: '#/components/schemas/NestedDataFile'
+          readOnly: true
+        data_synced:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        data:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - data
+      - data_file
+      - data_path
+      - data_synced
+      - display
+      - id
+      - last_updated
+      - name
+      - url
+    ConfigContextRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        weight:
+          type: integer
+          maximum: 32767
+          minimum: 0
+        description:
+          type: string
+          maxLength: 200
+        is_active:
+          type: boolean
+        regions:
+          type: array
+          items:
+            type: integer
+        site_groups:
+          type: array
+          items:
+            type: integer
+        sites:
+          type: array
+          items:
+            type: integer
+        locations:
+          type: array
+          items:
+            type: integer
+        device_types:
+          type: array
+          items:
+            type: integer
+        roles:
+          type: array
+          items:
+            type: integer
+        platforms:
+          type: array
+          items:
+            type: integer
+        cluster_types:
+          type: array
+          items:
+            type: integer
+        cluster_groups:
+          type: array
+          items:
+            type: integer
+        clusters:
+          type: array
+          items:
+            type: integer
+        tenant_groups:
+          type: array
+          items:
+            type: integer
+        tenants:
+          type: array
+          items:
+            type: integer
+        tags:
+          type: array
+          items:
+            type: string
+            minLength: 1
+        data_source:
+          $ref: '#/components/schemas/NestedDataSourceRequest'
+        data:
+          type: object
+          additionalProperties: {}
+      required:
+      - data
+      - name
+    ConfigTemplate:
+      type: object
+      description: |-
+        Introduces support for Tag assignment. Adds `tags` serialization, and handles tag assignment
+        on create() and update().
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        description:
+          type: string
+          maxLength: 200
+        environment_params:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          description: Any <a href="https://jinja.palletsprojects.com/en/3.1.x/api/#jinja2.Environment">additional
+            parameters</a> to pass when constructing the Jinja2 environment.
+        template_code:
+          type: string
+          description: Jinja2 template code.
+        data_source:
+          $ref: '#/components/schemas/NestedDataSource'
+        data_path:
+          type: string
+          readOnly: true
+          description: Path to remote file (relative to data source root)
+        data_file:
+          allOf:
+          - $ref: '#/components/schemas/NestedDataFile'
+          readOnly: true
+        data_synced:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - data_file
+      - data_path
+      - data_synced
+      - display
+      - id
+      - last_updated
+      - name
+      - template_code
+      - url
+    ConfigTemplateRequest:
+      type: object
+      description: |-
+        Introduces support for Tag assignment. Adds `tags` serialization, and handles tag assignment
+        on create() and update().
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        description:
+          type: string
+          maxLength: 200
+        environment_params:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          description: Any <a href="https://jinja.palletsprojects.com/en/3.1.x/api/#jinja2.Environment">additional
+            parameters</a> to pass when constructing the Jinja2 environment.
+        template_code:
+          type: string
+          minLength: 1
+          description: Jinja2 template code.
+        data_source:
+          $ref: '#/components/schemas/NestedDataSourceRequest'
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+      required:
+      - name
+      - template_code
+    ConsolePort:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        device:
+          $ref: '#/components/schemas/NestedDevice'
+        module:
+          allOf:
+          - $ref: '#/components/schemas/ComponentNestedModule'
+          nullable: true
+        name:
+          type: string
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        speed:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        cable:
+          allOf:
+          - $ref: '#/components/schemas/NestedCable'
+          readOnly: true
+          nullable: true
+        cable_end:
+          type: string
+          readOnly: true
+        link_peers:
+          type: array
+          items: {}
+          readOnly: true
+        link_peers_type:
+          type: string
+          description: Return the type of the peer link terminations, or None.
+          readOnly: true
+        connected_endpoints:
+          type: array
+          items: {}
+          readOnly: true
+        connected_endpoints_type:
+          type: string
+          readOnly: true
+        connected_endpoints_reachable:
+          type: boolean
+          readOnly: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        _occupied:
+          type: boolean
+          readOnly: true
+          title: ' occupied'
+      required:
+      - _occupied
+      - cable
+      - cable_end
+      - connected_endpoints
+      - connected_endpoints_reachable
+      - connected_endpoints_type
+      - created
+      - device
+      - display
+      - id
+      - last_updated
+      - link_peers
+      - link_peers_type
+      - name
+      - url
+    ConsolePortRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          $ref: '#/components/schemas/NestedDeviceRequest'
+        module:
+          allOf:
+          - $ref: '#/components/schemas/ComponentNestedModuleRequest'
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - de-9
+          - db-25
+          - rj-11
+          - rj-12
+          - rj-45
+          - mini-din-8
+          - usb-a
+          - usb-b
+          - usb-c
+          - usb-mini-a
+          - usb-mini-b
+          - usb-micro-a
+          - usb-micro-b
+          - usb-micro-ab
+          - other
+          - ''
+          type: string
+          description: |-
+            * `de-9` - DE-9
+            * `db-25` - DB-25
+            * `rj-11` - RJ-11
+            * `rj-12` - RJ-12
+            * `rj-45` - RJ-45
+            * `mini-din-8` - Mini-DIN 8
+            * `usb-a` - USB Type A
+            * `usb-b` - USB Type B
+            * `usb-c` - USB Type C
+            * `usb-mini-a` - USB Mini A
+            * `usb-mini-b` - USB Mini B
+            * `usb-micro-a` - USB Micro A
+            * `usb-micro-b` - USB Micro B
+            * `usb-micro-ab` - USB Micro AB
+            * `other` - Other
+        speed:
+          enum:
+          - 1200
+          - 2400
+          - 4800
+          - 9600
+          - 19200
+          - 38400
+          - 57600
+          - 115200
+          - null
+          type: integer
+          description: |-
+            * `1200` - 1200 bps
+            * `2400` - 2400 bps
+            * `4800` - 4800 bps
+            * `9600` - 9600 bps
+            * `19200` - 19.2 kbps
+            * `38400` - 38.4 kbps
+            * `57600` - 57.6 kbps
+            * `115200` - 115.2 kbps
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - device
+      - name
+    ConsolePortTemplate:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        device_type:
+          allOf:
+          - $ref: '#/components/schemas/NestedDeviceType'
+          nullable: true
+        module_type:
+          allOf:
+          - $ref: '#/components/schemas/NestedModuleType'
+          nullable: true
+        name:
+          type: string
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        description:
+          type: string
+          maxLength: 200
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - url
+    ConsolePortTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          allOf:
+          - $ref: '#/components/schemas/NestedDeviceTypeRequest'
+          nullable: true
+        module_type:
+          allOf:
+          - $ref: '#/components/schemas/NestedModuleTypeRequest'
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - de-9
+          - db-25
+          - rj-11
+          - rj-12
+          - rj-45
+          - mini-din-8
+          - usb-a
+          - usb-b
+          - usb-c
+          - usb-mini-a
+          - usb-mini-b
+          - usb-micro-a
+          - usb-micro-b
+          - usb-micro-ab
+          - other
+          - ''
+          type: string
+          description: |-
+            * `de-9` - DE-9
+            * `db-25` - DB-25
+            * `rj-11` - RJ-11
+            * `rj-12` - RJ-12
+            * `rj-45` - RJ-45
+            * `mini-din-8` - Mini-DIN 8
+            * `usb-a` - USB Type A
+            * `usb-b` - USB Type B
+            * `usb-c` - USB Type C
+            * `usb-mini-a` - USB Mini A
+            * `usb-mini-b` - USB Mini B
+            * `usb-micro-a` - USB Micro A
+            * `usb-micro-b` - USB Micro B
+            * `usb-micro-ab` - USB Micro AB
+            * `other` - Other
+        description:
+          type: string
+          maxLength: 200
+      required:
+      - name
+    ConsoleServerPort:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        device:
+          $ref: '#/components/schemas/NestedDevice'
+        module:
+          allOf:
+          - $ref: '#/components/schemas/ComponentNestedModule'
+          nullable: true
+        name:
+          type: string
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        speed:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        cable:
+          allOf:
+          - $ref: '#/components/schemas/NestedCable'
+          readOnly: true
+          nullable: true
+        cable_end:
+          type: string
+          readOnly: true
+        link_peers:
+          type: array
+          items: {}
+          readOnly: true
+        link_peers_type:
+          type: string
+          description: Return the type of the peer link terminations, or None.
+          readOnly: true
+        connected_endpoints:
+          type: array
+          items: {}
+          readOnly: true
+        connected_endpoints_type:
+          type: string
+          readOnly: true
+        connected_endpoints_reachable:
+          type: boolean
+          readOnly: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        _occupied:
+          type: boolean
+          readOnly: true
+          title: ' occupied'
+      required:
+      - _occupied
+      - cable
+      - cable_end
+      - connected_endpoints
+      - connected_endpoints_reachable
+      - connected_endpoints_type
+      - created
+      - device
+      - display
+      - id
+      - last_updated
+      - link_peers
+      - link_peers_type
+      - name
+      - url
+    ConsoleServerPortRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          $ref: '#/components/schemas/NestedDeviceRequest'
+        module:
+          allOf:
+          - $ref: '#/components/schemas/ComponentNestedModuleRequest'
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - de-9
+          - db-25
+          - rj-11
+          - rj-12
+          - rj-45
+          - mini-din-8
+          - usb-a
+          - usb-b
+          - usb-c
+          - usb-mini-a
+          - usb-mini-b
+          - usb-micro-a
+          - usb-micro-b
+          - usb-micro-ab
+          - other
+          - ''
+          type: string
+          description: |-
+            * `de-9` - DE-9
+            * `db-25` - DB-25
+            * `rj-11` - RJ-11
+            * `rj-12` - RJ-12
+            * `rj-45` - RJ-45
+            * `mini-din-8` - Mini-DIN 8
+            * `usb-a` - USB Type A
+            * `usb-b` - USB Type B
+            * `usb-c` - USB Type C
+            * `usb-mini-a` - USB Mini A
+            * `usb-mini-b` - USB Mini B
+            * `usb-micro-a` - USB Micro A
+            * `usb-micro-b` - USB Micro B
+            * `usb-micro-ab` - USB Micro AB
+            * `other` - Other
+        speed:
+          enum:
+          - 1200
+          - 2400
+          - 4800
+          - 9600
+          - 19200
+          - 38400
+          - 57600
+          - 115200
+          - null
+          type: integer
+          description: |-
+            * `1200` - 1200 bps
+            * `2400` - 2400 bps
+            * `4800` - 4800 bps
+            * `9600` - 9600 bps
+            * `19200` - 19.2 kbps
+            * `38400` - 38.4 kbps
+            * `57600` - 57.6 kbps
+            * `115200` - 115.2 kbps
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - device
+      - name
+    ConsoleServerPortTemplate:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        device_type:
+          allOf:
+          - $ref: '#/components/schemas/NestedDeviceType'
+          nullable: true
+        module_type:
+          allOf:
+          - $ref: '#/components/schemas/NestedModuleType'
+          nullable: true
+        name:
+          type: string
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        description:
+          type: string
+          maxLength: 200
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - url
+    ConsoleServerPortTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          allOf:
+          - $ref: '#/components/schemas/NestedDeviceTypeRequest'
+          nullable: true
+        module_type:
+          allOf:
+          - $ref: '#/components/schemas/NestedModuleTypeRequest'
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - de-9
+          - db-25
+          - rj-11
+          - rj-12
+          - rj-45
+          - mini-din-8
+          - usb-a
+          - usb-b
+          - usb-c
+          - usb-mini-a
+          - usb-mini-b
+          - usb-micro-a
+          - usb-micro-b
+          - usb-micro-ab
+          - other
+          - ''
+          type: string
+          description: |-
+            * `de-9` - DE-9
+            * `db-25` - DB-25
+            * `rj-11` - RJ-11
+            * `rj-12` - RJ-12
+            * `rj-45` - RJ-45
+            * `mini-din-8` - Mini-DIN 8
+            * `usb-a` - USB Type A
+            * `usb-b` - USB Type B
+            * `usb-c` - USB Type C
+            * `usb-mini-a` - USB Mini A
+            * `usb-mini-b` - USB Mini B
+            * `usb-micro-a` - USB Micro A
+            * `usb-micro-b` - USB Micro B
+            * `usb-micro-ab` - USB Micro AB
+            * `other` - Other
+        description:
+          type: string
+          maxLength: 200
+      required:
+      - name
+    Contact:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        group:
+          allOf:
+          - $ref: '#/components/schemas/NestedContactGroup'
+          nullable: true
+        name:
+          type: string
+          maxLength: 100
+        title:
+          type: string
+          maxLength: 100
+        phone:
+          type: string
+          maxLength: 50
+        email:
+          type: string
+          format: email
+          maxLength: 254
+        address:
+          type: string
+          maxLength: 200
+        link:
+          type: string
+          format: uri
+          maxLength: 200
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - url
+    ContactAssignment:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        content_type:
+          type: string
+        object_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+        object:
+          type: object
+          additionalProperties: {}
+          readOnly: true
+        contact:
+          $ref: '#/components/schemas/NestedContact'
+        role:
+          allOf:
+          - $ref: '#/components/schemas/NestedContactRole'
+          nullable: true
+        priority:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - contact
+      - content_type
+      - created
+      - display
+      - id
+      - last_updated
+      - object
+      - object_id
+      - url
+    ContactAssignmentRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        content_type:
+          type: string
+        object_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+        contact:
+          $ref: '#/components/schemas/NestedContactRequest'
+        role:
+          allOf:
+          - $ref: '#/components/schemas/NestedContactRoleRequest'
+          nullable: true
+        priority:
+          enum:
+          - primary
+          - secondary
+          - tertiary
+          - inactive
+          - ''
+          type: string
+          description: |-
+            * `primary` - Primary
+            * `secondary` - Secondary
+            * `tertiary` - Tertiary
+            * `inactive` - Inactive
+      required:
+      - contact
+      - content_type
+      - object_id
+    ContactGroup:
+      type: object
+      description: Extends PrimaryModelSerializer to include MPTT support.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        parent:
+          allOf:
+          - $ref: '#/components/schemas/NestedContactGroup'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        contact_count:
+          type: integer
+          readOnly: true
+        _depth:
+          type: integer
+          readOnly: true
+          title: ' depth'
+      required:
+      - _depth
+      - contact_count
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - slug
+      - url
+    ContactGroupRequest:
+      type: object
+      description: Extends PrimaryModelSerializer to include MPTT support.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        parent:
+          allOf:
+          - $ref: '#/components/schemas/NestedContactGroupRequest'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    ContactRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        group:
+          allOf:
+          - $ref: '#/components/schemas/NestedContactGroupRequest'
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        title:
+          type: string
+          maxLength: 100
+        phone:
+          type: string
+          maxLength: 50
+        email:
+          type: string
+          format: email
+          maxLength: 254
+        address:
+          type: string
+          maxLength: 200
+        link:
+          type: string
+          format: uri
+          maxLength: 200
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+    ContactRole:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - slug
+      - url
+    ContactRoleRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    ContentType:
+      type: object
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        app_label:
+          type: string
+          maxLength: 100
+        model:
+          type: string
+          title: Python model class name
+          maxLength: 100
+      required:
+      - app_label
+      - display
+      - id
+      - model
+      - url
+    CustomField:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        content_types:
+          type: array
+          items:
+            type: string
+        type:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        object_type:
+          type: string
+        data_type:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          description: Internal field name
+          pattern: ^[a-z0-9_]+$
+          maxLength: 50
+        label:
+          type: string
+          description: Name of the field as displayed to users (if not provided, the
+            field's name will be used)
+          maxLength: 50
+        group_name:
+          type: string
+          description: Custom fields within the same group will be displayed together
+          maxLength: 50
+        description:
+          type: string
+          maxLength: 200
+        required:
+          type: boolean
+          description: If true, this field is required when creating new objects or
+            editing an existing object.
+        search_weight:
+          type: integer
+          maximum: 32767
+          minimum: 0
+          description: Weighting for search. Lower values are considered more important.
+            Fields with a search weight of zero will be ignored.
+        filter_logic:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        ui_visibility:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        is_cloneable:
+          type: boolean
+          title: Cloneable
+          description: Replicate this value when cloning objects
+        default:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          description: Default value for the field (must be a JSON value). Encapsulate
+            strings with double quotes (e.g. "Foo").
+        weight:
+          type: integer
+          maximum: 32767
+          minimum: 0
+          title: Display weight
+          description: Fields with higher weights appear lower in a form.
+        validation_minimum:
+          type: integer
+          maximum: 2147483647
+          minimum: -2147483648
+          nullable: true
+          title: Minimum value
+          description: Minimum allowed value (for numeric fields)
+        validation_maximum:
+          type: integer
+          maximum: 2147483647
+          minimum: -2147483648
+          nullable: true
+          title: Maximum value
+          description: Maximum allowed value (for numeric fields)
+        validation_regex:
+          type: string
+          description: Regular expression to enforce on text field values. Use ^ and
+            $ to force matching of entire string. For example, <code>^[A-Z]{3}$</code>
+            will limit values to exactly three uppercase letters.
+          maxLength: 500
+        choices:
+          type: array
+          items:
+            type: string
+            maxLength: 100
+          nullable: true
+          description: Comma-separated list of available choices (for selection fields)
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - content_types
+      - created
+      - data_type
+      - display
+      - id
+      - last_updated
+      - name
+      - type
+      - url
+    CustomFieldRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        content_types:
+          type: array
+          items:
+            type: string
+        type:
+          enum:
+          - text
+          - longtext
+          - integer
+          - decimal
+          - boolean
+          - date
+          - datetime
+          - url
+          - json
+          - select
+          - multiselect
+          - object
+          - multiobject
+          type: string
+          description: |-
+            * `text` - Text
+            * `longtext` - Text (long)
+            * `integer` - Integer
+            * `decimal` - Decimal
+            * `boolean` - Boolean (true/false)
+            * `date` - Date
+            * `datetime` - Date & time
+            * `url` - URL
+            * `json` - JSON
+            * `select` - Selection
+            * `multiselect` - Multiple selection
+            * `object` - Object
+            * `multiobject` - Multiple objects
+        object_type:
+          type: string
+        name:
+          type: string
+          minLength: 1
+          description: Internal field name
+          pattern: ^[a-z0-9_]+$
+          maxLength: 50
+        label:
+          type: string
+          description: Name of the field as displayed to users (if not provided, the
+            field's name will be used)
+          maxLength: 50
+        group_name:
+          type: string
+          description: Custom fields within the same group will be displayed together
+          maxLength: 50
+        description:
+          type: string
+          maxLength: 200
+        required:
+          type: boolean
+          description: If true, this field is required when creating new objects or
+            editing an existing object.
+        search_weight:
+          type: integer
+          maximum: 32767
+          minimum: 0
+          description: Weighting for search. Lower values are considered more important.
+            Fields with a search weight of zero will be ignored.
+        filter_logic:
+          enum:
+          - disabled
+          - loose
+          - exact
+          type: string
+          description: |-
+            * `disabled` - Disabled
+            * `loose` - Loose
+            * `exact` - Exact
+        ui_visibility:
+          enum:
+          - read-write
+          - read-only
+          - hidden
+          type: string
+          description: |-
+            * `read-write` - Read/Write
+            * `read-only` - Read-only
+            * `hidden` - Hidden
+        is_cloneable:
+          type: boolean
+          title: Cloneable
+          description: Replicate this value when cloning objects
+        default:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          description: Default value for the field (must be a JSON value). Encapsulate
+            strings with double quotes (e.g. "Foo").
+        weight:
+          type: integer
+          maximum: 32767
+          minimum: 0
+          title: Display weight
+          description: Fields with higher weights appear lower in a form.
+        validation_minimum:
+          type: integer
+          maximum: 2147483647
+          minimum: -2147483648
+          nullable: true
+          title: Minimum value
+          description: Minimum allowed value (for numeric fields)
+        validation_maximum:
+          type: integer
+          maximum: 2147483647
+          minimum: -2147483648
+          nullable: true
+          title: Maximum value
+          description: Maximum allowed value (for numeric fields)
+        validation_regex:
+          type: string
+          description: Regular expression to enforce on text field values. Use ^ and
+            $ to force matching of entire string. For example, <code>^[A-Z]{3}$</code>
+            will limit values to exactly three uppercase letters.
+          maxLength: 500
+        choices:
+          type: array
+          items:
+            type: string
+            minLength: 1
+            maxLength: 100
+          nullable: true
+          description: Comma-separated list of available choices (for selection fields)
+      required:
+      - content_types
+      - name
+      - type
+    CustomLink:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        content_types:
+          type: array
+          items:
+            type: string
+        name:
+          type: string
+          maxLength: 100
+        enabled:
+          type: boolean
+        link_text:
+          type: string
+          description: Jinja2 template code for link text
+        link_url:
+          type: string
+          description: Jinja2 template code for link URL
+        weight:
+          type: integer
+          maximum: 32767
+          minimum: 0
+        group_name:
+          type: string
+          description: Links with the same group will appear as a dropdown menu
+          maxLength: 50
+        button_class:
+          enum:
+          - outline-dark
+          - blue
+          - indigo
+          - purple
+          - pink
+          - red
+          - orange
+          - yellow
+          - green
+          - teal
+          - cyan
+          - gray
+          - black
+          - white
+          - ghost-dark
+          type: string
+          description: |-
+            The class of the first link in a group will be used for the dropdown button
+
+            * `outline-dark` - Default
+            * `blue` - Blue
+            * `indigo` - Indigo
+            * `purple` - Purple
+            * `pink` - Pink
+            * `red` - Red
+            * `orange` - Orange
+            * `yellow` - Yellow
+            * `green` - Green
+            * `teal` - Teal
+            * `cyan` - Cyan
+            * `gray` - Gray
+            * `black` - Black
+            * `white` - White
+            * `ghost-dark` - Link
+        new_window:
+          type: boolean
+          description: Force link to open in a new window
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - content_types
+      - created
+      - display
+      - id
+      - last_updated
+      - link_text
+      - link_url
+      - name
+      - url
+    CustomLinkRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        content_types:
+          type: array
+          items:
+            type: string
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        enabled:
+          type: boolean
+        link_text:
+          type: string
+          minLength: 1
+          description: Jinja2 template code for link text
+        link_url:
+          type: string
+          minLength: 1
+          description: Jinja2 template code for link URL
+        weight:
+          type: integer
+          maximum: 32767
+          minimum: 0
+        group_name:
+          type: string
+          description: Links with the same group will appear as a dropdown menu
+          maxLength: 50
+        button_class:
+          enum:
+          - outline-dark
+          - blue
+          - indigo
+          - purple
+          - pink
+          - red
+          - orange
+          - yellow
+          - green
+          - teal
+          - cyan
+          - gray
+          - black
+          - white
+          - ghost-dark
+          type: string
+          description: |-
+            The class of the first link in a group will be used for the dropdown button
+
+            * `outline-dark` - Default
+            * `blue` - Blue
+            * `indigo` - Indigo
+            * `purple` - Purple
+            * `pink` - Pink
+            * `red` - Red
+            * `orange` - Orange
+            * `yellow` - Yellow
+            * `green` - Green
+            * `teal` - Teal
+            * `cyan` - Cyan
+            * `gray` - Gray
+            * `black` - Black
+            * `white` - White
+            * `ghost-dark` - Link
+        new_window:
+          type: boolean
+          description: Force link to open in a new window
+      required:
+      - content_types
+      - link_text
+      - link_url
+      - name
+    Dashboard:
+      type: object
+      properties:
+        layout:
+          type: object
+          additionalProperties: {}
+        config:
+          type: object
+          additionalProperties: {}
+    DashboardRequest:
+      type: object
+      properties:
+        layout:
+          type: object
+          additionalProperties: {}
+        config:
+          type: object
+          additionalProperties: {}
+    DataFile:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        source:
+          allOf:
+          - $ref: '#/components/schemas/NestedDataSource'
+          readOnly: true
+        path:
+          type: string
+          readOnly: true
+          description: File path relative to the data source's root
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+        size:
+          type: integer
+          readOnly: true
+        hash:
+          type: string
+          readOnly: true
+          description: SHA256 hash of the file data
+      required:
+      - display
+      - hash
+      - id
+      - last_updated
+      - path
+      - size
+      - source
+      - url
+    DataSource:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        type:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        source_url:
+          type: string
+          title: URL
+          maxLength: 200
+        enabled:
+          type: boolean
+        status:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          readOnly: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        parameters:
+          type: object
+          additionalProperties: {}
+          nullable: true
+        ignore_rules:
+          type: string
+          description: Patterns (one per line) matching files to ignore when syncing
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        file_count:
+          type: integer
+          readOnly: true
+      required:
+      - created
+      - display
+      - file_count
+      - id
+      - last_updated
+      - name
+      - source_url
+      - status
+      - type
+      - url
+    DataSourceRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        type:
+          enum:
+          - local
+          - git
+          - amazon-s3
+          type: string
+          description: |-
+            * `local` - Local
+            * `git` - Git
+            * `amazon-s3` - Amazon S3
+        source_url:
+          type: string
+          minLength: 1
+          title: URL
+          maxLength: 200
+        enabled:
+          type: boolean
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        parameters:
+          type: object
+          additionalProperties: {}
+          nullable: true
+        ignore_rules:
+          type: string
+          description: Patterns (one per line) matching files to ignore when syncing
+      required:
+      - name
+      - source_url
+      - type
+    DeviceBay:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        device:
+          $ref: '#/components/schemas/NestedDevice'
+        name:
+          type: string
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        description:
+          type: string
+          maxLength: 200
+        installed_device:
+          allOf:
+          - $ref: '#/components/schemas/NestedDevice'
+          nullable: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - device
+      - display
+      - id
+      - last_updated
+      - name
+      - url
+    DeviceBayRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          $ref: '#/components/schemas/NestedDeviceRequest'
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        description:
+          type: string
+          maxLength: 200
+        installed_device:
+          allOf:
+          - $ref: '#/components/schemas/NestedDeviceRequest'
+          nullable: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - device
+      - name
+    DeviceBayTemplate:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        device_type:
+          $ref: '#/components/schemas/NestedDeviceType'
+        name:
+          type: string
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        description:
+          type: string
+          maxLength: 200
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - device_type
+      - display
+      - id
+      - last_updated
+      - name
+      - url
+    DeviceBayTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          $ref: '#/components/schemas/NestedDeviceTypeRequest'
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        description:
+          type: string
+          maxLength: 200
+      required:
+      - device_type
+      - name
+    DeviceRole:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        color:
+          type: string
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        vm_role:
+          type: boolean
+          description: Virtual machines may be assigned to this role
+        config_template:
+          allOf:
+          - $ref: '#/components/schemas/NestedConfigTemplate'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        device_count:
+          type: integer
+          readOnly: true
+        virtualmachine_count:
+          type: integer
+          readOnly: true
+      required:
+      - created
+      - device_count
+      - display
+      - id
+      - last_updated
+      - name
+      - slug
+      - url
+      - virtualmachine_count
+    DeviceRoleRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        color:
+          type: string
+          minLength: 1
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        vm_role:
+          type: boolean
+          description: Virtual machines may be assigned to this role
+        config_template:
+          allOf:
+          - $ref: '#/components/schemas/NestedConfigTemplateRequest'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    DeviceType:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        manufacturer:
+          $ref: '#/components/schemas/NestedManufacturer'
+        default_platform:
+          allOf:
+          - $ref: '#/components/schemas/NestedPlatform'
+          nullable: true
+        model:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        part_number:
+          type: string
+          description: Discrete part number (optional)
+          maxLength: 50
+        u_height:
+          type: number
+          format: double
+          maximum: 1000
+          minimum: 0
+          exclusiveMaximum: true
+          default: 1.0
+          title: Position (U)
+        is_full_depth:
+          type: boolean
+          description: Device consumes both front and rear rack faces
+        subdevice_role:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          nullable: true
+        airflow:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          nullable: true
+        weight:
+          type: number
+          format: double
+          maximum: 1000000
+          minimum: -1000000
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+        weight_unit:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          nullable: true
+        front_image:
+          type: string
+          format: uri
+        rear_image:
+          type: string
+          format: uri
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        device_count:
+          type: integer
+          readOnly: true
+      required:
+      - created
+      - device_count
+      - display
+      - id
+      - last_updated
+      - manufacturer
+      - model
+      - slug
+      - url
+    DeviceTypeRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        manufacturer:
+          $ref: '#/components/schemas/NestedManufacturerRequest'
+        default_platform:
+          allOf:
+          - $ref: '#/components/schemas/NestedPlatformRequest'
+          nullable: true
+        model:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        part_number:
+          type: string
+          description: Discrete part number (optional)
+          maxLength: 50
+        u_height:
+          type: number
+          format: double
+          maximum: 1000
+          minimum: 0
+          exclusiveMaximum: true
+          default: 1.0
+          title: Position (U)
+        is_full_depth:
+          type: boolean
+          description: Device consumes both front and rear rack faces
+        subdevice_role:
+          enum:
+          - parent
+          - child
+          - ''
+          - null
+          type: string
+          description: |-
+            * `parent` - Parent
+            * `child` - Child
+          nullable: true
+        airflow:
+          enum:
+          - front-to-rear
+          - rear-to-front
+          - left-to-right
+          - right-to-left
+          - side-to-rear
+          - passive
+          - mixed
+          - ''
+          - null
+          type: string
+          description: |-
+            * `front-to-rear` - Front to rear
+            * `rear-to-front` - Rear to front
+            * `left-to-right` - Left to right
+            * `right-to-left` - Right to left
+            * `side-to-rear` - Side to rear
+            * `passive` - Passive
+            * `mixed` - Mixed
+          nullable: true
+        weight:
+          type: number
+          format: double
+          maximum: 1000000
+          minimum: -1000000
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+        weight_unit:
+          enum:
+          - kg
+          - g
+          - lb
+          - oz
+          - ''
+          - null
+          type: string
+          description: |-
+            * `kg` - Kilograms
+            * `g` - Grams
+            * `lb` - Pounds
+            * `oz` - Ounces
+          nullable: true
+        front_image:
+          type: string
+          format: binary
+        rear_image:
+          type: string
+          format: binary
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - manufacturer
+      - model
+      - slug
+    DeviceWithConfigContext:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          nullable: true
+          maxLength: 64
+        device_type:
+          $ref: '#/components/schemas/NestedDeviceType'
+        device_role:
+          $ref: '#/components/schemas/NestedDeviceRole'
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenant'
+          nullable: true
+        platform:
+          allOf:
+          - $ref: '#/components/schemas/NestedPlatform'
+          nullable: true
+        serial:
+          type: string
+          title: Serial number
+          description: Chassis serial number, assigned by the manufacturer
+          maxLength: 50
+        asset_tag:
+          type: string
+          nullable: true
+          description: A unique tag used to identify this device
+          maxLength: 50
+        site:
+          $ref: '#/components/schemas/NestedSite'
+        location:
+          allOf:
+          - $ref: '#/components/schemas/NestedLocation'
+          nullable: true
+        rack:
+          allOf:
+          - $ref: '#/components/schemas/NestedRack'
+          nullable: true
+        position:
+          type: number
+          format: double
+          maximum: 1000
+          minimum: 0.5
+          exclusiveMaximum: true
+          nullable: true
+          title: Position (U)
+        face:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        parent_device:
+          allOf:
+          - $ref: '#/components/schemas/NestedDevice'
+          readOnly: true
+        status:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        airflow:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        primary_ip:
+          allOf:
+          - $ref: '#/components/schemas/NestedIPAddress'
+          readOnly: true
+        primary_ip4:
+          allOf:
+          - $ref: '#/components/schemas/NestedIPAddress'
+          nullable: true
+        primary_ip6:
+          allOf:
+          - $ref: '#/components/schemas/NestedIPAddress'
+          nullable: true
+        cluster:
+          allOf:
+          - $ref: '#/components/schemas/NestedCluster'
+          nullable: true
+        virtual_chassis:
+          allOf:
+          - $ref: '#/components/schemas/NestedVirtualChassis'
+          nullable: true
+        vc_position:
+          type: integer
+          maximum: 255
+          minimum: 0
+          nullable: true
+        vc_priority:
+          type: integer
+          maximum: 255
+          minimum: 0
+          nullable: true
+          description: Virtual chassis master election priority
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        local_context_data:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          description: Local config context data takes precedence over source contexts
+            in the final rendered config context
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        config_context:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          readOnly: true
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - config_context
+      - created
+      - device_role
+      - device_type
+      - display
+      - id
+      - last_updated
+      - parent_device
+      - primary_ip
+      - site
+      - url
+    DeviceWithConfigContextRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          nullable: true
+          maxLength: 64
+        device_type:
+          $ref: '#/components/schemas/NestedDeviceTypeRequest'
+        device_role:
+          $ref: '#/components/schemas/NestedDeviceRoleRequest'
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenantRequest'
+          nullable: true
+        platform:
+          allOf:
+          - $ref: '#/components/schemas/NestedPlatformRequest'
+          nullable: true
+        serial:
+          type: string
+          title: Serial number
+          description: Chassis serial number, assigned by the manufacturer
+          maxLength: 50
+        asset_tag:
+          type: string
+          nullable: true
+          description: A unique tag used to identify this device
+          maxLength: 50
+        site:
+          $ref: '#/components/schemas/NestedSiteRequest'
+        location:
+          allOf:
+          - $ref: '#/components/schemas/NestedLocationRequest'
+          nullable: true
+        rack:
+          allOf:
+          - $ref: '#/components/schemas/NestedRackRequest'
+          nullable: true
+        position:
+          type: number
+          format: double
+          maximum: 1000
+          minimum: 0.5
+          exclusiveMaximum: true
+          nullable: true
+          title: Position (U)
+        face:
+          enum:
+          - front
+          - rear
+          - ''
+          type: string
+          description: |-
+            * `front` - Front
+            * `rear` - Rear
+        status:
+          enum:
+          - offline
+          - active
+          - planned
+          - staged
+          - failed
+          - inventory
+          - decommissioning
+          type: string
+          description: |-
+            * `offline` - Offline
+            * `active` - Active
+            * `planned` - Planned
+            * `staged` - Staged
+            * `failed` - Failed
+            * `inventory` - Inventory
+            * `decommissioning` - Decommissioning
+        airflow:
+          enum:
+          - front-to-rear
+          - rear-to-front
+          - left-to-right
+          - right-to-left
+          - side-to-rear
+          - passive
+          - mixed
+          - ''
+          type: string
+          description: |-
+            * `front-to-rear` - Front to rear
+            * `rear-to-front` - Rear to front
+            * `left-to-right` - Left to right
+            * `right-to-left` - Right to left
+            * `side-to-rear` - Side to rear
+            * `passive` - Passive
+            * `mixed` - Mixed
+        primary_ip4:
+          allOf:
+          - $ref: '#/components/schemas/NestedIPAddressRequest'
+          nullable: true
+        primary_ip6:
+          allOf:
+          - $ref: '#/components/schemas/NestedIPAddressRequest'
+          nullable: true
+        cluster:
+          allOf:
+          - $ref: '#/components/schemas/NestedClusterRequest'
+          nullable: true
+        virtual_chassis:
+          allOf:
+          - $ref: '#/components/schemas/NestedVirtualChassisRequest'
+          nullable: true
+        vc_position:
+          type: integer
+          maximum: 255
+          minimum: 0
+          nullable: true
+        vc_priority:
+          type: integer
+          maximum: 255
+          minimum: 0
+          nullable: true
+          description: Virtual chassis master election priority
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        local_context_data:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          description: Local config context data takes precedence over source contexts
+            in the final rendered config context
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - device_role
+      - device_type
+      - site
+    ExportTemplate:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        content_types:
+          type: array
+          items:
+            type: string
+        name:
+          type: string
+          maxLength: 100
+        description:
+          type: string
+          maxLength: 200
+        template_code:
+          type: string
+          description: Jinja2 template code. The list of objects being exported is
+            passed as a context variable named <code>queryset</code>.
+        mime_type:
+          type: string
+          description: Defaults to <code>text/plain; charset=utf-8</code>
+          maxLength: 50
+        file_extension:
+          type: string
+          description: Extension to append to the rendered filename
+          maxLength: 15
+        as_attachment:
+          type: boolean
+          description: Download file as attachment
+        data_source:
+          $ref: '#/components/schemas/NestedDataSource'
+        data_path:
+          type: string
+          readOnly: true
+          description: Path to remote file (relative to data source root)
+        data_file:
+          allOf:
+          - $ref: '#/components/schemas/NestedDataFile'
+          readOnly: true
+        data_synced:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - content_types
+      - created
+      - data_file
+      - data_path
+      - data_synced
+      - display
+      - id
+      - last_updated
+      - name
+      - template_code
+      - url
+    ExportTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        content_types:
+          type: array
+          items:
+            type: string
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        description:
+          type: string
+          maxLength: 200
+        template_code:
+          type: string
+          minLength: 1
+          description: Jinja2 template code. The list of objects being exported is
+            passed as a context variable named <code>queryset</code>.
+        mime_type:
+          type: string
+          description: Defaults to <code>text/plain; charset=utf-8</code>
+          maxLength: 50
+        file_extension:
+          type: string
+          description: Extension to append to the rendered filename
+          maxLength: 15
+        as_attachment:
+          type: boolean
+          description: Download file as attachment
+        data_source:
+          $ref: '#/components/schemas/NestedDataSourceRequest'
+      required:
+      - content_types
+      - name
+      - template_code
+    FHRPGroup:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        protocol:
+          enum:
+          - vrrp2
+          - vrrp3
+          - carp
+          - clusterxl
+          - hsrp
+          - glbp
+          - other
+          type: string
+          description: |-
+            * `vrrp2` - VRRPv2
+            * `vrrp3` - VRRPv3
+            * `carp` - CARP
+            * `clusterxl` - ClusterXL
+            * `hsrp` - HSRP
+            * `glbp` - GLBP
+            * `other` - Other
+        group_id:
+          type: integer
+          maximum: 32767
+          minimum: 0
+        auth_type:
+          enum:
+          - plaintext
+          - md5
+          - ''
+          type: string
+          description: |-
+            * `plaintext` - Plaintext
+            * `md5` - MD5
+          title: Authentication type
+        auth_key:
+          type: string
+          title: Authentication key
+          maxLength: 255
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        ip_addresses:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedIPAddress'
+          readOnly: true
+      required:
+      - created
+      - display
+      - group_id
+      - id
+      - ip_addresses
+      - last_updated
+      - protocol
+      - url
+    FHRPGroupAssignment:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        group:
+          $ref: '#/components/schemas/NestedFHRPGroup'
+        interface_type:
+          type: string
+        interface_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+        interface:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          readOnly: true
+        priority:
+          type: integer
+          maximum: 255
+          minimum: 0
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - display
+      - group
+      - id
+      - interface
+      - interface_id
+      - interface_type
+      - last_updated
+      - priority
+      - url
+    FHRPGroupAssignmentRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        group:
+          $ref: '#/components/schemas/NestedFHRPGroupRequest'
+        interface_type:
+          type: string
+        interface_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+        priority:
+          type: integer
+          maximum: 255
+          minimum: 0
+      required:
+      - group
+      - interface_id
+      - interface_type
+      - priority
+    FHRPGroupRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          maxLength: 100
+        protocol:
+          enum:
+          - vrrp2
+          - vrrp3
+          - carp
+          - clusterxl
+          - hsrp
+          - glbp
+          - other
+          type: string
+          description: |-
+            * `vrrp2` - VRRPv2
+            * `vrrp3` - VRRPv3
+            * `carp` - CARP
+            * `clusterxl` - ClusterXL
+            * `hsrp` - HSRP
+            * `glbp` - GLBP
+            * `other` - Other
+        group_id:
+          type: integer
+          maximum: 32767
+          minimum: 0
+        auth_type:
+          enum:
+          - plaintext
+          - md5
+          - ''
+          type: string
+          description: |-
+            * `plaintext` - Plaintext
+            * `md5` - MD5
+          title: Authentication type
+        auth_key:
+          type: string
+          title: Authentication key
+          maxLength: 255
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - group_id
+      - protocol
+    FrontPort:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        device:
+          $ref: '#/components/schemas/NestedDevice'
+        module:
+          allOf:
+          - $ref: '#/components/schemas/ComponentNestedModule'
+          nullable: true
+        name:
+          type: string
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        color:
+          type: string
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        rear_port:
+          $ref: '#/components/schemas/FrontPortRearPort'
+        rear_port_position:
+          type: integer
+          maximum: 1024
+          minimum: 1
+          description: Mapped position on corresponding rear port
+        description:
+          type: string
+          maxLength: 200
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        cable:
+          allOf:
+          - $ref: '#/components/schemas/NestedCable'
+          readOnly: true
+          nullable: true
+        cable_end:
+          type: string
+          readOnly: true
+        link_peers:
+          type: array
+          items: {}
+          readOnly: true
+        link_peers_type:
+          type: string
+          description: Return the type of the peer link terminations, or None.
+          readOnly: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        _occupied:
+          type: boolean
+          readOnly: true
+          title: ' occupied'
+      required:
+      - _occupied
+      - cable
+      - cable_end
+      - created
+      - device
+      - display
+      - id
+      - last_updated
+      - link_peers
+      - link_peers_type
+      - name
+      - rear_port
+      - type
+      - url
+    FrontPortRearPort:
+      type: object
+      description: NestedRearPortSerializer but with parent device omitted (since
+        front and rear ports must belong to same device)
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        description:
+          type: string
+          maxLength: 200
+      required:
+      - display
+      - id
+      - name
+      - url
+    FrontPortRearPortRequest:
+      type: object
+      description: NestedRearPortSerializer but with parent device omitted (since
+        front and rear ports must belong to same device)
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        description:
+          type: string
+          maxLength: 200
+      required:
+      - name
+    FrontPortRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          $ref: '#/components/schemas/NestedDeviceRequest'
+        module:
+          allOf:
+          - $ref: '#/components/schemas/ComponentNestedModuleRequest'
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - 8p8c
+          - 8p6c
+          - 8p4c
+          - 8p2c
+          - 6p6c
+          - 6p4c
+          - 6p2c
+          - 4p4c
+          - 4p2c
+          - gg45
+          - tera-4p
+          - tera-2p
+          - tera-1p
+          - 110-punch
+          - bnc
+          - f
+          - n
+          - mrj21
+          - fc
+          - lc
+          - lc-pc
+          - lc-upc
+          - lc-apc
+          - lsh
+          - lsh-pc
+          - lsh-upc
+          - lsh-apc
+          - mpo
+          - mtrj
+          - sc
+          - sc-pc
+          - sc-upc
+          - sc-apc
+          - st
+          - cs
+          - sn
+          - sma-905
+          - sma-906
+          - urm-p2
+          - urm-p4
+          - urm-p8
+          - splice
+          - other
+          type: string
+          description: |-
+            * `8p8c` - 8P8C
+            * `8p6c` - 8P6C
+            * `8p4c` - 8P4C
+            * `8p2c` - 8P2C
+            * `6p6c` - 6P6C
+            * `6p4c` - 6P4C
+            * `6p2c` - 6P2C
+            * `4p4c` - 4P4C
+            * `4p2c` - 4P2C
+            * `gg45` - GG45
+            * `tera-4p` - TERA 4P
+            * `tera-2p` - TERA 2P
+            * `tera-1p` - TERA 1P
+            * `110-punch` - 110 Punch
+            * `bnc` - BNC
+            * `f` - F Connector
+            * `n` - N Connector
+            * `mrj21` - MRJ21
+            * `fc` - FC
+            * `lc` - LC
+            * `lc-pc` - LC/PC
+            * `lc-upc` - LC/UPC
+            * `lc-apc` - LC/APC
+            * `lsh` - LSH
+            * `lsh-pc` - LSH/PC
+            * `lsh-upc` - LSH/UPC
+            * `lsh-apc` - LSH/APC
+            * `mpo` - MPO
+            * `mtrj` - MTRJ
+            * `sc` - SC
+            * `sc-pc` - SC/PC
+            * `sc-upc` - SC/UPC
+            * `sc-apc` - SC/APC
+            * `st` - ST
+            * `cs` - CS
+            * `sn` - SN
+            * `sma-905` - SMA 905
+            * `sma-906` - SMA 906
+            * `urm-p2` - URM-P2
+            * `urm-p4` - URM-P4
+            * `urm-p8` - URM-P8
+            * `splice` - Splice
+            * `other` - Other
+        color:
+          type: string
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        rear_port:
+          $ref: '#/components/schemas/FrontPortRearPortRequest'
+        rear_port_position:
+          type: integer
+          maximum: 1024
+          minimum: 1
+          description: Mapped position on corresponding rear port
+        description:
+          type: string
+          maxLength: 200
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - device
+      - name
+      - rear_port
+      - type
+    FrontPortTemplate:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        device_type:
+          allOf:
+          - $ref: '#/components/schemas/NestedDeviceType'
+          nullable: true
+        module_type:
+          allOf:
+          - $ref: '#/components/schemas/NestedModuleType'
+          nullable: true
+        name:
+          type: string
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        color:
+          type: string
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        rear_port:
+          $ref: '#/components/schemas/NestedRearPortTemplate'
+        rear_port_position:
+          type: integer
+          maximum: 1024
+          minimum: 1
+        description:
+          type: string
+          maxLength: 200
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - rear_port
+      - type
+      - url
+    FrontPortTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          allOf:
+          - $ref: '#/components/schemas/NestedDeviceTypeRequest'
+          nullable: true
+        module_type:
+          allOf:
+          - $ref: '#/components/schemas/NestedModuleTypeRequest'
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - 8p8c
+          - 8p6c
+          - 8p4c
+          - 8p2c
+          - 6p6c
+          - 6p4c
+          - 6p2c
+          - 4p4c
+          - 4p2c
+          - gg45
+          - tera-4p
+          - tera-2p
+          - tera-1p
+          - 110-punch
+          - bnc
+          - f
+          - n
+          - mrj21
+          - fc
+          - lc
+          - lc-pc
+          - lc-upc
+          - lc-apc
+          - lsh
+          - lsh-pc
+          - lsh-upc
+          - lsh-apc
+          - mpo
+          - mtrj
+          - sc
+          - sc-pc
+          - sc-upc
+          - sc-apc
+          - st
+          - cs
+          - sn
+          - sma-905
+          - sma-906
+          - urm-p2
+          - urm-p4
+          - urm-p8
+          - splice
+          - other
+          type: string
+          description: |-
+            * `8p8c` - 8P8C
+            * `8p6c` - 8P6C
+            * `8p4c` - 8P4C
+            * `8p2c` - 8P2C
+            * `6p6c` - 6P6C
+            * `6p4c` - 6P4C
+            * `6p2c` - 6P2C
+            * `4p4c` - 4P4C
+            * `4p2c` - 4P2C
+            * `gg45` - GG45
+            * `tera-4p` - TERA 4P
+            * `tera-2p` - TERA 2P
+            * `tera-1p` - TERA 1P
+            * `110-punch` - 110 Punch
+            * `bnc` - BNC
+            * `f` - F Connector
+            * `n` - N Connector
+            * `mrj21` - MRJ21
+            * `fc` - FC
+            * `lc` - LC
+            * `lc-pc` - LC/PC
+            * `lc-upc` - LC/UPC
+            * `lc-apc` - LC/APC
+            * `lsh` - LSH
+            * `lsh-pc` - LSH/PC
+            * `lsh-upc` - LSH/UPC
+            * `lsh-apc` - LSH/APC
+            * `mpo` - MPO
+            * `mtrj` - MTRJ
+            * `sc` - SC
+            * `sc-pc` - SC/PC
+            * `sc-upc` - SC/UPC
+            * `sc-apc` - SC/APC
+            * `st` - ST
+            * `cs` - CS
+            * `sn` - SN
+            * `sma-905` - SMA 905
+            * `sma-906` - SMA 906
+            * `urm-p2` - URM-P2
+            * `urm-p4` - URM-P4
+            * `urm-p8` - URM-P8
+            * `splice` - Splice
+            * `other` - Other
+        color:
+          type: string
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        rear_port:
+          $ref: '#/components/schemas/NestedRearPortTemplateRequest'
+        rear_port_position:
+          type: integer
+          maximum: 1024
+          minimum: 1
+        description:
+          type: string
+          maxLength: 200
+      required:
+      - name
+      - rear_port
+      - type
+    GenericObject:
+      type: object
+      description: Minimal representation of some generic object identified by ContentType
+        and PK.
+      properties:
+        object_type:
+          type: string
+        object_id:
+          type: integer
+        object:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          readOnly: true
+      required:
+      - object
+      - object_id
+      - object_type
+    GenericObjectRequest:
+      type: object
+      description: Minimal representation of some generic object identified by ContentType
+        and PK.
+      properties:
+        object_type:
+          type: string
+        object_id:
+          type: integer
+      required:
+      - object_id
+      - object_type
+    Group:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 150
+        user_count:
+          type: integer
+          readOnly: true
+      required:
+      - display
+      - id
+      - name
+      - url
+      - user_count
+    GroupRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 150
+      required:
+      - name
+    IPAddress:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        family:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          readOnly: true
+        address:
+          type: string
+        vrf:
+          allOf:
+          - $ref: '#/components/schemas/NestedVRF'
+          nullable: true
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenant'
+          nullable: true
+        status:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        role:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        assigned_object_type:
+          type: string
+          nullable: true
+        assigned_object_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+          nullable: true
+        assigned_object:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          readOnly: true
+        nat_inside:
+          allOf:
+          - $ref: '#/components/schemas/NestedIPAddress'
+          nullable: true
+        nat_outside:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedIPAddress'
+          readOnly: true
+        dns_name:
+          type: string
+          description: Hostname or FQDN (not case-sensitive)
+          pattern: ^([0-9A-Za-z_-]+|\*)(\.[0-9A-Za-z_-]+)*\.?$
+          maxLength: 255
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - address
+      - assigned_object
+      - created
+      - display
+      - family
+      - id
+      - last_updated
+      - nat_outside
+      - url
+    IPAddressRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        address:
+          type: string
+          minLength: 1
+        vrf:
+          allOf:
+          - $ref: '#/components/schemas/NestedVRFRequest'
+          nullable: true
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenantRequest'
+          nullable: true
+        status:
+          enum:
+          - active
+          - reserved
+          - deprecated
+          - dhcp
+          - slaac
+          type: string
+          description: |-
+            * `active` - Active
+            * `reserved` - Reserved
+            * `deprecated` - Deprecated
+            * `dhcp` - DHCP
+            * `slaac` - SLAAC
+        role:
+          enum:
+          - loopback
+          - secondary
+          - anycast
+          - vip
+          - vrrp
+          - hsrp
+          - glbp
+          - carp
+          - ''
+          type: string
+          description: |-
+            * `loopback` - Loopback
+            * `secondary` - Secondary
+            * `anycast` - Anycast
+            * `vip` - VIP
+            * `vrrp` - VRRP
+            * `hsrp` - HSRP
+            * `glbp` - GLBP
+            * `carp` - CARP
+        assigned_object_type:
+          type: string
+          nullable: true
+        assigned_object_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+          nullable: true
+        nat_inside:
+          allOf:
+          - $ref: '#/components/schemas/NestedIPAddressRequest'
+          nullable: true
+        dns_name:
+          type: string
+          description: Hostname or FQDN (not case-sensitive)
+          pattern: ^([0-9A-Za-z_-]+|\*)(\.[0-9A-Za-z_-]+)*\.?$
+          maxLength: 255
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - address
+    IPRange:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        family:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          readOnly: true
+        start_address:
+          type: string
+        end_address:
+          type: string
+        size:
+          type: integer
+          readOnly: true
+        vrf:
+          allOf:
+          - $ref: '#/components/schemas/NestedVRF'
+          nullable: true
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenant'
+          nullable: true
+        status:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        role:
+          allOf:
+          - $ref: '#/components/schemas/NestedRole'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        mark_utilized:
+          type: boolean
+          description: Treat as 100% utilized
+      required:
+      - created
+      - display
+      - end_address
+      - family
+      - id
+      - last_updated
+      - size
+      - start_address
+      - url
+    IPRangeRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        start_address:
+          type: string
+          minLength: 1
+        end_address:
+          type: string
+          minLength: 1
+        vrf:
+          allOf:
+          - $ref: '#/components/schemas/NestedVRFRequest'
+          nullable: true
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenantRequest'
+          nullable: true
+        status:
+          enum:
+          - active
+          - reserved
+          - deprecated
+          type: string
+          description: |-
+            * `active` - Active
+            * `reserved` - Reserved
+            * `deprecated` - Deprecated
+        role:
+          allOf:
+          - $ref: '#/components/schemas/NestedRoleRequest'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        mark_utilized:
+          type: boolean
+          description: Treat as 100% utilized
+      required:
+      - end_address
+      - start_address
+    ImageAttachment:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        content_type:
+          type: string
+        object_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+        parent:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          readOnly: true
+        name:
+          type: string
+          maxLength: 50
+        image:
+          type: string
+          format: uri
+        image_height:
+          type: integer
+          maximum: 32767
+          minimum: 0
+        image_width:
+          type: integer
+          maximum: 32767
+          minimum: 0
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - content_type
+      - created
+      - display
+      - id
+      - image
+      - image_height
+      - image_width
+      - last_updated
+      - object_id
+      - parent
+      - url
+    ImageAttachmentRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        content_type:
+          type: string
+        object_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+        name:
+          type: string
+          maxLength: 50
+        image:
+          type: string
+          format: binary
+        image_height:
+          type: integer
+          maximum: 32767
+          minimum: 0
+        image_width:
+          type: integer
+          maximum: 32767
+          minimum: 0
+      required:
+      - content_type
+      - image
+      - image_height
+      - image_width
+      - object_id
+    Interface:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        device:
+          $ref: '#/components/schemas/NestedDevice'
+        vdcs:
+          type: array
+          items:
+            type: integer
+        module:
+          allOf:
+          - $ref: '#/components/schemas/ComponentNestedModule'
+          nullable: true
+        name:
+          type: string
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        enabled:
+          type: boolean
+        parent:
+          allOf:
+          - $ref: '#/components/schemas/NestedInterface'
+          nullable: true
+        bridge:
+          allOf:
+          - $ref: '#/components/schemas/NestedInterface'
+          nullable: true
+        lag:
+          allOf:
+          - $ref: '#/components/schemas/NestedInterface'
+          nullable: true
+        mtu:
+          type: integer
+          maximum: 65536
+          minimum: 1
+          nullable: true
+        mac_address:
+          type: string
+          nullable: true
+        speed:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          title: Speed (Kbps)
+        duplex:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          nullable: true
+        wwn:
+          type: string
+        mgmt_only:
+          type: boolean
+          title: Management only
+          description: This interface is used only for out-of-band management
+        description:
+          type: string
+          maxLength: 200
+        mode:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          nullable: true
+        rf_role:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          nullable: true
+        rf_channel:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          nullable: true
+        poe_mode:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          nullable: true
+        poe_type:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          nullable: true
+        rf_channel_frequency:
+          type: number
+          format: double
+          maximum: 100000
+          minimum: -100000
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+          title: Channel frequency (MHz)
+          description: Populated by selected channel (if set)
+        rf_channel_width:
+          type: number
+          format: double
+          maximum: 10000
+          minimum: -10000
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+          title: Channel width (MHz)
+          description: Populated by selected channel (if set)
+        tx_power:
+          type: integer
+          maximum: 127
+          minimum: 0
+          nullable: true
+          title: Transmit power (dBm)
+        untagged_vlan:
+          allOf:
+          - $ref: '#/components/schemas/NestedVLAN'
+          nullable: true
+        tagged_vlans:
+          type: array
+          items:
+            type: integer
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        cable:
+          allOf:
+          - $ref: '#/components/schemas/NestedCable'
+          readOnly: true
+          nullable: true
+        cable_end:
+          type: string
+          readOnly: true
+        wireless_link:
+          allOf:
+          - $ref: '#/components/schemas/NestedWirelessLink'
+          readOnly: true
+          nullable: true
+        link_peers:
+          type: array
+          items: {}
+          readOnly: true
+        link_peers_type:
+          type: string
+          description: Return the type of the peer link terminations, or None.
+          readOnly: true
+        wireless_lans:
+          type: array
+          items:
+            type: integer
+        vrf:
+          allOf:
+          - $ref: '#/components/schemas/NestedVRF'
+          nullable: true
+        l2vpn_termination:
+          allOf:
+          - $ref: '#/components/schemas/NestedL2VPNTermination'
+          readOnly: true
+          nullable: true
+        connected_endpoints:
+          type: array
+          items: {}
+          readOnly: true
+        connected_endpoints_type:
+          type: string
+          readOnly: true
+        connected_endpoints_reachable:
+          type: boolean
+          readOnly: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        count_ipaddresses:
+          type: integer
+          readOnly: true
+        count_fhrp_groups:
+          type: integer
+          readOnly: true
+        _occupied:
+          type: boolean
+          readOnly: true
+          title: ' occupied'
+      required:
+      - _occupied
+      - cable
+      - cable_end
+      - connected_endpoints
+      - connected_endpoints_reachable
+      - connected_endpoints_type
+      - count_fhrp_groups
+      - count_ipaddresses
+      - created
+      - device
+      - display
+      - id
+      - l2vpn_termination
+      - last_updated
+      - link_peers
+      - link_peers_type
+      - name
+      - type
+      - url
+      - wireless_link
+    InterfaceRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          $ref: '#/components/schemas/NestedDeviceRequest'
+        vdcs:
+          type: array
+          items:
+            type: integer
+        module:
+          allOf:
+          - $ref: '#/components/schemas/ComponentNestedModuleRequest'
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - virtual
+          - bridge
+          - lag
+          - 100base-fx
+          - 100base-lfx
+          - 100base-tx
+          - 100base-t1
+          - 1000base-t
+          - 2.5gbase-t
+          - 5gbase-t
+          - 10gbase-t
+          - 10gbase-cx4
+          - 1000base-x-gbic
+          - 1000base-x-sfp
+          - 10gbase-x-sfpp
+          - 10gbase-x-xfp
+          - 10gbase-x-xenpak
+          - 10gbase-x-x2
+          - 25gbase-x-sfp28
+          - 50gbase-x-sfp56
+          - 40gbase-x-qsfpp
+          - 50gbase-x-sfp28
+          - 100gbase-x-cfp
+          - 100gbase-x-cfp2
+          - 200gbase-x-cfp2
+          - 100gbase-x-cfp4
+          - 100gbase-x-cpak
+          - 100gbase-x-qsfp28
+          - 200gbase-x-qsfp56
+          - 400gbase-x-qsfpdd
+          - 400gbase-x-osfp
+          - 800gbase-x-qsfpdd
+          - 800gbase-x-osfp
+          - 1000base-kx
+          - 10gbase-kr
+          - 10gbase-kx4
+          - 25gbase-kr
+          - 40gbase-kr4
+          - 50gbase-kr
+          - 100gbase-kp4
+          - 100gbase-kr2
+          - 100gbase-kr4
+          - ieee802.11a
+          - ieee802.11g
+          - ieee802.11n
+          - ieee802.11ac
+          - ieee802.11ad
+          - ieee802.11ax
+          - ieee802.11ay
+          - ieee802.15.1
+          - other-wireless
+          - gsm
+          - cdma
+          - lte
+          - sonet-oc3
+          - sonet-oc12
+          - sonet-oc48
+          - sonet-oc192
+          - sonet-oc768
+          - sonet-oc1920
+          - sonet-oc3840
+          - 1gfc-sfp
+          - 2gfc-sfp
+          - 4gfc-sfp
+          - 8gfc-sfpp
+          - 16gfc-sfpp
+          - 32gfc-sfp28
+          - 64gfc-qsfpp
+          - 128gfc-qsfp28
+          - infiniband-sdr
+          - infiniband-ddr
+          - infiniband-qdr
+          - infiniband-fdr10
+          - infiniband-fdr
+          - infiniband-edr
+          - infiniband-hdr
+          - infiniband-ndr
+          - infiniband-xdr
+          - t1
+          - e1
+          - t3
+          - e3
+          - xdsl
+          - docsis
+          - gpon
+          - xg-pon
+          - xgs-pon
+          - ng-pon2
+          - epon
+          - 10g-epon
+          - cisco-stackwise
+          - cisco-stackwise-plus
+          - cisco-flexstack
+          - cisco-flexstack-plus
+          - cisco-stackwise-80
+          - cisco-stackwise-160
+          - cisco-stackwise-320
+          - cisco-stackwise-480
+          - cisco-stackwise-1t
+          - juniper-vcp
+          - extreme-summitstack
+          - extreme-summitstack-128
+          - extreme-summitstack-256
+          - extreme-summitstack-512
+          - other
+          type: string
+          description: |-
+            * `virtual` - Virtual
+            * `bridge` - Bridge
+            * `lag` - Link Aggregation Group (LAG)
+            * `100base-fx` - 100BASE-FX (10/100ME FIBER)
+            * `100base-lfx` - 100BASE-LFX (10/100ME FIBER)
+            * `100base-tx` - 100BASE-TX (10/100ME)
+            * `100base-t1` - 100BASE-T1 (10/100ME Single Pair)
+            * `1000base-t` - 1000BASE-T (1GE)
+            * `2.5gbase-t` - 2.5GBASE-T (2.5GE)
+            * `5gbase-t` - 5GBASE-T (5GE)
+            * `10gbase-t` - 10GBASE-T (10GE)
+            * `10gbase-cx4` - 10GBASE-CX4 (10GE)
+            * `1000base-x-gbic` - GBIC (1GE)
+            * `1000base-x-sfp` - SFP (1GE)
+            * `10gbase-x-sfpp` - SFP+ (10GE)
+            * `10gbase-x-xfp` - XFP (10GE)
+            * `10gbase-x-xenpak` - XENPAK (10GE)
+            * `10gbase-x-x2` - X2 (10GE)
+            * `25gbase-x-sfp28` - SFP28 (25GE)
+            * `50gbase-x-sfp56` - SFP56 (50GE)
+            * `40gbase-x-qsfpp` - QSFP+ (40GE)
+            * `50gbase-x-sfp28` - QSFP28 (50GE)
+            * `100gbase-x-cfp` - CFP (100GE)
+            * `100gbase-x-cfp2` - CFP2 (100GE)
+            * `200gbase-x-cfp2` - CFP2 (200GE)
+            * `100gbase-x-cfp4` - CFP4 (100GE)
+            * `100gbase-x-cpak` - Cisco CPAK (100GE)
+            * `100gbase-x-qsfp28` - QSFP28 (100GE)
+            * `200gbase-x-qsfp56` - QSFP56 (200GE)
+            * `400gbase-x-qsfpdd` - QSFP-DD (400GE)
+            * `400gbase-x-osfp` - OSFP (400GE)
+            * `800gbase-x-qsfpdd` - QSFP-DD (800GE)
+            * `800gbase-x-osfp` - OSFP (800GE)
+            * `1000base-kx` - 1000BASE-KX (1GE)
+            * `10gbase-kr` - 10GBASE-KR (10GE)
+            * `10gbase-kx4` - 10GBASE-KX4 (10GE)
+            * `25gbase-kr` - 25GBASE-KR (25GE)
+            * `40gbase-kr4` - 40GBASE-KR4 (40GE)
+            * `50gbase-kr` - 50GBASE-KR (50GE)
+            * `100gbase-kp4` - 100GBASE-KP4 (100GE)
+            * `100gbase-kr2` - 100GBASE-KR2 (100GE)
+            * `100gbase-kr4` - 100GBASE-KR4 (100GE)
+            * `ieee802.11a` - IEEE 802.11a
+            * `ieee802.11g` - IEEE 802.11b/g
+            * `ieee802.11n` - IEEE 802.11n
+            * `ieee802.11ac` - IEEE 802.11ac
+            * `ieee802.11ad` - IEEE 802.11ad
+            * `ieee802.11ax` - IEEE 802.11ax
+            * `ieee802.11ay` - IEEE 802.11ay
+            * `ieee802.15.1` - IEEE 802.15.1 (Bluetooth)
+            * `other-wireless` - Other (Wireless)
+            * `gsm` - GSM
+            * `cdma` - CDMA
+            * `lte` - LTE
+            * `sonet-oc3` - OC-3/STM-1
+            * `sonet-oc12` - OC-12/STM-4
+            * `sonet-oc48` - OC-48/STM-16
+            * `sonet-oc192` - OC-192/STM-64
+            * `sonet-oc768` - OC-768/STM-256
+            * `sonet-oc1920` - OC-1920/STM-640
+            * `sonet-oc3840` - OC-3840/STM-1234
+            * `1gfc-sfp` - SFP (1GFC)
+            * `2gfc-sfp` - SFP (2GFC)
+            * `4gfc-sfp` - SFP (4GFC)
+            * `8gfc-sfpp` - SFP+ (8GFC)
+            * `16gfc-sfpp` - SFP+ (16GFC)
+            * `32gfc-sfp28` - SFP28 (32GFC)
+            * `64gfc-qsfpp` - QSFP+ (64GFC)
+            * `128gfc-qsfp28` - QSFP28 (128GFC)
+            * `infiniband-sdr` - SDR (2 Gbps)
+            * `infiniband-ddr` - DDR (4 Gbps)
+            * `infiniband-qdr` - QDR (8 Gbps)
+            * `infiniband-fdr10` - FDR10 (10 Gbps)
+            * `infiniband-fdr` - FDR (13.5 Gbps)
+            * `infiniband-edr` - EDR (25 Gbps)
+            * `infiniband-hdr` - HDR (50 Gbps)
+            * `infiniband-ndr` - NDR (100 Gbps)
+            * `infiniband-xdr` - XDR (250 Gbps)
+            * `t1` - T1 (1.544 Mbps)
+            * `e1` - E1 (2.048 Mbps)
+            * `t3` - T3 (45 Mbps)
+            * `e3` - E3 (34 Mbps)
+            * `xdsl` - xDSL
+            * `docsis` - DOCSIS
+            * `gpon` - GPON (2.5 Gbps / 1.25 Gps)
+            * `xg-pon` - XG-PON (10 Gbps / 2.5 Gbps)
+            * `xgs-pon` - XGS-PON (10 Gbps)
+            * `ng-pon2` - NG-PON2 (TWDM-PON) (4x10 Gbps)
+            * `epon` - EPON (1 Gbps)
+            * `10g-epon` - 10G-EPON (10 Gbps)
+            * `cisco-stackwise` - Cisco StackWise
+            * `cisco-stackwise-plus` - Cisco StackWise Plus
+            * `cisco-flexstack` - Cisco FlexStack
+            * `cisco-flexstack-plus` - Cisco FlexStack Plus
+            * `cisco-stackwise-80` - Cisco StackWise-80
+            * `cisco-stackwise-160` - Cisco StackWise-160
+            * `cisco-stackwise-320` - Cisco StackWise-320
+            * `cisco-stackwise-480` - Cisco StackWise-480
+            * `cisco-stackwise-1t` - Cisco StackWise-1T
+            * `juniper-vcp` - Juniper VCP
+            * `extreme-summitstack` - Extreme SummitStack
+            * `extreme-summitstack-128` - Extreme SummitStack-128
+            * `extreme-summitstack-256` - Extreme SummitStack-256
+            * `extreme-summitstack-512` - Extreme SummitStack-512
+            * `other` - Other
+        enabled:
+          type: boolean
+        parent:
+          allOf:
+          - $ref: '#/components/schemas/NestedInterfaceRequest'
+          nullable: true
+        bridge:
+          allOf:
+          - $ref: '#/components/schemas/NestedInterfaceRequest'
+          nullable: true
+        lag:
+          allOf:
+          - $ref: '#/components/schemas/NestedInterfaceRequest'
+          nullable: true
+        mtu:
+          type: integer
+          maximum: 65536
+          minimum: 1
+          nullable: true
+        mac_address:
+          type: string
+          nullable: true
+          minLength: 1
+        speed:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          title: Speed (Kbps)
+        duplex:
+          enum:
+          - half
+          - full
+          - auto
+          - ''
+          - null
+          type: string
+          description: |-
+            * `half` - Half
+            * `full` - Full
+            * `auto` - Auto
+          nullable: true
+        wwn:
+          type: string
+          minLength: 1
+        mgmt_only:
+          type: boolean
+          title: Management only
+          description: This interface is used only for out-of-band management
+        description:
+          type: string
+          maxLength: 200
+        mode:
+          enum:
+          - access
+          - tagged
+          - tagged-all
+          - ''
+          - null
+          type: string
+          description: |-
+            * `access` - Access
+            * `tagged` - Tagged
+            * `tagged-all` - Tagged (All)
+          nullable: true
+        rf_role:
+          enum:
+          - ap
+          - station
+          - ''
+          - null
+          type: string
+          description: |-
+            * `ap` - Access point
+            * `station` - Station
+          nullable: true
+        rf_channel:
+          enum:
+          - 2.4g-1-2412-22
+          - 2.4g-2-2417-22
+          - 2.4g-3-2422-22
+          - 2.4g-4-2427-22
+          - 2.4g-5-2432-22
+          - 2.4g-6-2437-22
+          - 2.4g-7-2442-22
+          - 2.4g-8-2447-22
+          - 2.4g-9-2452-22
+          - 2.4g-10-2457-22
+          - 2.4g-11-2462-22
+          - 2.4g-12-2467-22
+          - 2.4g-13-2472-22
+          - 5g-32-5160-20
+          - 5g-34-5170-40
+          - 5g-36-5180-20
+          - 5g-38-5190-40
+          - 5g-40-5200-20
+          - 5g-42-5210-80
+          - 5g-44-5220-20
+          - 5g-46-5230-40
+          - 5g-48-5240-20
+          - 5g-50-5250-160
+          - 5g-52-5260-20
+          - 5g-54-5270-40
+          - 5g-56-5280-20
+          - 5g-58-5290-80
+          - 5g-60-5300-20
+          - 5g-62-5310-40
+          - 5g-64-5320-20
+          - 5g-100-5500-20
+          - 5g-102-5510-40
+          - 5g-104-5520-20
+          - 5g-106-5530-80
+          - 5g-108-5540-20
+          - 5g-110-5550-40
+          - 5g-112-5560-20
+          - 5g-114-5570-160
+          - 5g-116-5580-20
+          - 5g-118-5590-40
+          - 5g-120-5600-20
+          - 5g-122-5610-80
+          - 5g-124-5620-20
+          - 5g-126-5630-40
+          - 5g-128-5640-20
+          - 5g-132-5660-20
+          - 5g-134-5670-40
+          - 5g-136-5680-20
+          - 5g-138-5690-80
+          - 5g-140-5700-20
+          - 5g-142-5710-40
+          - 5g-144-5720-20
+          - 5g-149-5745-20
+          - 5g-151-5755-40
+          - 5g-153-5765-20
+          - 5g-155-5775-80
+          - 5g-157-5785-20
+          - 5g-159-5795-40
+          - 5g-161-5805-20
+          - 5g-163-5815-160
+          - 5g-165-5825-20
+          - 5g-167-5835-40
+          - 5g-169-5845-20
+          - 5g-171-5855-80
+          - 5g-173-5865-20
+          - 5g-175-5875-40
+          - 5g-177-5885-20
+          - 6g-1-5955-20
+          - 6g-3-5965-40
+          - 6g-5-5975-20
+          - 6g-7-5985-80
+          - 6g-9-5995-20
+          - 6g-11-6005-40
+          - 6g-13-6015-20
+          - 6g-15-6025-160
+          - 6g-17-6035-20
+          - 6g-19-6045-40
+          - 6g-21-6055-20
+          - 6g-23-6065-80
+          - 6g-25-6075-20
+          - 6g-27-6085-40
+          - 6g-29-6095-20
+          - 6g-31-6105-320
+          - 6g-33-6115-20
+          - 6g-35-6125-40
+          - 6g-37-6135-20
+          - 6g-39-6145-80
+          - 6g-41-6155-20
+          - 6g-43-6165-40
+          - 6g-45-6175-20
+          - 6g-47-6185-160
+          - 6g-49-6195-20
+          - 6g-51-6205-40
+          - 6g-53-6215-20
+          - 6g-55-6225-80
+          - 6g-57-6235-20
+          - 6g-59-6245-40
+          - 6g-61-6255-20
+          - 6g-65-6275-20
+          - 6g-67-6285-40
+          - 6g-69-6295-20
+          - 6g-71-6305-80
+          - 6g-73-6315-20
+          - 6g-75-6325-40
+          - 6g-77-6335-20
+          - 6g-79-6345-160
+          - 6g-81-6355-20
+          - 6g-83-6365-40
+          - 6g-85-6375-20
+          - 6g-87-6385-80
+          - 6g-89-6395-20
+          - 6g-91-6405-40
+          - 6g-93-6415-20
+          - 6g-95-6425-320
+          - 6g-97-6435-20
+          - 6g-99-6445-40
+          - 6g-101-6455-20
+          - 6g-103-6465-80
+          - 6g-105-6475-20
+          - 6g-107-6485-40
+          - 6g-109-6495-20
+          - 6g-111-6505-160
+          - 6g-113-6515-20
+          - 6g-115-6525-40
+          - 6g-117-6535-20
+          - 6g-119-6545-80
+          - 6g-121-6555-20
+          - 6g-123-6565-40
+          - 6g-125-6575-20
+          - 6g-129-6595-20
+          - 6g-131-6605-40
+          - 6g-133-6615-20
+          - 6g-135-6625-80
+          - 6g-137-6635-20
+          - 6g-139-6645-40
+          - 6g-141-6655-20
+          - 6g-143-6665-160
+          - 6g-145-6675-20
+          - 6g-147-6685-40
+          - 6g-149-6695-20
+          - 6g-151-6705-80
+          - 6g-153-6715-20
+          - 6g-155-6725-40
+          - 6g-157-6735-20
+          - 6g-159-6745-320
+          - 6g-161-6755-20
+          - 6g-163-6765-40
+          - 6g-165-6775-20
+          - 6g-167-6785-80
+          - 6g-169-6795-20
+          - 6g-171-6805-40
+          - 6g-173-6815-20
+          - 6g-175-6825-160
+          - 6g-177-6835-20
+          - 6g-179-6845-40
+          - 6g-181-6855-20
+          - 6g-183-6865-80
+          - 6g-185-6875-20
+          - 6g-187-6885-40
+          - 6g-189-6895-20
+          - 6g-193-6915-20
+          - 6g-195-6925-40
+          - 6g-197-6935-20
+          - 6g-199-6945-80
+          - 6g-201-6955-20
+          - 6g-203-6965-40
+          - 6g-205-6975-20
+          - 6g-207-6985-160
+          - 6g-209-6995-20
+          - 6g-211-7005-40
+          - 6g-213-7015-20
+          - 6g-215-7025-80
+          - 6g-217-7035-20
+          - 6g-219-7045-40
+          - 6g-221-7055-20
+          - 6g-225-7075-20
+          - 6g-227-7085-40
+          - 6g-229-7095-20
+          - 6g-233-7115-20
+          - 60g-1-58320-2160
+          - 60g-2-60480-2160
+          - 60g-3-62640-2160
+          - 60g-4-64800-2160
+          - 60g-5-66960-2160
+          - 60g-6-69120-2160
+          - 60g-9-59400-4320
+          - 60g-10-61560-4320
+          - 60g-11-63720-4320
+          - 60g-12-65880-4320
+          - 60g-13-68040-4320
+          - 60g-17-60480-6480
+          - 60g-18-62640-6480
+          - 60g-19-64800-6480
+          - 60g-20-66960-6480
+          - 60g-25-61560-6480
+          - 60g-26-63720-6480
+          - 60g-27-65880-6480
+          - ''
+          - null
+          type: string
+          description: |-
+            * `2.4g-1-2412-22` - 1 (2412 MHz)
+            * `2.4g-2-2417-22` - 2 (2417 MHz)
+            * `2.4g-3-2422-22` - 3 (2422 MHz)
+            * `2.4g-4-2427-22` - 4 (2427 MHz)
+            * `2.4g-5-2432-22` - 5 (2432 MHz)
+            * `2.4g-6-2437-22` - 6 (2437 MHz)
+            * `2.4g-7-2442-22` - 7 (2442 MHz)
+            * `2.4g-8-2447-22` - 8 (2447 MHz)
+            * `2.4g-9-2452-22` - 9 (2452 MHz)
+            * `2.4g-10-2457-22` - 10 (2457 MHz)
+            * `2.4g-11-2462-22` - 11 (2462 MHz)
+            * `2.4g-12-2467-22` - 12 (2467 MHz)
+            * `2.4g-13-2472-22` - 13 (2472 MHz)
+            * `5g-32-5160-20` - 32 (5160/20 MHz)
+            * `5g-34-5170-40` - 34 (5170/40 MHz)
+            * `5g-36-5180-20` - 36 (5180/20 MHz)
+            * `5g-38-5190-40` - 38 (5190/40 MHz)
+            * `5g-40-5200-20` - 40 (5200/20 MHz)
+            * `5g-42-5210-80` - 42 (5210/80 MHz)
+            * `5g-44-5220-20` - 44 (5220/20 MHz)
+            * `5g-46-5230-40` - 46 (5230/40 MHz)
+            * `5g-48-5240-20` - 48 (5240/20 MHz)
+            * `5g-50-5250-160` - 50 (5250/160 MHz)
+            * `5g-52-5260-20` - 52 (5260/20 MHz)
+            * `5g-54-5270-40` - 54 (5270/40 MHz)
+            * `5g-56-5280-20` - 56 (5280/20 MHz)
+            * `5g-58-5290-80` - 58 (5290/80 MHz)
+            * `5g-60-5300-20` - 60 (5300/20 MHz)
+            * `5g-62-5310-40` - 62 (5310/40 MHz)
+            * `5g-64-5320-20` - 64 (5320/20 MHz)
+            * `5g-100-5500-20` - 100 (5500/20 MHz)
+            * `5g-102-5510-40` - 102 (5510/40 MHz)
+            * `5g-104-5520-20` - 104 (5520/20 MHz)
+            * `5g-106-5530-80` - 106 (5530/80 MHz)
+            * `5g-108-5540-20` - 108 (5540/20 MHz)
+            * `5g-110-5550-40` - 110 (5550/40 MHz)
+            * `5g-112-5560-20` - 112 (5560/20 MHz)
+            * `5g-114-5570-160` - 114 (5570/160 MHz)
+            * `5g-116-5580-20` - 116 (5580/20 MHz)
+            * `5g-118-5590-40` - 118 (5590/40 MHz)
+            * `5g-120-5600-20` - 120 (5600/20 MHz)
+            * `5g-122-5610-80` - 122 (5610/80 MHz)
+            * `5g-124-5620-20` - 124 (5620/20 MHz)
+            * `5g-126-5630-40` - 126 (5630/40 MHz)
+            * `5g-128-5640-20` - 128 (5640/20 MHz)
+            * `5g-132-5660-20` - 132 (5660/20 MHz)
+            * `5g-134-5670-40` - 134 (5670/40 MHz)
+            * `5g-136-5680-20` - 136 (5680/20 MHz)
+            * `5g-138-5690-80` - 138 (5690/80 MHz)
+            * `5g-140-5700-20` - 140 (5700/20 MHz)
+            * `5g-142-5710-40` - 142 (5710/40 MHz)
+            * `5g-144-5720-20` - 144 (5720/20 MHz)
+            * `5g-149-5745-20` - 149 (5745/20 MHz)
+            * `5g-151-5755-40` - 151 (5755/40 MHz)
+            * `5g-153-5765-20` - 153 (5765/20 MHz)
+            * `5g-155-5775-80` - 155 (5775/80 MHz)
+            * `5g-157-5785-20` - 157 (5785/20 MHz)
+            * `5g-159-5795-40` - 159 (5795/40 MHz)
+            * `5g-161-5805-20` - 161 (5805/20 MHz)
+            * `5g-163-5815-160` - 163 (5815/160 MHz)
+            * `5g-165-5825-20` - 165 (5825/20 MHz)
+            * `5g-167-5835-40` - 167 (5835/40 MHz)
+            * `5g-169-5845-20` - 169 (5845/20 MHz)
+            * `5g-171-5855-80` - 171 (5855/80 MHz)
+            * `5g-173-5865-20` - 173 (5865/20 MHz)
+            * `5g-175-5875-40` - 175 (5875/40 MHz)
+            * `5g-177-5885-20` - 177 (5885/20 MHz)
+            * `6g-1-5955-20` - 1 (5955/20 MHz)
+            * `6g-3-5965-40` - 3 (5965/40 MHz)
+            * `6g-5-5975-20` - 5 (5975/20 MHz)
+            * `6g-7-5985-80` - 7 (5985/80 MHz)
+            * `6g-9-5995-20` - 9 (5995/20 MHz)
+            * `6g-11-6005-40` - 11 (6005/40 MHz)
+            * `6g-13-6015-20` - 13 (6015/20 MHz)
+            * `6g-15-6025-160` - 15 (6025/160 MHz)
+            * `6g-17-6035-20` - 17 (6035/20 MHz)
+            * `6g-19-6045-40` - 19 (6045/40 MHz)
+            * `6g-21-6055-20` - 21 (6055/20 MHz)
+            * `6g-23-6065-80` - 23 (6065/80 MHz)
+            * `6g-25-6075-20` - 25 (6075/20 MHz)
+            * `6g-27-6085-40` - 27 (6085/40 MHz)
+            * `6g-29-6095-20` - 29 (6095/20 MHz)
+            * `6g-31-6105-320` - 31 (6105/320 MHz)
+            * `6g-33-6115-20` - 33 (6115/20 MHz)
+            * `6g-35-6125-40` - 35 (6125/40 MHz)
+            * `6g-37-6135-20` - 37 (6135/20 MHz)
+            * `6g-39-6145-80` - 39 (6145/80 MHz)
+            * `6g-41-6155-20` - 41 (6155/20 MHz)
+            * `6g-43-6165-40` - 43 (6165/40 MHz)
+            * `6g-45-6175-20` - 45 (6175/20 MHz)
+            * `6g-47-6185-160` - 47 (6185/160 MHz)
+            * `6g-49-6195-20` - 49 (6195/20 MHz)
+            * `6g-51-6205-40` - 51 (6205/40 MHz)
+            * `6g-53-6215-20` - 53 (6215/20 MHz)
+            * `6g-55-6225-80` - 55 (6225/80 MHz)
+            * `6g-57-6235-20` - 57 (6235/20 MHz)
+            * `6g-59-6245-40` - 59 (6245/40 MHz)
+            * `6g-61-6255-20` - 61 (6255/20 MHz)
+            * `6g-65-6275-20` - 65 (6275/20 MHz)
+            * `6g-67-6285-40` - 67 (6285/40 MHz)
+            * `6g-69-6295-20` - 69 (6295/20 MHz)
+            * `6g-71-6305-80` - 71 (6305/80 MHz)
+            * `6g-73-6315-20` - 73 (6315/20 MHz)
+            * `6g-75-6325-40` - 75 (6325/40 MHz)
+            * `6g-77-6335-20` - 77 (6335/20 MHz)
+            * `6g-79-6345-160` - 79 (6345/160 MHz)
+            * `6g-81-6355-20` - 81 (6355/20 MHz)
+            * `6g-83-6365-40` - 83 (6365/40 MHz)
+            * `6g-85-6375-20` - 85 (6375/20 MHz)
+            * `6g-87-6385-80` - 87 (6385/80 MHz)
+            * `6g-89-6395-20` - 89 (6395/20 MHz)
+            * `6g-91-6405-40` - 91 (6405/40 MHz)
+            * `6g-93-6415-20` - 93 (6415/20 MHz)
+            * `6g-95-6425-320` - 95 (6425/320 MHz)
+            * `6g-97-6435-20` - 97 (6435/20 MHz)
+            * `6g-99-6445-40` - 99 (6445/40 MHz)
+            * `6g-101-6455-20` - 101 (6455/20 MHz)
+            * `6g-103-6465-80` - 103 (6465/80 MHz)
+            * `6g-105-6475-20` - 105 (6475/20 MHz)
+            * `6g-107-6485-40` - 107 (6485/40 MHz)
+            * `6g-109-6495-20` - 109 (6495/20 MHz)
+            * `6g-111-6505-160` - 111 (6505/160 MHz)
+            * `6g-113-6515-20` - 113 (6515/20 MHz)
+            * `6g-115-6525-40` - 115 (6525/40 MHz)
+            * `6g-117-6535-20` - 117 (6535/20 MHz)
+            * `6g-119-6545-80` - 119 (6545/80 MHz)
+            * `6g-121-6555-20` - 121 (6555/20 MHz)
+            * `6g-123-6565-40` - 123 (6565/40 MHz)
+            * `6g-125-6575-20` - 125 (6575/20 MHz)
+            * `6g-129-6595-20` - 129 (6595/20 MHz)
+            * `6g-131-6605-40` - 131 (6605/40 MHz)
+            * `6g-133-6615-20` - 133 (6615/20 MHz)
+            * `6g-135-6625-80` - 135 (6625/80 MHz)
+            * `6g-137-6635-20` - 137 (6635/20 MHz)
+            * `6g-139-6645-40` - 139 (6645/40 MHz)
+            * `6g-141-6655-20` - 141 (6655/20 MHz)
+            * `6g-143-6665-160` - 143 (6665/160 MHz)
+            * `6g-145-6675-20` - 145 (6675/20 MHz)
+            * `6g-147-6685-40` - 147 (6685/40 MHz)
+            * `6g-149-6695-20` - 149 (6695/20 MHz)
+            * `6g-151-6705-80` - 151 (6705/80 MHz)
+            * `6g-153-6715-20` - 153 (6715/20 MHz)
+            * `6g-155-6725-40` - 155 (6725/40 MHz)
+            * `6g-157-6735-20` - 157 (6735/20 MHz)
+            * `6g-159-6745-320` - 159 (6745/320 MHz)
+            * `6g-161-6755-20` - 161 (6755/20 MHz)
+            * `6g-163-6765-40` - 163 (6765/40 MHz)
+            * `6g-165-6775-20` - 165 (6775/20 MHz)
+            * `6g-167-6785-80` - 167 (6785/80 MHz)
+            * `6g-169-6795-20` - 169 (6795/20 MHz)
+            * `6g-171-6805-40` - 171 (6805/40 MHz)
+            * `6g-173-6815-20` - 173 (6815/20 MHz)
+            * `6g-175-6825-160` - 175 (6825/160 MHz)
+            * `6g-177-6835-20` - 177 (6835/20 MHz)
+            * `6g-179-6845-40` - 179 (6845/40 MHz)
+            * `6g-181-6855-20` - 181 (6855/20 MHz)
+            * `6g-183-6865-80` - 183 (6865/80 MHz)
+            * `6g-185-6875-20` - 185 (6875/20 MHz)
+            * `6g-187-6885-40` - 187 (6885/40 MHz)
+            * `6g-189-6895-20` - 189 (6895/20 MHz)
+            * `6g-193-6915-20` - 193 (6915/20 MHz)
+            * `6g-195-6925-40` - 195 (6925/40 MHz)
+            * `6g-197-6935-20` - 197 (6935/20 MHz)
+            * `6g-199-6945-80` - 199 (6945/80 MHz)
+            * `6g-201-6955-20` - 201 (6955/20 MHz)
+            * `6g-203-6965-40` - 203 (6965/40 MHz)
+            * `6g-205-6975-20` - 205 (6975/20 MHz)
+            * `6g-207-6985-160` - 207 (6985/160 MHz)
+            * `6g-209-6995-20` - 209 (6995/20 MHz)
+            * `6g-211-7005-40` - 211 (7005/40 MHz)
+            * `6g-213-7015-20` - 213 (7015/20 MHz)
+            * `6g-215-7025-80` - 215 (7025/80 MHz)
+            * `6g-217-7035-20` - 217 (7035/20 MHz)
+            * `6g-219-7045-40` - 219 (7045/40 MHz)
+            * `6g-221-7055-20` - 221 (7055/20 MHz)
+            * `6g-225-7075-20` - 225 (7075/20 MHz)
+            * `6g-227-7085-40` - 227 (7085/40 MHz)
+            * `6g-229-7095-20` - 229 (7095/20 MHz)
+            * `6g-233-7115-20` - 233 (7115/20 MHz)
+            * `60g-1-58320-2160` - 1 (58.32/2.16 GHz)
+            * `60g-2-60480-2160` - 2 (60.48/2.16 GHz)
+            * `60g-3-62640-2160` - 3 (62.64/2.16 GHz)
+            * `60g-4-64800-2160` - 4 (64.80/2.16 GHz)
+            * `60g-5-66960-2160` - 5 (66.96/2.16 GHz)
+            * `60g-6-69120-2160` - 6 (69.12/2.16 GHz)
+            * `60g-9-59400-4320` - 9 (59.40/4.32 GHz)
+            * `60g-10-61560-4320` - 10 (61.56/4.32 GHz)
+            * `60g-11-63720-4320` - 11 (63.72/4.32 GHz)
+            * `60g-12-65880-4320` - 12 (65.88/4.32 GHz)
+            * `60g-13-68040-4320` - 13 (68.04/4.32 GHz)
+            * `60g-17-60480-6480` - 17 (60.48/6.48 GHz)
+            * `60g-18-62640-6480` - 18 (62.64/6.48 GHz)
+            * `60g-19-64800-6480` - 19 (64.80/6.48 GHz)
+            * `60g-20-66960-6480` - 20 (66.96/6.48 GHz)
+            * `60g-25-61560-6480` - 25 (61.56/8.64 GHz)
+            * `60g-26-63720-6480` - 26 (63.72/8.64 GHz)
+            * `60g-27-65880-6480` - 27 (65.88/8.64 GHz)
+          nullable: true
+        poe_mode:
+          enum:
+          - pd
+          - pse
+          - ''
+          - null
+          type: string
+          description: |-
+            * `pd` - PD
+            * `pse` - PSE
+          nullable: true
+        poe_type:
+          enum:
+          - type1-ieee802.3af
+          - type2-ieee802.3at
+          - type3-ieee802.3bt
+          - type4-ieee802.3bt
+          - passive-24v-2pair
+          - passive-24v-4pair
+          - passive-48v-2pair
+          - passive-48v-4pair
+          - ''
+          - null
+          type: string
+          description: |-
+            * `type1-ieee802.3af` - 802.3af (Type 1)
+            * `type2-ieee802.3at` - 802.3at (Type 2)
+            * `type3-ieee802.3bt` - 802.3bt (Type 3)
+            * `type4-ieee802.3bt` - 802.3bt (Type 4)
+            * `passive-24v-2pair` - Passive 24V (2-pair)
+            * `passive-24v-4pair` - Passive 24V (4-pair)
+            * `passive-48v-2pair` - Passive 48V (2-pair)
+            * `passive-48v-4pair` - Passive 48V (4-pair)
+          nullable: true
+        rf_channel_frequency:
+          type: number
+          format: double
+          maximum: 100000
+          minimum: -100000
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+          title: Channel frequency (MHz)
+          description: Populated by selected channel (if set)
+        rf_channel_width:
+          type: number
+          format: double
+          maximum: 10000
+          minimum: -10000
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+          title: Channel width (MHz)
+          description: Populated by selected channel (if set)
+        tx_power:
+          type: integer
+          maximum: 127
+          minimum: 0
+          nullable: true
+          title: Transmit power (dBm)
+        untagged_vlan:
+          allOf:
+          - $ref: '#/components/schemas/NestedVLANRequest'
+          nullable: true
+        tagged_vlans:
+          type: array
+          items:
+            type: integer
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        wireless_lans:
+          type: array
+          items:
+            type: integer
+        vrf:
+          allOf:
+          - $ref: '#/components/schemas/NestedVRFRequest'
+          nullable: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - device
+      - name
+      - type
+    InterfaceTemplate:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        device_type:
+          allOf:
+          - $ref: '#/components/schemas/NestedDeviceType'
+          nullable: true
+        module_type:
+          allOf:
+          - $ref: '#/components/schemas/NestedModuleType'
+          nullable: true
+        name:
+          type: string
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        enabled:
+          type: boolean
+        mgmt_only:
+          type: boolean
+          title: Management only
+        description:
+          type: string
+          maxLength: 200
+        bridge:
+          allOf:
+          - $ref: '#/components/schemas/NestedInterfaceTemplate'
+          nullable: true
+        poe_mode:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          nullable: true
+        poe_type:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          nullable: true
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - type
+      - url
+    InterfaceTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          allOf:
+          - $ref: '#/components/schemas/NestedDeviceTypeRequest'
+          nullable: true
+        module_type:
+          allOf:
+          - $ref: '#/components/schemas/NestedModuleTypeRequest'
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - virtual
+          - bridge
+          - lag
+          - 100base-fx
+          - 100base-lfx
+          - 100base-tx
+          - 100base-t1
+          - 1000base-t
+          - 2.5gbase-t
+          - 5gbase-t
+          - 10gbase-t
+          - 10gbase-cx4
+          - 1000base-x-gbic
+          - 1000base-x-sfp
+          - 10gbase-x-sfpp
+          - 10gbase-x-xfp
+          - 10gbase-x-xenpak
+          - 10gbase-x-x2
+          - 25gbase-x-sfp28
+          - 50gbase-x-sfp56
+          - 40gbase-x-qsfpp
+          - 50gbase-x-sfp28
+          - 100gbase-x-cfp
+          - 100gbase-x-cfp2
+          - 200gbase-x-cfp2
+          - 100gbase-x-cfp4
+          - 100gbase-x-cpak
+          - 100gbase-x-qsfp28
+          - 200gbase-x-qsfp56
+          - 400gbase-x-qsfpdd
+          - 400gbase-x-osfp
+          - 800gbase-x-qsfpdd
+          - 800gbase-x-osfp
+          - 1000base-kx
+          - 10gbase-kr
+          - 10gbase-kx4
+          - 25gbase-kr
+          - 40gbase-kr4
+          - 50gbase-kr
+          - 100gbase-kp4
+          - 100gbase-kr2
+          - 100gbase-kr4
+          - ieee802.11a
+          - ieee802.11g
+          - ieee802.11n
+          - ieee802.11ac
+          - ieee802.11ad
+          - ieee802.11ax
+          - ieee802.11ay
+          - ieee802.15.1
+          - other-wireless
+          - gsm
+          - cdma
+          - lte
+          - sonet-oc3
+          - sonet-oc12
+          - sonet-oc48
+          - sonet-oc192
+          - sonet-oc768
+          - sonet-oc1920
+          - sonet-oc3840
+          - 1gfc-sfp
+          - 2gfc-sfp
+          - 4gfc-sfp
+          - 8gfc-sfpp
+          - 16gfc-sfpp
+          - 32gfc-sfp28
+          - 64gfc-qsfpp
+          - 128gfc-qsfp28
+          - infiniband-sdr
+          - infiniband-ddr
+          - infiniband-qdr
+          - infiniband-fdr10
+          - infiniband-fdr
+          - infiniband-edr
+          - infiniband-hdr
+          - infiniband-ndr
+          - infiniband-xdr
+          - t1
+          - e1
+          - t3
+          - e3
+          - xdsl
+          - docsis
+          - gpon
+          - xg-pon
+          - xgs-pon
+          - ng-pon2
+          - epon
+          - 10g-epon
+          - cisco-stackwise
+          - cisco-stackwise-plus
+          - cisco-flexstack
+          - cisco-flexstack-plus
+          - cisco-stackwise-80
+          - cisco-stackwise-160
+          - cisco-stackwise-320
+          - cisco-stackwise-480
+          - cisco-stackwise-1t
+          - juniper-vcp
+          - extreme-summitstack
+          - extreme-summitstack-128
+          - extreme-summitstack-256
+          - extreme-summitstack-512
+          - other
+          type: string
+          description: |-
+            * `virtual` - Virtual
+            * `bridge` - Bridge
+            * `lag` - Link Aggregation Group (LAG)
+            * `100base-fx` - 100BASE-FX (10/100ME FIBER)
+            * `100base-lfx` - 100BASE-LFX (10/100ME FIBER)
+            * `100base-tx` - 100BASE-TX (10/100ME)
+            * `100base-t1` - 100BASE-T1 (10/100ME Single Pair)
+            * `1000base-t` - 1000BASE-T (1GE)
+            * `2.5gbase-t` - 2.5GBASE-T (2.5GE)
+            * `5gbase-t` - 5GBASE-T (5GE)
+            * `10gbase-t` - 10GBASE-T (10GE)
+            * `10gbase-cx4` - 10GBASE-CX4 (10GE)
+            * `1000base-x-gbic` - GBIC (1GE)
+            * `1000base-x-sfp` - SFP (1GE)
+            * `10gbase-x-sfpp` - SFP+ (10GE)
+            * `10gbase-x-xfp` - XFP (10GE)
+            * `10gbase-x-xenpak` - XENPAK (10GE)
+            * `10gbase-x-x2` - X2 (10GE)
+            * `25gbase-x-sfp28` - SFP28 (25GE)
+            * `50gbase-x-sfp56` - SFP56 (50GE)
+            * `40gbase-x-qsfpp` - QSFP+ (40GE)
+            * `50gbase-x-sfp28` - QSFP28 (50GE)
+            * `100gbase-x-cfp` - CFP (100GE)
+            * `100gbase-x-cfp2` - CFP2 (100GE)
+            * `200gbase-x-cfp2` - CFP2 (200GE)
+            * `100gbase-x-cfp4` - CFP4 (100GE)
+            * `100gbase-x-cpak` - Cisco CPAK (100GE)
+            * `100gbase-x-qsfp28` - QSFP28 (100GE)
+            * `200gbase-x-qsfp56` - QSFP56 (200GE)
+            * `400gbase-x-qsfpdd` - QSFP-DD (400GE)
+            * `400gbase-x-osfp` - OSFP (400GE)
+            * `800gbase-x-qsfpdd` - QSFP-DD (800GE)
+            * `800gbase-x-osfp` - OSFP (800GE)
+            * `1000base-kx` - 1000BASE-KX (1GE)
+            * `10gbase-kr` - 10GBASE-KR (10GE)
+            * `10gbase-kx4` - 10GBASE-KX4 (10GE)
+            * `25gbase-kr` - 25GBASE-KR (25GE)
+            * `40gbase-kr4` - 40GBASE-KR4 (40GE)
+            * `50gbase-kr` - 50GBASE-KR (50GE)
+            * `100gbase-kp4` - 100GBASE-KP4 (100GE)
+            * `100gbase-kr2` - 100GBASE-KR2 (100GE)
+            * `100gbase-kr4` - 100GBASE-KR4 (100GE)
+            * `ieee802.11a` - IEEE 802.11a
+            * `ieee802.11g` - IEEE 802.11b/g
+            * `ieee802.11n` - IEEE 802.11n
+            * `ieee802.11ac` - IEEE 802.11ac
+            * `ieee802.11ad` - IEEE 802.11ad
+            * `ieee802.11ax` - IEEE 802.11ax
+            * `ieee802.11ay` - IEEE 802.11ay
+            * `ieee802.15.1` - IEEE 802.15.1 (Bluetooth)
+            * `other-wireless` - Other (Wireless)
+            * `gsm` - GSM
+            * `cdma` - CDMA
+            * `lte` - LTE
+            * `sonet-oc3` - OC-3/STM-1
+            * `sonet-oc12` - OC-12/STM-4
+            * `sonet-oc48` - OC-48/STM-16
+            * `sonet-oc192` - OC-192/STM-64
+            * `sonet-oc768` - OC-768/STM-256
+            * `sonet-oc1920` - OC-1920/STM-640
+            * `sonet-oc3840` - OC-3840/STM-1234
+            * `1gfc-sfp` - SFP (1GFC)
+            * `2gfc-sfp` - SFP (2GFC)
+            * `4gfc-sfp` - SFP (4GFC)
+            * `8gfc-sfpp` - SFP+ (8GFC)
+            * `16gfc-sfpp` - SFP+ (16GFC)
+            * `32gfc-sfp28` - SFP28 (32GFC)
+            * `64gfc-qsfpp` - QSFP+ (64GFC)
+            * `128gfc-qsfp28` - QSFP28 (128GFC)
+            * `infiniband-sdr` - SDR (2 Gbps)
+            * `infiniband-ddr` - DDR (4 Gbps)
+            * `infiniband-qdr` - QDR (8 Gbps)
+            * `infiniband-fdr10` - FDR10 (10 Gbps)
+            * `infiniband-fdr` - FDR (13.5 Gbps)
+            * `infiniband-edr` - EDR (25 Gbps)
+            * `infiniband-hdr` - HDR (50 Gbps)
+            * `infiniband-ndr` - NDR (100 Gbps)
+            * `infiniband-xdr` - XDR (250 Gbps)
+            * `t1` - T1 (1.544 Mbps)
+            * `e1` - E1 (2.048 Mbps)
+            * `t3` - T3 (45 Mbps)
+            * `e3` - E3 (34 Mbps)
+            * `xdsl` - xDSL
+            * `docsis` - DOCSIS
+            * `gpon` - GPON (2.5 Gbps / 1.25 Gps)
+            * `xg-pon` - XG-PON (10 Gbps / 2.5 Gbps)
+            * `xgs-pon` - XGS-PON (10 Gbps)
+            * `ng-pon2` - NG-PON2 (TWDM-PON) (4x10 Gbps)
+            * `epon` - EPON (1 Gbps)
+            * `10g-epon` - 10G-EPON (10 Gbps)
+            * `cisco-stackwise` - Cisco StackWise
+            * `cisco-stackwise-plus` - Cisco StackWise Plus
+            * `cisco-flexstack` - Cisco FlexStack
+            * `cisco-flexstack-plus` - Cisco FlexStack Plus
+            * `cisco-stackwise-80` - Cisco StackWise-80
+            * `cisco-stackwise-160` - Cisco StackWise-160
+            * `cisco-stackwise-320` - Cisco StackWise-320
+            * `cisco-stackwise-480` - Cisco StackWise-480
+            * `cisco-stackwise-1t` - Cisco StackWise-1T
+            * `juniper-vcp` - Juniper VCP
+            * `extreme-summitstack` - Extreme SummitStack
+            * `extreme-summitstack-128` - Extreme SummitStack-128
+            * `extreme-summitstack-256` - Extreme SummitStack-256
+            * `extreme-summitstack-512` - Extreme SummitStack-512
+            * `other` - Other
+        enabled:
+          type: boolean
+        mgmt_only:
+          type: boolean
+          title: Management only
+        description:
+          type: string
+          maxLength: 200
+        bridge:
+          allOf:
+          - $ref: '#/components/schemas/NestedInterfaceTemplateRequest'
+          nullable: true
+        poe_mode:
+          enum:
+          - pd
+          - pse
+          - ''
+          - null
+          type: string
+          description: |-
+            * `pd` - PD
+            * `pse` - PSE
+          nullable: true
+        poe_type:
+          enum:
+          - type1-ieee802.3af
+          - type2-ieee802.3at
+          - type3-ieee802.3bt
+          - type4-ieee802.3bt
+          - passive-24v-2pair
+          - passive-24v-4pair
+          - passive-48v-2pair
+          - passive-48v-4pair
+          - ''
+          - null
+          type: string
+          description: |-
+            * `type1-ieee802.3af` - 802.3af (Type 1)
+            * `type2-ieee802.3at` - 802.3at (Type 2)
+            * `type3-ieee802.3bt` - 802.3bt (Type 3)
+            * `type4-ieee802.3bt` - 802.3bt (Type 4)
+            * `passive-24v-2pair` - Passive 24V (2-pair)
+            * `passive-24v-4pair` - Passive 24V (4-pair)
+            * `passive-48v-2pair` - Passive 48V (2-pair)
+            * `passive-48v-4pair` - Passive 48V (4-pair)
+          nullable: true
+      required:
+      - name
+      - type
+    InventoryItem:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        device:
+          $ref: '#/components/schemas/NestedDevice'
+        parent:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        role:
+          allOf:
+          - $ref: '#/components/schemas/NestedInventoryItemRole'
+          nullable: true
+        manufacturer:
+          allOf:
+          - $ref: '#/components/schemas/NestedManufacturer'
+          nullable: true
+        part_id:
+          type: string
+          description: Manufacturer-assigned part identifier
+          maxLength: 50
+        serial:
+          type: string
+          title: Serial number
+          maxLength: 50
+        asset_tag:
+          type: string
+          nullable: true
+          description: A unique tag used to identify this item
+          maxLength: 50
+        discovered:
+          type: boolean
+          description: This item was automatically discovered
+        description:
+          type: string
+          maxLength: 200
+        component_type:
+          type: string
+          nullable: true
+        component_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+          nullable: true
+        component:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          readOnly: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        _depth:
+          type: integer
+          readOnly: true
+          title: ' depth'
+      required:
+      - _depth
+      - component
+      - created
+      - device
+      - display
+      - id
+      - last_updated
+      - name
+      - url
+    InventoryItemRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          $ref: '#/components/schemas/NestedDeviceRequest'
+        parent:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        role:
+          allOf:
+          - $ref: '#/components/schemas/NestedInventoryItemRoleRequest'
+          nullable: true
+        manufacturer:
+          allOf:
+          - $ref: '#/components/schemas/NestedManufacturerRequest'
+          nullable: true
+        part_id:
+          type: string
+          description: Manufacturer-assigned part identifier
+          maxLength: 50
+        serial:
+          type: string
+          title: Serial number
+          maxLength: 50
+        asset_tag:
+          type: string
+          nullable: true
+          description: A unique tag used to identify this item
+          maxLength: 50
+        discovered:
+          type: boolean
+          description: This item was automatically discovered
+        description:
+          type: string
+          maxLength: 200
+        component_type:
+          type: string
+          nullable: true
+        component_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+          nullable: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - device
+      - name
+    InventoryItemRole:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        color:
+          type: string
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        inventoryitem_count:
+          type: integer
+          readOnly: true
+      required:
+      - created
+      - display
+      - id
+      - inventoryitem_count
+      - last_updated
+      - name
+      - slug
+      - url
+    InventoryItemRoleRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        color:
+          type: string
+          minLength: 1
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    InventoryItemTemplate:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        device_type:
+          $ref: '#/components/schemas/NestedDeviceType'
+        parent:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        role:
+          allOf:
+          - $ref: '#/components/schemas/NestedInventoryItemRole'
+          nullable: true
+        manufacturer:
+          allOf:
+          - $ref: '#/components/schemas/NestedManufacturer'
+          nullable: true
+        part_id:
+          type: string
+          description: Manufacturer-assigned part identifier
+          maxLength: 50
+        description:
+          type: string
+          maxLength: 200
+        component_type:
+          type: string
+          nullable: true
+        component_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+          nullable: true
+        component:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          readOnly: true
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        _depth:
+          type: integer
+          readOnly: true
+          title: ' depth'
+      required:
+      - _depth
+      - component
+      - created
+      - device_type
+      - display
+      - id
+      - last_updated
+      - name
+      - url
+    InventoryItemTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          $ref: '#/components/schemas/NestedDeviceTypeRequest'
+        parent:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        role:
+          allOf:
+          - $ref: '#/components/schemas/NestedInventoryItemRoleRequest'
+          nullable: true
+        manufacturer:
+          allOf:
+          - $ref: '#/components/schemas/NestedManufacturerRequest'
+          nullable: true
+        part_id:
+          type: string
+          description: Manufacturer-assigned part identifier
+          maxLength: 50
+        description:
+          type: string
+          maxLength: 200
+        component_type:
+          type: string
+          nullable: true
+        component_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+          nullable: true
+      required:
+      - device_type
+      - name
+    Job:
+      type: object
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        object_type:
+          type: string
+          readOnly: true
+        object_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+          nullable: true
+        name:
+          type: string
+          maxLength: 200
+        status:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          readOnly: true
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+        scheduled:
+          type: string
+          format: date-time
+          nullable: true
+        interval:
+          type: integer
+          maximum: 2147483647
+          minimum: 1
+          nullable: true
+          description: Recurrence interval (in minutes)
+        started:
+          type: string
+          format: date-time
+          nullable: true
+        completed:
+          type: string
+          format: date-time
+          nullable: true
+        user:
+          allOf:
+          - $ref: '#/components/schemas/NestedUser'
+          readOnly: true
+        data:
+          type: object
+          additionalProperties: {}
+          nullable: true
+        job_id:
+          type: string
+          format: uuid
+      required:
+      - created
+      - display
+      - id
+      - job_id
+      - name
+      - object_type
+      - status
+      - url
+      - user
+    JournalEntry:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        assigned_object_type:
+          type: string
+        assigned_object_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+        assigned_object:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          readOnly: true
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        created_by:
+          type: integer
+          nullable: true
+        kind:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - assigned_object
+      - assigned_object_id
+      - assigned_object_type
+      - comments
+      - created
+      - display
+      - id
+      - last_updated
+      - url
+    JournalEntryRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        assigned_object_type:
+          type: string
+        assigned_object_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+        created_by:
+          type: integer
+          nullable: true
+        kind:
+          enum:
+          - info
+          - success
+          - warning
+          - danger
+          type: string
+          description: |-
+            * `info` - Info
+            * `success` - Success
+            * `warning` - Warning
+            * `danger` - Danger
+        comments:
+          type: string
+          minLength: 1
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - assigned_object_id
+      - assigned_object_type
+      - comments
+    L2VPN:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        identifier:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: -9223372036854775808
+          format: int64
+          nullable: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        type:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        import_targets:
+          type: array
+          items:
+            type: integer
+        export_targets:
+          type: array
+          items:
+            type: integer
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenant'
+          nullable: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - slug
+      - url
+    L2VPNRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        identifier:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: -9223372036854775808
+          format: int64
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        type:
+          enum:
+          - vpws
+          - vpls
+          - vxlan
+          - vxlan-evpn
+          - mpls-evpn
+          - pbb-evpn
+          - epl
+          - evpl
+          - ep-lan
+          - evp-lan
+          - ep-tree
+          - evp-tree
+          type: string
+          description: |-
+            * `vpws` - VPWS
+            * `vpls` - VPLS
+            * `vxlan` - VXLAN
+            * `vxlan-evpn` - VXLAN-EVPN
+            * `mpls-evpn` - MPLS EVPN
+            * `pbb-evpn` - PBB EVPN
+            * `epl` - EPL
+            * `evpl` - EVPL
+            * `ep-lan` - Ethernet Private LAN
+            * `evp-lan` - Ethernet Virtual Private LAN
+            * `ep-tree` - Ethernet Private Tree
+            * `evp-tree` - Ethernet Virtual Private Tree
+        import_targets:
+          type: array
+          items:
+            type: integer
+        export_targets:
+          type: array
+          items:
+            type: integer
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenantRequest'
+          nullable: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    L2VPNTermination:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        l2vpn:
+          $ref: '#/components/schemas/NestedL2VPN'
+        assigned_object_type:
+          type: string
+        assigned_object_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+        assigned_object:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          readOnly: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - assigned_object
+      - assigned_object_id
+      - assigned_object_type
+      - created
+      - display
+      - id
+      - l2vpn
+      - last_updated
+      - url
+    L2VPNTerminationRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        l2vpn:
+          $ref: '#/components/schemas/NestedL2VPNRequest'
+        assigned_object_type:
+          type: string
+        assigned_object_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - assigned_object_id
+      - assigned_object_type
+      - l2vpn
+    Location:
+      type: object
+      description: Extends PrimaryModelSerializer to include MPTT support.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        site:
+          $ref: '#/components/schemas/NestedSite'
+        parent:
+          allOf:
+          - $ref: '#/components/schemas/NestedLocation'
+          nullable: true
+        status:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenant'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        rack_count:
+          type: integer
+          readOnly: true
+        device_count:
+          type: integer
+          readOnly: true
+        _depth:
+          type: integer
+          readOnly: true
+          title: ' depth'
+      required:
+      - _depth
+      - created
+      - device_count
+      - display
+      - id
+      - last_updated
+      - name
+      - rack_count
+      - site
+      - slug
+      - url
+    LocationRequest:
+      type: object
+      description: Extends PrimaryModelSerializer to include MPTT support.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        site:
+          $ref: '#/components/schemas/NestedSiteRequest'
+        parent:
+          allOf:
+          - $ref: '#/components/schemas/NestedLocationRequest'
+          nullable: true
+        status:
+          enum:
+          - planned
+          - staging
+          - active
+          - decommissioning
+          - retired
+          type: string
+          description: |-
+            * `planned` - Planned
+            * `staging` - Staging
+            * `active` - Active
+            * `decommissioning` - Decommissioning
+            * `retired` - Retired
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenantRequest'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - site
+      - slug
+    Manufacturer:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        devicetype_count:
+          type: integer
+          readOnly: true
+        inventoryitem_count:
+          type: integer
+          readOnly: true
+        platform_count:
+          type: integer
+          readOnly: true
+      required:
+      - created
+      - devicetype_count
+      - display
+      - id
+      - inventoryitem_count
+      - last_updated
+      - name
+      - platform_count
+      - slug
+      - url
+    ManufacturerRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    Mapping:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        source:
+          type: string
+          title: Name
+          format: uri
+          maxLength: 120
+        target:
+          type: string
+          title: Identifier
+          format: uri
+          maxLength: 120
+        authentication:
+          enum:
+          - none
+          - ldap
+          - ecas
+          type: string
+          description: |-
+            * `none` - None
+            * `ldap` - Ldap
+            * `ecas` - Ecas
+          title: Auth
+        testingpage:
+          type: string
+          format: uri
+          maxLength: 120
+        webdav:
+          type: boolean
+        Comment:
+          type: string
+          maxLength: 500
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - display
+      - id
+      - last_updated
+      - source
+      - target
+      - testingpage
+      - url
+    MappingRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        source:
+          type: string
+          minLength: 1
+          title: Name
+          format: uri
+          maxLength: 120
+        target:
+          type: string
+          minLength: 1
+          title: Identifier
+          format: uri
+          maxLength: 120
+        authentication:
+          enum:
+          - none
+          - ldap
+          - ecas
+          type: string
+          description: |-
+            * `none` - None
+            * `ldap` - Ldap
+            * `ecas` - Ecas
+          title: Auth
+        testingpage:
+          type: string
+          minLength: 1
+          format: uri
+          maxLength: 120
+        webdav:
+          type: boolean
+        Comment:
+          type: string
+          maxLength: 500
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - source
+      - target
+      - testingpage
+    Module:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        device:
+          $ref: '#/components/schemas/NestedDevice'
+        module_bay:
+          $ref: '#/components/schemas/NestedModuleBay'
+        module_type:
+          $ref: '#/components/schemas/NestedModuleType'
+        status:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        serial:
+          type: string
+          title: Serial number
+          maxLength: 50
+        asset_tag:
+          type: string
+          nullable: true
+          description: A unique tag used to identify this device
+          maxLength: 50
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - device
+      - display
+      - id
+      - last_updated
+      - module_bay
+      - module_type
+      - url
+    ModuleBay:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        device:
+          $ref: '#/components/schemas/NestedDevice'
+        name:
+          type: string
+          maxLength: 64
+        installed_module:
+          allOf:
+          - $ref: '#/components/schemas/ModuleBayNestedModule'
+          nullable: true
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        position:
+          type: string
+          description: Identifier to reference when renaming installed components
+          maxLength: 30
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - device
+      - display
+      - id
+      - last_updated
+      - name
+      - url
+    ModuleBayNestedModule:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        serial:
+          type: string
+          title: Serial number
+          maxLength: 50
+      required:
+      - display
+      - id
+      - url
+    ModuleBayNestedModuleRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        serial:
+          type: string
+          title: Serial number
+          maxLength: 50
+    ModuleBayRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          $ref: '#/components/schemas/NestedDeviceRequest'
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        installed_module:
+          allOf:
+          - $ref: '#/components/schemas/ModuleBayNestedModuleRequest'
+          nullable: true
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        position:
+          type: string
+          description: Identifier to reference when renaming installed components
+          maxLength: 30
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - device
+      - name
+    ModuleBayTemplate:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        device_type:
+          $ref: '#/components/schemas/NestedDeviceType'
+        name:
+          type: string
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        position:
+          type: string
+          description: Identifier to reference when renaming installed components
+          maxLength: 30
+        description:
+          type: string
+          maxLength: 200
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - device_type
+      - display
+      - id
+      - last_updated
+      - name
+      - url
+    ModuleBayTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          $ref: '#/components/schemas/NestedDeviceTypeRequest'
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        position:
+          type: string
+          description: Identifier to reference when renaming installed components
+          maxLength: 30
+        description:
+          type: string
+          maxLength: 200
+      required:
+      - device_type
+      - name
+    ModuleNestedModuleBay:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 64
+      required:
+      - display
+      - id
+      - name
+      - url
+    ModuleNestedModuleBayRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+      required:
+      - name
+    ModuleRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          $ref: '#/components/schemas/NestedDeviceRequest'
+        module_bay:
+          $ref: '#/components/schemas/NestedModuleBayRequest'
+        module_type:
+          $ref: '#/components/schemas/NestedModuleTypeRequest'
+        status:
+          enum:
+          - offline
+          - active
+          - planned
+          - staged
+          - failed
+          - decommissioning
+          type: string
+          description: |-
+            * `offline` - Offline
+            * `active` - Active
+            * `planned` - Planned
+            * `staged` - Staged
+            * `failed` - Failed
+            * `decommissioning` - Decommissioning
+        serial:
+          type: string
+          title: Serial number
+          maxLength: 50
+        asset_tag:
+          type: string
+          nullable: true
+          description: A unique tag used to identify this device
+          maxLength: 50
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - device
+      - module_bay
+      - module_type
+    ModuleType:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        manufacturer:
+          $ref: '#/components/schemas/NestedManufacturer'
+        model:
+          type: string
+          maxLength: 100
+        part_number:
+          type: string
+          description: Discrete part number (optional)
+          maxLength: 50
+        weight:
+          type: number
+          format: double
+          maximum: 1000000
+          minimum: -1000000
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+        weight_unit:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - display
+      - id
+      - last_updated
+      - manufacturer
+      - model
+      - url
+    ModuleTypeRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        manufacturer:
+          $ref: '#/components/schemas/NestedManufacturerRequest'
+        model:
+          type: string
+          minLength: 1
+          maxLength: 100
+        part_number:
+          type: string
+          description: Discrete part number (optional)
+          maxLength: 50
+        weight:
+          type: number
+          format: double
+          maximum: 1000000
+          minimum: -1000000
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+        weight_unit:
+          enum:
+          - kg
+          - g
+          - lb
+          - oz
+          - ''
+          - null
+          type: string
+          description: |-
+            * `kg` - Kilograms
+            * `g` - Grams
+            * `lb` - Pounds
+            * `oz` - Ounces
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - manufacturer
+      - model
+    NestedCable:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        label:
+          type: string
+          maxLength: 100
+      required:
+      - display
+      - id
+      - url
+    NestedCableRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        label:
+          type: string
+          maxLength: 100
+    NestedCircuit:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        cid:
+          type: string
+          title: Circuit ID
+          description: Unique circuit ID
+          maxLength: 100
+      required:
+      - cid
+      - display
+      - id
+      - url
+    NestedCircuitRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        cid:
+          type: string
+          minLength: 1
+          title: Circuit ID
+          description: Unique circuit ID
+          maxLength: 100
+      required:
+      - cid
+    NestedCircuitType:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - display
+      - id
+      - name
+      - slug
+      - url
+    NestedCircuitTypeRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - name
+      - slug
+    NestedCluster:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+      required:
+      - display
+      - id
+      - name
+      - url
+    NestedClusterGroup:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - display
+      - id
+      - name
+      - slug
+      - url
+    NestedClusterGroupRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - name
+      - slug
+    NestedClusterRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+      required:
+      - name
+    NestedClusterType:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - display
+      - id
+      - name
+      - slug
+      - url
+    NestedClusterTypeRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - name
+      - slug
+    NestedConfigTemplate:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+      required:
+      - display
+      - id
+      - name
+      - url
+    NestedConfigTemplateRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+      required:
+      - name
+    NestedContact:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+      required:
+      - display
+      - id
+      - name
+      - url
+    NestedContactGroup:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        _depth:
+          type: integer
+          readOnly: true
+          title: ' depth'
+      required:
+      - _depth
+      - display
+      - id
+      - name
+      - slug
+      - url
+    NestedContactGroupRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - name
+      - slug
+    NestedContactRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+      required:
+      - name
+    NestedContactRole:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - display
+      - id
+      - name
+      - slug
+      - url
+    NestedContactRoleRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - name
+      - slug
+    NestedDataFile:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        path:
+          type: string
+          readOnly: true
+          description: File path relative to the data source's root
+      required:
+      - display
+      - id
+      - path
+      - url
+    NestedDataSource:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+      required:
+      - display
+      - id
+      - name
+      - url
+    NestedDataSourceRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+      required:
+      - name
+    NestedDevice:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          nullable: true
+          maxLength: 64
+      required:
+      - display
+      - id
+      - url
+    NestedDeviceRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          nullable: true
+          maxLength: 64
+    NestedDeviceRole:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - display
+      - id
+      - name
+      - slug
+      - url
+    NestedDeviceRoleRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - name
+      - slug
+    NestedDeviceType:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        manufacturer:
+          allOf:
+          - $ref: '#/components/schemas/NestedManufacturer'
+          readOnly: true
+        model:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - display
+      - id
+      - manufacturer
+      - model
+      - slug
+      - url
+    NestedDeviceTypeRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        model:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - model
+      - slug
+    NestedFHRPGroup:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        protocol:
+          enum:
+          - vrrp2
+          - vrrp3
+          - carp
+          - clusterxl
+          - hsrp
+          - glbp
+          - other
+          type: string
+          description: |-
+            * `vrrp2` - VRRPv2
+            * `vrrp3` - VRRPv3
+            * `carp` - CARP
+            * `clusterxl` - ClusterXL
+            * `hsrp` - HSRP
+            * `glbp` - GLBP
+            * `other` - Other
+        group_id:
+          type: integer
+          maximum: 32767
+          minimum: 0
+      required:
+      - display
+      - group_id
+      - id
+      - protocol
+      - url
+    NestedFHRPGroupRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        protocol:
+          enum:
+          - vrrp2
+          - vrrp3
+          - carp
+          - clusterxl
+          - hsrp
+          - glbp
+          - other
+          type: string
+          description: |-
+            * `vrrp2` - VRRPv2
+            * `vrrp3` - VRRPv3
+            * `carp` - CARP
+            * `clusterxl` - ClusterXL
+            * `hsrp` - HSRP
+            * `glbp` - GLBP
+            * `other` - Other
+        group_id:
+          type: integer
+          maximum: 32767
+          minimum: 0
+      required:
+      - group_id
+      - protocol
+    NestedIPAddress:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        family:
+          type: integer
+          readOnly: true
+        address:
+          type: string
+      required:
+      - address
+      - display
+      - family
+      - id
+      - url
+    NestedIPAddressRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        address:
+          type: string
+          minLength: 1
+      required:
+      - address
+    NestedInterface:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        device:
+          allOf:
+          - $ref: '#/components/schemas/NestedDevice'
+          readOnly: true
+        name:
+          type: string
+          maxLength: 64
+        cable:
+          type: integer
+          nullable: true
+        _occupied:
+          type: boolean
+          readOnly: true
+          title: ' occupied'
+      required:
+      - _occupied
+      - device
+      - display
+      - id
+      - name
+      - url
+    NestedInterfaceRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        cable:
+          type: integer
+          nullable: true
+      required:
+      - name
+    NestedInterfaceTemplate:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+      required:
+      - display
+      - id
+      - name
+      - url
+    NestedInterfaceTemplateRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+      required:
+      - name
+    NestedInventoryItemRole:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - display
+      - id
+      - name
+      - slug
+      - url
+    NestedInventoryItemRoleRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - name
+      - slug
+    NestedL2VPN:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        identifier:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: -9223372036854775808
+          format: int64
+          nullable: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        type:
+          enum:
+          - vpws
+          - vpls
+          - vxlan
+          - vxlan-evpn
+          - mpls-evpn
+          - pbb-evpn
+          - epl
+          - evpl
+          - ep-lan
+          - evp-lan
+          - ep-tree
+          - evp-tree
+          type: string
+          description: |-
+            * `vpws` - VPWS
+            * `vpls` - VPLS
+            * `vxlan` - VXLAN
+            * `vxlan-evpn` - VXLAN-EVPN
+            * `mpls-evpn` - MPLS EVPN
+            * `pbb-evpn` - PBB EVPN
+            * `epl` - EPL
+            * `evpl` - EVPL
+            * `ep-lan` - Ethernet Private LAN
+            * `evp-lan` - Ethernet Virtual Private LAN
+            * `ep-tree` - Ethernet Private Tree
+            * `evp-tree` - Ethernet Virtual Private Tree
+      required:
+      - display
+      - id
+      - name
+      - slug
+      - type
+      - url
+    NestedL2VPNRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        identifier:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: -9223372036854775808
+          format: int64
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        type:
+          enum:
+          - vpws
+          - vpls
+          - vxlan
+          - vxlan-evpn
+          - mpls-evpn
+          - pbb-evpn
+          - epl
+          - evpl
+          - ep-lan
+          - evp-lan
+          - ep-tree
+          - evp-tree
+          type: string
+          description: |-
+            * `vpws` - VPWS
+            * `vpls` - VPLS
+            * `vxlan` - VXLAN
+            * `vxlan-evpn` - VXLAN-EVPN
+            * `mpls-evpn` - MPLS EVPN
+            * `pbb-evpn` - PBB EVPN
+            * `epl` - EPL
+            * `evpl` - EVPL
+            * `ep-lan` - Ethernet Private LAN
+            * `evp-lan` - Ethernet Virtual Private LAN
+            * `ep-tree` - Ethernet Private Tree
+            * `evp-tree` - Ethernet Virtual Private Tree
+      required:
+      - name
+      - slug
+      - type
+    NestedL2VPNTermination:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        l2vpn:
+          $ref: '#/components/schemas/NestedL2VPN'
+      required:
+      - display
+      - id
+      - l2vpn
+      - url
+    NestedL2VPNTerminationRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        l2vpn:
+          $ref: '#/components/schemas/NestedL2VPNRequest'
+      required:
+      - l2vpn
+    NestedLocation:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        _depth:
+          type: integer
+          readOnly: true
+          title: ' depth'
+      required:
+      - _depth
+      - display
+      - id
+      - name
+      - slug
+      - url
+    NestedLocationRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - name
+      - slug
+    NestedManufacturer:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - display
+      - id
+      - name
+      - slug
+      - url
+    NestedManufacturerRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - name
+      - slug
+    NestedModule:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        device:
+          allOf:
+          - $ref: '#/components/schemas/NestedDevice'
+          readOnly: true
+        module_bay:
+          allOf:
+          - $ref: '#/components/schemas/ModuleNestedModuleBay'
+          readOnly: true
+        module_type:
+          allOf:
+          - $ref: '#/components/schemas/NestedModuleType'
+          readOnly: true
+      required:
+      - device
+      - display
+      - id
+      - module_bay
+      - module_type
+      - url
+    NestedModuleBay:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        module:
+          allOf:
+          - $ref: '#/components/schemas/NestedModule'
+          readOnly: true
+          nullable: true
+        name:
+          type: string
+          maxLength: 64
+      required:
+      - display
+      - id
+      - module
+      - name
+      - url
+    NestedModuleBayRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+      required:
+      - name
+    NestedModuleType:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        manufacturer:
+          allOf:
+          - $ref: '#/components/schemas/NestedManufacturer'
+          readOnly: true
+        model:
+          type: string
+          maxLength: 100
+      required:
+      - display
+      - id
+      - manufacturer
+      - model
+      - url
+    NestedModuleTypeRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        model:
+          type: string
+          minLength: 1
+          maxLength: 100
+      required:
+      - model
+    NestedPlatform:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - display
+      - id
+      - name
+      - slug
+      - url
+    NestedPlatformRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - name
+      - slug
+    NestedPowerPanel:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+      required:
+      - display
+      - id
+      - name
+      - url
+    NestedPowerPanelRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+      required:
+      - name
+    NestedPowerPort:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        device:
+          allOf:
+          - $ref: '#/components/schemas/NestedDevice'
+          readOnly: true
+        name:
+          type: string
+          maxLength: 64
+        cable:
+          type: integer
+          nullable: true
+        _occupied:
+          type: boolean
+          readOnly: true
+          title: ' occupied'
+      required:
+      - _occupied
+      - device
+      - display
+      - id
+      - name
+      - url
+    NestedPowerPortRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        cable:
+          type: integer
+          nullable: true
+      required:
+      - name
+    NestedPowerPortTemplate:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+      required:
+      - display
+      - id
+      - name
+      - url
+    NestedPowerPortTemplateRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+      required:
+      - name
+    NestedProvider:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          description: Full name of the provider
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - display
+      - id
+      - name
+      - slug
+      - url
+    NestedProviderAccount:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        account:
+          type: string
+          title: Account ID
+          maxLength: 100
+      required:
+      - account
+      - display
+      - id
+      - url
+    NestedProviderAccountRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          maxLength: 100
+        account:
+          type: string
+          minLength: 1
+          title: Account ID
+          maxLength: 100
+      required:
+      - account
+    NestedProviderNetwork:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+      required:
+      - display
+      - id
+      - name
+      - url
+    NestedProviderNetworkRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+      required:
+      - name
+    NestedProviderRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          description: Full name of the provider
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - name
+      - slug
+    NestedRIR:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - display
+      - id
+      - name
+      - slug
+      - url
+    NestedRIRRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - name
+      - slug
+    NestedRack:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+      required:
+      - display
+      - id
+      - name
+      - url
+    NestedRackRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+      required:
+      - name
+    NestedRackRole:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - display
+      - id
+      - name
+      - slug
+      - url
+    NestedRackRoleRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - name
+      - slug
+    NestedRearPortTemplate:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+      required:
+      - display
+      - id
+      - name
+      - url
+    NestedRearPortTemplateRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+      required:
+      - name
+    NestedRegion:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        _depth:
+          type: integer
+          readOnly: true
+          title: ' depth'
+      required:
+      - _depth
+      - display
+      - id
+      - name
+      - slug
+      - url
+    NestedRegionRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - name
+      - slug
+    NestedRole:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - display
+      - id
+      - name
+      - slug
+      - url
+    NestedRoleRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - name
+      - slug
+    NestedSite:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          description: Full name of the site
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - display
+      - id
+      - name
+      - slug
+      - url
+    NestedSiteGroup:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        _depth:
+          type: integer
+          readOnly: true
+          title: ' depth'
+      required:
+      - _depth
+      - display
+      - id
+      - name
+      - slug
+      - url
+    NestedSiteGroupRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - name
+      - slug
+    NestedSiteRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          description: Full name of the site
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - name
+      - slug
+    NestedTag:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          pattern: ^[-\w]+$
+          maxLength: 100
+        color:
+          type: string
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+      required:
+      - display
+      - id
+      - name
+      - slug
+      - url
+    NestedTagRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          pattern: ^[-\w]+$
+          maxLength: 100
+        color:
+          type: string
+          minLength: 1
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+      required:
+      - name
+      - slug
+    NestedTenant:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - display
+      - id
+      - name
+      - slug
+      - url
+    NestedTenantGroup:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        _depth:
+          type: integer
+          readOnly: true
+          title: ' depth'
+      required:
+      - _depth
+      - display
+      - id
+      - name
+      - slug
+      - url
+    NestedTenantGroupRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - name
+      - slug
+    NestedTenantRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - name
+      - slug
+    NestedUser:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        username:
+          type: string
+          description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_
+            only.
+          pattern: ^[\w.@+-]+$
+          maxLength: 150
+      required:
+      - display
+      - id
+      - url
+      - username
+    NestedUserRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        username:
+          type: string
+          minLength: 1
+          description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_
+            only.
+          pattern: ^[\w.@+-]+$
+          maxLength: 150
+      required:
+      - username
+    NestedVLAN:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        vid:
+          type: integer
+          maximum: 4094
+          minimum: 1
+          title: ID
+          description: Numeric VLAN ID (1-4094)
+        name:
+          type: string
+          maxLength: 64
+      required:
+      - display
+      - id
+      - name
+      - url
+      - vid
+    NestedVLANGroup:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - display
+      - id
+      - name
+      - slug
+      - url
+    NestedVLANGroupRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - name
+      - slug
+    NestedVLANRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        vid:
+          type: integer
+          maximum: 4094
+          minimum: 1
+          title: ID
+          description: Numeric VLAN ID (1-4094)
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+      required:
+      - name
+      - vid
+    NestedVMInterface:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        virtual_machine:
+          allOf:
+          - $ref: '#/components/schemas/NestedVirtualMachine'
+          readOnly: true
+        name:
+          type: string
+          maxLength: 64
+      required:
+      - display
+      - id
+      - name
+      - url
+      - virtual_machine
+    NestedVMInterfaceRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+      required:
+      - name
+    NestedVRF:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        rd:
+          type: string
+          nullable: true
+          title: Route distinguisher
+          description: Unique route distinguisher (as defined in RFC 4364)
+          maxLength: 21
+      required:
+      - display
+      - id
+      - name
+      - url
+    NestedVRFRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        rd:
+          type: string
+          nullable: true
+          title: Route distinguisher
+          description: Unique route distinguisher (as defined in RFC 4364)
+          maxLength: 21
+      required:
+      - name
+    NestedVirtualChassis:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 64
+        master:
+          $ref: '#/components/schemas/NestedDevice'
+      required:
+      - display
+      - id
+      - master
+      - name
+      - url
+    NestedVirtualChassisRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        master:
+          $ref: '#/components/schemas/NestedDeviceRequest'
+      required:
+      - master
+      - name
+    NestedVirtualMachine:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 64
+      required:
+      - display
+      - id
+      - name
+      - url
+    NestedVirtualMachineRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+      required:
+      - name
+    NestedWirelessLANGroup:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        _depth:
+          type: integer
+          readOnly: true
+          title: ' depth'
+      required:
+      - _depth
+      - display
+      - id
+      - name
+      - slug
+      - url
+    NestedWirelessLANGroupRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+      required:
+      - name
+      - slug
+    NestedWirelessLink:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        ssid:
+          type: string
+          maxLength: 32
+      required:
+      - display
+      - id
+      - url
+    NestedWirelessLinkRequest:
+      type: object
+      description: |-
+        Represents an object related through a ForeignKey field. On write, it accepts a primary key (PK) value or a
+        dictionary of attributes which can be used to uniquely identify the related object. This class should be
+        subclassed to return a full representation of the related object on read.
+      properties:
+        ssid:
+          type: string
+          maxLength: 32
+    ObjectChange:
+      type: object
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        time:
+          type: string
+          format: date-time
+          readOnly: true
+        user:
+          allOf:
+          - $ref: '#/components/schemas/NestedUser'
+          readOnly: true
+        user_name:
+          type: string
+          readOnly: true
+        request_id:
+          type: string
+          format: uuid
+          readOnly: true
+        action:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          readOnly: true
+        changed_object_type:
+          type: string
+          readOnly: true
+        changed_object_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+        changed_object:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          readOnly: true
+        prechange_data:
+          type: object
+          additionalProperties: {}
+          readOnly: true
+          nullable: true
+        postchange_data:
+          type: object
+          additionalProperties: {}
+          readOnly: true
+          nullable: true
+      required:
+      - action
+      - changed_object
+      - changed_object_id
+      - changed_object_type
+      - display
+      - id
+      - postchange_data
+      - prechange_data
+      - request_id
+      - time
+      - url
+      - user
+      - user_name
+    ObjectPermission:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        description:
+          type: string
+          maxLength: 200
+        enabled:
+          type: boolean
+        object_types:
+          type: array
+          items:
+            type: string
+        groups:
+          type: array
+          items:
+            type: integer
+        users:
+          type: array
+          items:
+            type: integer
+        actions:
+          type: array
+          items:
+            type: string
+            maxLength: 30
+          description: The list of actions granted by this permission
+        constraints:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          description: Queryset filter matching the applicable objects of the selected
+            type(s)
+      required:
+      - actions
+      - display
+      - id
+      - name
+      - object_types
+      - url
+    ObjectPermissionRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        description:
+          type: string
+          maxLength: 200
+        enabled:
+          type: boolean
+        object_types:
+          type: array
+          items:
+            type: string
+        groups:
+          type: array
+          items:
+            type: integer
+        users:
+          type: array
+          items:
+            type: integer
+        actions:
+          type: array
+          items:
+            type: string
+            minLength: 1
+            maxLength: 30
+          description: The list of actions granted by this permission
+        constraints:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          description: Queryset filter matching the applicable objects of the selected
+            type(s)
+      required:
+      - actions
+      - name
+      - object_types
+    PaginatedASNList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/ASN'
+    PaginatedASNRangeList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/ASNRange'
+    PaginatedAggregateList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/Aggregate'
+    PaginatedCableList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/Cable'
+    PaginatedCableTerminationList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/CableTermination'
+    PaginatedCircuitList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/Circuit'
+    PaginatedCircuitTerminationList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/CircuitTermination'
+    PaginatedCircuitTypeList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/CircuitType'
+    PaginatedClusterGroupList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/ClusterGroup'
+    PaginatedClusterList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/Cluster'
+    PaginatedClusterTypeList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/ClusterType'
+    PaginatedConfigContextList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/ConfigContext'
+    PaginatedConfigTemplateList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/ConfigTemplate'
+    PaginatedConsolePortList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/ConsolePort'
+    PaginatedConsolePortTemplateList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/ConsolePortTemplate'
+    PaginatedConsoleServerPortList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/ConsoleServerPort'
+    PaginatedConsoleServerPortTemplateList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/ConsoleServerPortTemplate'
+    PaginatedContactAssignmentList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/ContactAssignment'
+    PaginatedContactGroupList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/ContactGroup'
+    PaginatedContactList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/Contact'
+    PaginatedContactRoleList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/ContactRole'
+    PaginatedContentTypeList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/ContentType'
+    PaginatedCustomFieldList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/CustomField'
+    PaginatedCustomLinkList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/CustomLink'
+    PaginatedDataFileList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/DataFile'
+    PaginatedDataSourceList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/DataSource'
+    PaginatedDeviceBayList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/DeviceBay'
+    PaginatedDeviceBayTemplateList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/DeviceBayTemplate'
+    PaginatedDeviceRoleList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/DeviceRole'
+    PaginatedDeviceTypeList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/DeviceType'
+    PaginatedDeviceWithConfigContextList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/DeviceWithConfigContext'
+    PaginatedExportTemplateList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/ExportTemplate'
+    PaginatedFHRPGroupAssignmentList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/FHRPGroupAssignment'
+    PaginatedFHRPGroupList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/FHRPGroup'
+    PaginatedFrontPortList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/FrontPort'
+    PaginatedFrontPortTemplateList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/FrontPortTemplate'
+    PaginatedGroupList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/Group'
+    PaginatedIPAddressList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/IPAddress'
+    PaginatedIPRangeList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/IPRange'
+    PaginatedImageAttachmentList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/ImageAttachment'
+    PaginatedInterfaceList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/Interface'
+    PaginatedInterfaceTemplateList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/InterfaceTemplate'
+    PaginatedInventoryItemList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/InventoryItem'
+    PaginatedInventoryItemRoleList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/InventoryItemRole'
+    PaginatedInventoryItemTemplateList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/InventoryItemTemplate'
+    PaginatedJobList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/Job'
+    PaginatedJournalEntryList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/JournalEntry'
+    PaginatedL2VPNList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/L2VPN'
+    PaginatedL2VPNTerminationList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/L2VPNTermination'
+    PaginatedLocationList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/Location'
+    PaginatedManufacturerList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/Manufacturer'
+    PaginatedMappingList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/Mapping'
+    PaginatedModuleBayList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/ModuleBay'
+    PaginatedModuleBayTemplateList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/ModuleBayTemplate'
+    PaginatedModuleList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/Module'
+    PaginatedModuleTypeList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/ModuleType'
+    PaginatedObjectChangeList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/ObjectChange'
+    PaginatedObjectPermissionList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/ObjectPermission'
+    PaginatedPlatformList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/Platform'
+    PaginatedPowerFeedList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/PowerFeed'
+    PaginatedPowerOutletList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/PowerOutlet'
+    PaginatedPowerOutletTemplateList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/PowerOutletTemplate'
+    PaginatedPowerPanelList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/PowerPanel'
+    PaginatedPowerPortList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/PowerPort'
+    PaginatedPowerPortTemplateList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/PowerPortTemplate'
+    PaginatedPrefixList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/Prefix'
+    PaginatedProviderAccountList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/ProviderAccount'
+    PaginatedProviderList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/Provider'
+    PaginatedProviderNetworkList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/ProviderNetwork'
+    PaginatedRIRList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/RIR'
+    PaginatedRackList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/Rack'
+    PaginatedRackReservationList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/RackReservation'
+    PaginatedRackRoleList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/RackRole'
+    PaginatedRearPortList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/RearPort'
+    PaginatedRearPortTemplateList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/RearPortTemplate'
+    PaginatedRegionList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/Region'
+    PaginatedRoleList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/Role'
+    PaginatedRouteTargetList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/RouteTarget'
+    PaginatedSavedFilterList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/SavedFilter'
+    PaginatedServiceList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/Service'
+    PaginatedServiceTemplateList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/ServiceTemplate'
+    PaginatedSiteGroupList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/SiteGroup'
+    PaginatedSiteList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/Site'
+    PaginatedTagList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/Tag'
+    PaginatedTenantGroupList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/TenantGroup'
+    PaginatedTenantList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/Tenant'
+    PaginatedTokenList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/Token'
+    PaginatedUserList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/User'
+    PaginatedVLANGroupList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/VLANGroup'
+    PaginatedVLANList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/VLAN'
+    PaginatedVMInterfaceList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/VMInterface'
+    PaginatedVRFList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/VRF'
+    PaginatedVirtualChassisList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/VirtualChassis'
+    PaginatedVirtualDeviceContextList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/VirtualDeviceContext'
+    PaginatedVirtualMachineWithConfigContextList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/VirtualMachineWithConfigContext'
+    PaginatedWebhookList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/Webhook'
+    PaginatedWirelessLANGroupList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/WirelessLANGroup'
+    PaginatedWirelessLANList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/WirelessLAN'
+    PaginatedWirelessLinkList:
+      type: object
+      properties:
+        count:
+          type: integer
+          example: 123
+        next:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=400&limit=100
+        previous:
+          type: string
+          nullable: true
+          format: uri
+          example: http://api.example.org/accounts/?offset=200&limit=100
+        results:
+          type: array
+          items:
+            $ref: '#/components/schemas/WirelessLink'
+    PatchedCableTerminationRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        cable:
+          type: integer
+        cable_end:
+          enum:
+          - A
+          - B
+          type: string
+          description: |-
+            * `A` - A
+            * `B` - B
+          title: End
+        termination_type:
+          type: string
+        termination_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+    PatchedCircuitTypeRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedClusterGroupRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedClusterTypeRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedContactRoleRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedCustomLinkRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        content_types:
+          type: array
+          items:
+            type: string
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        enabled:
+          type: boolean
+        link_text:
+          type: string
+          minLength: 1
+          description: Jinja2 template code for link text
+        link_url:
+          type: string
+          minLength: 1
+          description: Jinja2 template code for link URL
+        weight:
+          type: integer
+          maximum: 32767
+          minimum: 0
+        group_name:
+          type: string
+          description: Links with the same group will appear as a dropdown menu
+          maxLength: 50
+        button_class:
+          enum:
+          - outline-dark
+          - blue
+          - indigo
+          - purple
+          - pink
+          - red
+          - orange
+          - yellow
+          - green
+          - teal
+          - cyan
+          - gray
+          - black
+          - white
+          - ghost-dark
+          type: string
+          description: |-
+            The class of the first link in a group will be used for the dropdown button
+
+            * `outline-dark` - Default
+            * `blue` - Blue
+            * `indigo` - Indigo
+            * `purple` - Purple
+            * `pink` - Pink
+            * `red` - Red
+            * `orange` - Orange
+            * `yellow` - Yellow
+            * `green` - Green
+            * `teal` - Teal
+            * `cyan` - Cyan
+            * `gray` - Gray
+            * `black` - Black
+            * `white` - White
+            * `ghost-dark` - Link
+        new_window:
+          type: boolean
+          description: Force link to open in a new window
+    PatchedDashboardRequest:
+      type: object
+      properties:
+        layout:
+          type: object
+          additionalProperties: {}
+        config:
+          type: object
+          additionalProperties: {}
+    PatchedFHRPGroupRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          maxLength: 100
+        protocol:
+          enum:
+          - vrrp2
+          - vrrp3
+          - carp
+          - clusterxl
+          - hsrp
+          - glbp
+          - other
+          type: string
+          description: |-
+            * `vrrp2` - VRRPv2
+            * `vrrp3` - VRRPv3
+            * `carp` - CARP
+            * `clusterxl` - ClusterXL
+            * `hsrp` - HSRP
+            * `glbp` - GLBP
+            * `other` - Other
+        group_id:
+          type: integer
+          maximum: 32767
+          minimum: 0
+        auth_type:
+          enum:
+          - plaintext
+          - md5
+          - ''
+          type: string
+          description: |-
+            * `plaintext` - Plaintext
+            * `md5` - MD5
+          title: Authentication type
+        auth_key:
+          type: string
+          title: Authentication key
+          maxLength: 255
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedGroupRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 150
+    PatchedImageAttachmentRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        content_type:
+          type: string
+        object_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+        name:
+          type: string
+          maxLength: 50
+        image:
+          type: string
+          format: binary
+        image_height:
+          type: integer
+          maximum: 32767
+          minimum: 0
+        image_width:
+          type: integer
+          maximum: 32767
+          minimum: 0
+    PatchedInventoryItemRoleRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        color:
+          type: string
+          minLength: 1
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedManufacturerRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedMappingRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        source:
+          type: string
+          minLength: 1
+          title: Name
+          format: uri
+          maxLength: 120
+        target:
+          type: string
+          minLength: 1
+          title: Identifier
+          format: uri
+          maxLength: 120
+        authentication:
+          enum:
+          - none
+          - ldap
+          - ecas
+          type: string
+          description: |-
+            * `none` - None
+            * `ldap` - Ldap
+            * `ecas` - Ecas
+          title: Auth
+        testingpage:
+          type: string
+          minLength: 1
+          format: uri
+          maxLength: 120
+        webdav:
+          type: boolean
+        Comment:
+          type: string
+          maxLength: 500
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedRIRRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        is_private:
+          type: boolean
+          title: Private
+          description: IP space managed by this RIR is considered private
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedRackRoleRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        color:
+          type: string
+          minLength: 1
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedRoleRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        weight:
+          type: integer
+          maximum: 32767
+          minimum: 0
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedSavedFilterRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        content_types:
+          type: array
+          items:
+            type: string
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        description:
+          type: string
+          maxLength: 200
+        user:
+          type: integer
+          nullable: true
+        weight:
+          type: integer
+          maximum: 32767
+          minimum: 0
+        enabled:
+          type: boolean
+        shared:
+          type: boolean
+        parameters:
+          type: object
+          additionalProperties: {}
+    PatchedTagRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          pattern: ^[-\w]+$
+          maxLength: 100
+        color:
+          type: string
+          minLength: 1
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        description:
+          type: string
+          maxLength: 200
+    PatchedVLANGroupRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        scope_type:
+          type: string
+          nullable: true
+        scope_id:
+          type: integer
+          nullable: true
+        min_vid:
+          type: integer
+          maximum: 4094
+          minimum: 1
+          title: Minimum VLAN ID
+          description: Lowest permissible ID of a child VLAN
+        max_vid:
+          type: integer
+          maximum: 4094
+          minimum: 1
+          title: Maximum VLAN ID
+          description: Highest permissible ID of a child VLAN
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWebhookRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        content_types:
+          type: array
+          items:
+            type: string
+        name:
+          type: string
+          minLength: 1
+          maxLength: 150
+        type_create:
+          type: boolean
+          description: Triggers when a matching object is created.
+        type_update:
+          type: boolean
+          description: Triggers when a matching object is updated.
+        type_delete:
+          type: boolean
+          description: Triggers when a matching object is deleted.
+        type_job_start:
+          type: boolean
+          description: Triggers when a job for a matching object is started.
+        type_job_end:
+          type: boolean
+          description: Triggers when a job for a matching object terminates.
+        payload_url:
+          type: string
+          minLength: 1
+          title: URL
+          description: This URL will be called using the HTTP method defined when
+            the webhook is called. Jinja2 template processing is supported with the
+            same context as the request body.
+          maxLength: 500
+        enabled:
+          type: boolean
+        http_method:
+          enum:
+          - GET
+          - POST
+          - PUT
+          - PATCH
+          - DELETE
+          type: string
+          description: |-
+            * `GET` - GET
+            * `POST` - POST
+            * `PUT` - PUT
+            * `PATCH` - PATCH
+            * `DELETE` - DELETE
+        http_content_type:
+          type: string
+          minLength: 1
+          description: The complete list of official content types is available <a
+            href="https://www.iana.org/assignments/media-types/media-types.xhtml">here</a>.
+          maxLength: 100
+        additional_headers:
+          type: string
+          description: 'User-supplied HTTP headers to be sent with the request in
+            addition to the HTTP content type. Headers should be defined in the format
+            <code>Name: Value</code>. Jinja2 template processing is supported with
+            the same context as the request body (below).'
+        body_template:
+          type: string
+          description: 'Jinja2 template for a custom request body. If blank, a JSON
+            object representing the change will be included. Available context data
+            includes: <code>event</code>, <code>model</code>, <code>timestamp</code>,
+            <code>username</code>, <code>request_id</code>, and <code>data</code>.'
+        secret:
+          type: string
+          description: When provided, the request will include a 'X-Hook-Signature'
+            header containing a HMAC hex digest of the payload body using the secret
+            as the key. The secret is not transmitted in the request.
+          maxLength: 255
+        conditions:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          description: A set of conditions which determine whether the webhook will
+            be generated.
+        ssl_verification:
+          type: boolean
+          description: Enable SSL certificate verification. Disable with caution!
+        ca_file_path:
+          type: string
+          nullable: true
+          description: The specific CA certificate file to use for SSL verification.
+            Leave blank to use the system defaults.
+          maxLength: 4096
+    PatchedWritableASNRangeRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        rir:
+          type: integer
+        start:
+          type: integer
+          maximum: 4294967295
+          minimum: 1
+          format: int64
+        end:
+          type: integer
+          maximum: 4294967295
+          minimum: 1
+          format: int64
+        tenant:
+          type: integer
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableASNRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        asn:
+          type: integer
+          maximum: 4294967295
+          minimum: 1
+          format: int64
+          description: 16- or 32-bit autonomous system number
+        rir:
+          type: integer
+          description: Regional Internet Registry responsible for this AS number space
+        tenant:
+          type: integer
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableAggregateRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        prefix:
+          type: string
+          minLength: 1
+        rir:
+          type: integer
+          description: Regional Internet Registry responsible for this IP space
+        tenant:
+          type: integer
+          nullable: true
+        date_added:
+          type: string
+          format: date
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableCableRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        type:
+          enum:
+          - cat3
+          - cat5
+          - cat5e
+          - cat6
+          - cat6a
+          - cat7
+          - cat7a
+          - cat8
+          - dac-active
+          - dac-passive
+          - mrj21-trunk
+          - coaxial
+          - mmf
+          - mmf-om1
+          - mmf-om2
+          - mmf-om3
+          - mmf-om4
+          - mmf-om5
+          - smf
+          - smf-os1
+          - smf-os2
+          - aoc
+          - power
+          - ''
+          type: string
+          description: |-
+            * `cat3` - CAT3
+            * `cat5` - CAT5
+            * `cat5e` - CAT5e
+            * `cat6` - CAT6
+            * `cat6a` - CAT6a
+            * `cat7` - CAT7
+            * `cat7a` - CAT7a
+            * `cat8` - CAT8
+            * `dac-active` - Direct Attach Copper (Active)
+            * `dac-passive` - Direct Attach Copper (Passive)
+            * `mrj21-trunk` - MRJ21 Trunk
+            * `coaxial` - Coaxial
+            * `mmf` - Multimode Fiber
+            * `mmf-om1` - Multimode Fiber (OM1)
+            * `mmf-om2` - Multimode Fiber (OM2)
+            * `mmf-om3` - Multimode Fiber (OM3)
+            * `mmf-om4` - Multimode Fiber (OM4)
+            * `mmf-om5` - Multimode Fiber (OM5)
+            * `smf` - Singlemode Fiber
+            * `smf-os1` - Singlemode Fiber (OS1)
+            * `smf-os2` - Singlemode Fiber (OS2)
+            * `aoc` - Active Optical Cabling (AOC)
+            * `power` - Power
+        a_terminations:
+          type: array
+          items:
+            $ref: '#/components/schemas/GenericObjectRequest'
+        b_terminations:
+          type: array
+          items:
+            $ref: '#/components/schemas/GenericObjectRequest'
+        status:
+          enum:
+          - connected
+          - planned
+          - decommissioning
+          type: string
+          description: |-
+            * `connected` - Connected
+            * `planned` - Planned
+            * `decommissioning` - Decommissioning
+        tenant:
+          type: integer
+          nullable: true
+        label:
+          type: string
+          maxLength: 100
+        color:
+          type: string
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        length:
+          type: number
+          format: double
+          maximum: 1000000
+          minimum: -1000000
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+        length_unit:
+          enum:
+          - km
+          - m
+          - cm
+          - mi
+          - ft
+          - in
+          - ''
+          type: string
+          description: |-
+            * `km` - Kilometers
+            * `m` - Meters
+            * `cm` - Centimeters
+            * `mi` - Miles
+            * `ft` - Feet
+            * `in` - Inches
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableCircuitRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        cid:
+          type: string
+          minLength: 1
+          title: Circuit ID
+          description: Unique circuit ID
+          maxLength: 100
+        provider:
+          type: integer
+        provider_account:
+          type: integer
+          nullable: true
+        type:
+          type: integer
+        status:
+          enum:
+          - planned
+          - provisioning
+          - active
+          - offline
+          - deprovisioning
+          - decommissioned
+          type: string
+          description: |-
+            * `planned` - Planned
+            * `provisioning` - Provisioning
+            * `active` - Active
+            * `offline` - Offline
+            * `deprovisioning` - Deprovisioning
+            * `decommissioned` - Decommissioned
+        tenant:
+          type: integer
+          nullable: true
+        install_date:
+          type: string
+          format: date
+          nullable: true
+          title: Installed
+        termination_date:
+          type: string
+          format: date
+          nullable: true
+          title: Terminates
+        commit_rate:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          title: Commit rate (Kbps)
+          description: Committed rate
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableCircuitTerminationRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        circuit:
+          type: integer
+        term_side:
+          enum:
+          - A
+          - Z
+          type: string
+          description: |-
+            * `A` - A
+            * `Z` - Z
+          title: Termination
+        site:
+          type: integer
+          nullable: true
+        provider_network:
+          type: integer
+          nullable: true
+        port_speed:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          title: Port speed (Kbps)
+          description: Physical circuit speed
+        upstream_speed:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          title: Upstream speed (Kbps)
+          description: Upstream speed, if different from port speed
+        xconnect_id:
+          type: string
+          title: Cross-connect ID
+          description: ID of the local cross-connect
+          maxLength: 50
+        pp_info:
+          type: string
+          title: Patch panel/port(s)
+          description: Patch panel ID and port number(s)
+          maxLength: 100
+        description:
+          type: string
+          maxLength: 200
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableClusterRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        type:
+          type: integer
+        group:
+          type: integer
+          nullable: true
+        status:
+          enum:
+          - planned
+          - staging
+          - active
+          - decommissioning
+          - offline
+          type: string
+          description: |-
+            * `planned` - Planned
+            * `staging` - Staging
+            * `active` - Active
+            * `decommissioning` - Decommissioning
+            * `offline` - Offline
+        tenant:
+          type: integer
+          nullable: true
+        site:
+          type: integer
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableConfigContextRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        weight:
+          type: integer
+          maximum: 32767
+          minimum: 0
+        description:
+          type: string
+          maxLength: 200
+        is_active:
+          type: boolean
+        regions:
+          type: array
+          items:
+            type: integer
+        site_groups:
+          type: array
+          items:
+            type: integer
+        sites:
+          type: array
+          items:
+            type: integer
+        locations:
+          type: array
+          items:
+            type: integer
+        device_types:
+          type: array
+          items:
+            type: integer
+        roles:
+          type: array
+          items:
+            type: integer
+        platforms:
+          type: array
+          items:
+            type: integer
+        cluster_types:
+          type: array
+          items:
+            type: integer
+        cluster_groups:
+          type: array
+          items:
+            type: integer
+        clusters:
+          type: array
+          items:
+            type: integer
+        tenant_groups:
+          type: array
+          items:
+            type: integer
+        tenants:
+          type: array
+          items:
+            type: integer
+        tags:
+          type: array
+          items:
+            type: string
+            minLength: 1
+        data_source:
+          type: integer
+          nullable: true
+          description: Remote data source
+        data:
+          type: object
+          additionalProperties: {}
+    PatchedWritableConfigTemplateRequest:
+      type: object
+      description: |-
+        Introduces support for Tag assignment. Adds `tags` serialization, and handles tag assignment
+        on create() and update().
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        description:
+          type: string
+          maxLength: 200
+        environment_params:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          description: Any <a href="https://jinja.palletsprojects.com/en/3.1.x/api/#jinja2.Environment">additional
+            parameters</a> to pass when constructing the Jinja2 environment.
+        template_code:
+          type: string
+          minLength: 1
+          description: Jinja2 template code.
+        data_source:
+          type: integer
+          nullable: true
+          description: Remote data source
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+    PatchedWritableConsolePortRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          type: integer
+        module:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - de-9
+          - db-25
+          - rj-11
+          - rj-12
+          - rj-45
+          - mini-din-8
+          - usb-a
+          - usb-b
+          - usb-c
+          - usb-mini-a
+          - usb-mini-b
+          - usb-micro-a
+          - usb-micro-b
+          - usb-micro-ab
+          - other
+          - ''
+          type: string
+          description: |-
+            Physical port type
+
+            * `de-9` - DE-9
+            * `db-25` - DB-25
+            * `rj-11` - RJ-11
+            * `rj-12` - RJ-12
+            * `rj-45` - RJ-45
+            * `mini-din-8` - Mini-DIN 8
+            * `usb-a` - USB Type A
+            * `usb-b` - USB Type B
+            * `usb-c` - USB Type C
+            * `usb-mini-a` - USB Mini A
+            * `usb-mini-b` - USB Mini B
+            * `usb-micro-a` - USB Micro A
+            * `usb-micro-b` - USB Micro B
+            * `usb-micro-ab` - USB Micro AB
+            * `other` - Other
+        speed:
+          enum:
+          - 1200
+          - 2400
+          - 4800
+          - 9600
+          - 19200
+          - 38400
+          - 57600
+          - 115200
+          - null
+          type: integer
+          nullable: true
+          description: |-
+            Port speed in bits per second
+
+            * `1200` - 1200 bps
+            * `2400` - 2400 bps
+            * `4800` - 4800 bps
+            * `9600` - 9600 bps
+            * `19200` - 19.2 kbps
+            * `38400` - 38.4 kbps
+            * `57600` - 57.6 kbps
+            * `115200` - 115.2 kbps
+          minimum: 0
+          maximum: 2147483647
+        description:
+          type: string
+          maxLength: 200
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableConsolePortTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          type: integer
+          nullable: true
+        module_type:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - de-9
+          - db-25
+          - rj-11
+          - rj-12
+          - rj-45
+          - mini-din-8
+          - usb-a
+          - usb-b
+          - usb-c
+          - usb-mini-a
+          - usb-mini-b
+          - usb-micro-a
+          - usb-micro-b
+          - usb-micro-ab
+          - other
+          - ''
+          type: string
+          description: |-
+            * `de-9` - DE-9
+            * `db-25` - DB-25
+            * `rj-11` - RJ-11
+            * `rj-12` - RJ-12
+            * `rj-45` - RJ-45
+            * `mini-din-8` - Mini-DIN 8
+            * `usb-a` - USB Type A
+            * `usb-b` - USB Type B
+            * `usb-c` - USB Type C
+            * `usb-mini-a` - USB Mini A
+            * `usb-mini-b` - USB Mini B
+            * `usb-micro-a` - USB Micro A
+            * `usb-micro-b` - USB Micro B
+            * `usb-micro-ab` - USB Micro AB
+            * `other` - Other
+        description:
+          type: string
+          maxLength: 200
+    PatchedWritableConsoleServerPortRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          type: integer
+        module:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - de-9
+          - db-25
+          - rj-11
+          - rj-12
+          - rj-45
+          - mini-din-8
+          - usb-a
+          - usb-b
+          - usb-c
+          - usb-mini-a
+          - usb-mini-b
+          - usb-micro-a
+          - usb-micro-b
+          - usb-micro-ab
+          - other
+          - ''
+          type: string
+          description: |-
+            Physical port type
+
+            * `de-9` - DE-9
+            * `db-25` - DB-25
+            * `rj-11` - RJ-11
+            * `rj-12` - RJ-12
+            * `rj-45` - RJ-45
+            * `mini-din-8` - Mini-DIN 8
+            * `usb-a` - USB Type A
+            * `usb-b` - USB Type B
+            * `usb-c` - USB Type C
+            * `usb-mini-a` - USB Mini A
+            * `usb-mini-b` - USB Mini B
+            * `usb-micro-a` - USB Micro A
+            * `usb-micro-b` - USB Micro B
+            * `usb-micro-ab` - USB Micro AB
+            * `other` - Other
+        speed:
+          enum:
+          - 1200
+          - 2400
+          - 4800
+          - 9600
+          - 19200
+          - 38400
+          - 57600
+          - 115200
+          - null
+          type: integer
+          nullable: true
+          description: |-
+            Port speed in bits per second
+
+            * `1200` - 1200 bps
+            * `2400` - 2400 bps
+            * `4800` - 4800 bps
+            * `9600` - 9600 bps
+            * `19200` - 19.2 kbps
+            * `38400` - 38.4 kbps
+            * `57600` - 57.6 kbps
+            * `115200` - 115.2 kbps
+          minimum: 0
+          maximum: 2147483647
+        description:
+          type: string
+          maxLength: 200
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableConsoleServerPortTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          type: integer
+          nullable: true
+        module_type:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - de-9
+          - db-25
+          - rj-11
+          - rj-12
+          - rj-45
+          - mini-din-8
+          - usb-a
+          - usb-b
+          - usb-c
+          - usb-mini-a
+          - usb-mini-b
+          - usb-micro-a
+          - usb-micro-b
+          - usb-micro-ab
+          - other
+          - ''
+          type: string
+          description: |-
+            * `de-9` - DE-9
+            * `db-25` - DB-25
+            * `rj-11` - RJ-11
+            * `rj-12` - RJ-12
+            * `rj-45` - RJ-45
+            * `mini-din-8` - Mini-DIN 8
+            * `usb-a` - USB Type A
+            * `usb-b` - USB Type B
+            * `usb-c` - USB Type C
+            * `usb-mini-a` - USB Mini A
+            * `usb-mini-b` - USB Mini B
+            * `usb-micro-a` - USB Micro A
+            * `usb-micro-b` - USB Micro B
+            * `usb-micro-ab` - USB Micro AB
+            * `other` - Other
+        description:
+          type: string
+          maxLength: 200
+    PatchedWritableContactAssignmentRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        content_type:
+          type: string
+        object_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+        contact:
+          type: integer
+        role:
+          type: integer
+        priority:
+          enum:
+          - primary
+          - secondary
+          - tertiary
+          - inactive
+          - ''
+          type: string
+          description: |-
+            * `primary` - Primary
+            * `secondary` - Secondary
+            * `tertiary` - Tertiary
+            * `inactive` - Inactive
+    PatchedWritableContactGroupRequest:
+      type: object
+      description: Extends PrimaryModelSerializer to include MPTT support.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        parent:
+          type: integer
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableContactRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        group:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        title:
+          type: string
+          maxLength: 100
+        phone:
+          type: string
+          maxLength: 50
+        email:
+          type: string
+          format: email
+          maxLength: 254
+        address:
+          type: string
+          maxLength: 200
+        link:
+          type: string
+          format: uri
+          maxLength: 200
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableCustomFieldRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        content_types:
+          type: array
+          items:
+            type: string
+        type:
+          enum:
+          - text
+          - longtext
+          - integer
+          - decimal
+          - boolean
+          - date
+          - datetime
+          - url
+          - json
+          - select
+          - multiselect
+          - object
+          - multiobject
+          type: string
+          description: |-
+            The type of data this custom field holds
+
+            * `text` - Text
+            * `longtext` - Text (long)
+            * `integer` - Integer
+            * `decimal` - Decimal
+            * `boolean` - Boolean (true/false)
+            * `date` - Date
+            * `datetime` - Date & time
+            * `url` - URL
+            * `json` - JSON
+            * `select` - Selection
+            * `multiselect` - Multiple selection
+            * `object` - Object
+            * `multiobject` - Multiple objects
+        object_type:
+          type: string
+        name:
+          type: string
+          minLength: 1
+          description: Internal field name
+          pattern: ^[a-z0-9_]+$
+          maxLength: 50
+        label:
+          type: string
+          description: Name of the field as displayed to users (if not provided, the
+            field's name will be used)
+          maxLength: 50
+        group_name:
+          type: string
+          description: Custom fields within the same group will be displayed together
+          maxLength: 50
+        description:
+          type: string
+          maxLength: 200
+        required:
+          type: boolean
+          description: If true, this field is required when creating new objects or
+            editing an existing object.
+        search_weight:
+          type: integer
+          maximum: 32767
+          minimum: 0
+          description: Weighting for search. Lower values are considered more important.
+            Fields with a search weight of zero will be ignored.
+        filter_logic:
+          enum:
+          - disabled
+          - loose
+          - exact
+          type: string
+          description: |-
+            Loose matches any instance of a given string; exact matches the entire field.
+
+            * `disabled` - Disabled
+            * `loose` - Loose
+            * `exact` - Exact
+        ui_visibility:
+          enum:
+          - read-write
+          - read-only
+          - hidden
+          type: string
+          description: |-
+            Specifies the visibility of custom field in the UI
+
+            * `read-write` - Read/Write
+            * `read-only` - Read-only
+            * `hidden` - Hidden
+        is_cloneable:
+          type: boolean
+          title: Cloneable
+          description: Replicate this value when cloning objects
+        default:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          description: Default value for the field (must be a JSON value). Encapsulate
+            strings with double quotes (e.g. "Foo").
+        weight:
+          type: integer
+          maximum: 32767
+          minimum: 0
+          title: Display weight
+          description: Fields with higher weights appear lower in a form.
+        validation_minimum:
+          type: integer
+          maximum: 2147483647
+          minimum: -2147483648
+          nullable: true
+          title: Minimum value
+          description: Minimum allowed value (for numeric fields)
+        validation_maximum:
+          type: integer
+          maximum: 2147483647
+          minimum: -2147483648
+          nullable: true
+          title: Maximum value
+          description: Maximum allowed value (for numeric fields)
+        validation_regex:
+          type: string
+          description: Regular expression to enforce on text field values. Use ^ and
+            $ to force matching of entire string. For example, <code>^[A-Z]{3}$</code>
+            will limit values to exactly three uppercase letters.
+          maxLength: 500
+        choices:
+          type: array
+          items:
+            type: string
+            minLength: 1
+            maxLength: 100
+          nullable: true
+          description: Comma-separated list of available choices (for selection fields)
+    PatchedWritableDataSourceRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        type:
+          enum:
+          - local
+          - git
+          - amazon-s3
+          type: string
+          description: |-
+            * `local` - Local
+            * `git` - Git
+            * `amazon-s3` - Amazon S3
+        source_url:
+          type: string
+          minLength: 1
+          title: URL
+          maxLength: 200
+        enabled:
+          type: boolean
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        parameters:
+          type: object
+          additionalProperties: {}
+          nullable: true
+        ignore_rules:
+          type: string
+          description: Patterns (one per line) matching files to ignore when syncing
+    PatchedWritableDeviceBayRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          type: integer
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        description:
+          type: string
+          maxLength: 200
+        installed_device:
+          type: integer
+          nullable: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableDeviceBayTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          type: integer
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        description:
+          type: string
+          maxLength: 200
+    PatchedWritableDeviceRoleRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        color:
+          type: string
+          minLength: 1
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        vm_role:
+          type: boolean
+          description: Virtual machines may be assigned to this role
+        config_template:
+          type: integer
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableDeviceTypeRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        manufacturer:
+          type: integer
+        default_platform:
+          type: integer
+          nullable: true
+        model:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        part_number:
+          type: string
+          description: Discrete part number (optional)
+          maxLength: 50
+        u_height:
+          type: number
+          format: double
+          maximum: 1000
+          minimum: 0
+          exclusiveMaximum: true
+          default: 1.0
+          title: Position (U)
+        is_full_depth:
+          type: boolean
+          description: Device consumes both front and rear rack faces
+        subdevice_role:
+          enum:
+          - parent
+          - child
+          - ''
+          type: string
+          title: Parent/child status
+          description: |-
+            Parent devices house child devices in device bays. Leave blank if this device type is neither a parent nor a child.
+
+            * `parent` - Parent
+            * `child` - Child
+        airflow:
+          enum:
+          - front-to-rear
+          - rear-to-front
+          - left-to-right
+          - right-to-left
+          - side-to-rear
+          - passive
+          - mixed
+          - ''
+          type: string
+          description: |-
+            * `front-to-rear` - Front to rear
+            * `rear-to-front` - Rear to front
+            * `left-to-right` - Left to right
+            * `right-to-left` - Right to left
+            * `side-to-rear` - Side to rear
+            * `passive` - Passive
+            * `mixed` - Mixed
+        weight:
+          type: number
+          format: double
+          maximum: 1000000
+          minimum: -1000000
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+        weight_unit:
+          enum:
+          - kg
+          - g
+          - lb
+          - oz
+          - ''
+          type: string
+          description: |-
+            * `kg` - Kilograms
+            * `g` - Grams
+            * `lb` - Pounds
+            * `oz` - Ounces
+        front_image:
+          type: string
+          format: binary
+        rear_image:
+          type: string
+          format: binary
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableDeviceWithConfigContextRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          nullable: true
+          maxLength: 64
+        device_type:
+          type: integer
+        device_role:
+          type: integer
+          description: The function this device serves
+        tenant:
+          type: integer
+          nullable: true
+        platform:
+          type: integer
+          nullable: true
+        serial:
+          type: string
+          title: Serial number
+          description: Chassis serial number, assigned by the manufacturer
+          maxLength: 50
+        asset_tag:
+          type: string
+          nullable: true
+          description: A unique tag used to identify this device
+          maxLength: 50
+        site:
+          type: integer
+        location:
+          type: integer
+          nullable: true
+        rack:
+          type: integer
+          nullable: true
+        position:
+          type: number
+          format: double
+          maximum: 1000
+          minimum: 0.5
+          exclusiveMaximum: true
+          nullable: true
+          title: Position (U)
+        face:
+          enum:
+          - front
+          - rear
+          - ''
+          type: string
+          description: |-
+            * `front` - Front
+            * `rear` - Rear
+          title: Rack face
+        status:
+          enum:
+          - offline
+          - active
+          - planned
+          - staged
+          - failed
+          - inventory
+          - decommissioning
+          type: string
+          description: |-
+            * `offline` - Offline
+            * `active` - Active
+            * `planned` - Planned
+            * `staged` - Staged
+            * `failed` - Failed
+            * `inventory` - Inventory
+            * `decommissioning` - Decommissioning
+        airflow:
+          enum:
+          - front-to-rear
+          - rear-to-front
+          - left-to-right
+          - right-to-left
+          - side-to-rear
+          - passive
+          - mixed
+          - ''
+          type: string
+          description: |-
+            * `front-to-rear` - Front to rear
+            * `rear-to-front` - Rear to front
+            * `left-to-right` - Left to right
+            * `right-to-left` - Right to left
+            * `side-to-rear` - Side to rear
+            * `passive` - Passive
+            * `mixed` - Mixed
+        primary_ip4:
+          type: integer
+          nullable: true
+          title: Primary IPv4
+        primary_ip6:
+          type: integer
+          nullable: true
+          title: Primary IPv6
+        cluster:
+          type: integer
+          nullable: true
+        virtual_chassis:
+          type: integer
+          nullable: true
+        vc_position:
+          type: integer
+          maximum: 255
+          minimum: 0
+          nullable: true
+        vc_priority:
+          type: integer
+          maximum: 255
+          minimum: 0
+          nullable: true
+          description: Virtual chassis master election priority
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        local_context_data:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          description: Local config context data takes precedence over source contexts
+            in the final rendered config context
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableExportTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        content_types:
+          type: array
+          items:
+            type: string
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        description:
+          type: string
+          maxLength: 200
+        template_code:
+          type: string
+          minLength: 1
+          description: Jinja2 template code. The list of objects being exported is
+            passed as a context variable named <code>queryset</code>.
+        mime_type:
+          type: string
+          description: Defaults to <code>text/plain; charset=utf-8</code>
+          maxLength: 50
+        file_extension:
+          type: string
+          description: Extension to append to the rendered filename
+          maxLength: 15
+        as_attachment:
+          type: boolean
+          description: Download file as attachment
+        data_source:
+          type: integer
+          nullable: true
+          description: Remote data source
+    PatchedWritableFHRPGroupAssignmentRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        group:
+          type: integer
+        interface_type:
+          type: string
+        interface_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+        priority:
+          type: integer
+          maximum: 255
+          minimum: 0
+    PatchedWritableFrontPortRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          type: integer
+        module:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - 8p8c
+          - 8p6c
+          - 8p4c
+          - 8p2c
+          - 6p6c
+          - 6p4c
+          - 6p2c
+          - 4p4c
+          - 4p2c
+          - gg45
+          - tera-4p
+          - tera-2p
+          - tera-1p
+          - 110-punch
+          - bnc
+          - f
+          - n
+          - mrj21
+          - fc
+          - lc
+          - lc-pc
+          - lc-upc
+          - lc-apc
+          - lsh
+          - lsh-pc
+          - lsh-upc
+          - lsh-apc
+          - mpo
+          - mtrj
+          - sc
+          - sc-pc
+          - sc-upc
+          - sc-apc
+          - st
+          - cs
+          - sn
+          - sma-905
+          - sma-906
+          - urm-p2
+          - urm-p4
+          - urm-p8
+          - splice
+          - other
+          type: string
+          description: |-
+            * `8p8c` - 8P8C
+            * `8p6c` - 8P6C
+            * `8p4c` - 8P4C
+            * `8p2c` - 8P2C
+            * `6p6c` - 6P6C
+            * `6p4c` - 6P4C
+            * `6p2c` - 6P2C
+            * `4p4c` - 4P4C
+            * `4p2c` - 4P2C
+            * `gg45` - GG45
+            * `tera-4p` - TERA 4P
+            * `tera-2p` - TERA 2P
+            * `tera-1p` - TERA 1P
+            * `110-punch` - 110 Punch
+            * `bnc` - BNC
+            * `f` - F Connector
+            * `n` - N Connector
+            * `mrj21` - MRJ21
+            * `fc` - FC
+            * `lc` - LC
+            * `lc-pc` - LC/PC
+            * `lc-upc` - LC/UPC
+            * `lc-apc` - LC/APC
+            * `lsh` - LSH
+            * `lsh-pc` - LSH/PC
+            * `lsh-upc` - LSH/UPC
+            * `lsh-apc` - LSH/APC
+            * `mpo` - MPO
+            * `mtrj` - MTRJ
+            * `sc` - SC
+            * `sc-pc` - SC/PC
+            * `sc-upc` - SC/UPC
+            * `sc-apc` - SC/APC
+            * `st` - ST
+            * `cs` - CS
+            * `sn` - SN
+            * `sma-905` - SMA 905
+            * `sma-906` - SMA 906
+            * `urm-p2` - URM-P2
+            * `urm-p4` - URM-P4
+            * `urm-p8` - URM-P8
+            * `splice` - Splice
+            * `other` - Other
+        color:
+          type: string
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        rear_port:
+          type: integer
+        rear_port_position:
+          type: integer
+          maximum: 1024
+          minimum: 1
+          description: Mapped position on corresponding rear port
+        description:
+          type: string
+          maxLength: 200
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableFrontPortTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          type: integer
+          nullable: true
+        module_type:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - 8p8c
+          - 8p6c
+          - 8p4c
+          - 8p2c
+          - 6p6c
+          - 6p4c
+          - 6p2c
+          - 4p4c
+          - 4p2c
+          - gg45
+          - tera-4p
+          - tera-2p
+          - tera-1p
+          - 110-punch
+          - bnc
+          - f
+          - n
+          - mrj21
+          - fc
+          - lc
+          - lc-pc
+          - lc-upc
+          - lc-apc
+          - lsh
+          - lsh-pc
+          - lsh-upc
+          - lsh-apc
+          - mpo
+          - mtrj
+          - sc
+          - sc-pc
+          - sc-upc
+          - sc-apc
+          - st
+          - cs
+          - sn
+          - sma-905
+          - sma-906
+          - urm-p2
+          - urm-p4
+          - urm-p8
+          - splice
+          - other
+          type: string
+          description: |-
+            * `8p8c` - 8P8C
+            * `8p6c` - 8P6C
+            * `8p4c` - 8P4C
+            * `8p2c` - 8P2C
+            * `6p6c` - 6P6C
+            * `6p4c` - 6P4C
+            * `6p2c` - 6P2C
+            * `4p4c` - 4P4C
+            * `4p2c` - 4P2C
+            * `gg45` - GG45
+            * `tera-4p` - TERA 4P
+            * `tera-2p` - TERA 2P
+            * `tera-1p` - TERA 1P
+            * `110-punch` - 110 Punch
+            * `bnc` - BNC
+            * `f` - F Connector
+            * `n` - N Connector
+            * `mrj21` - MRJ21
+            * `fc` - FC
+            * `lc` - LC
+            * `lc-pc` - LC/PC
+            * `lc-upc` - LC/UPC
+            * `lc-apc` - LC/APC
+            * `lsh` - LSH
+            * `lsh-pc` - LSH/PC
+            * `lsh-upc` - LSH/UPC
+            * `lsh-apc` - LSH/APC
+            * `mpo` - MPO
+            * `mtrj` - MTRJ
+            * `sc` - SC
+            * `sc-pc` - SC/PC
+            * `sc-upc` - SC/UPC
+            * `sc-apc` - SC/APC
+            * `st` - ST
+            * `cs` - CS
+            * `sn` - SN
+            * `sma-905` - SMA 905
+            * `sma-906` - SMA 906
+            * `urm-p2` - URM-P2
+            * `urm-p4` - URM-P4
+            * `urm-p8` - URM-P8
+            * `splice` - Splice
+            * `other` - Other
+        color:
+          type: string
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        rear_port:
+          type: integer
+        rear_port_position:
+          type: integer
+          maximum: 1024
+          minimum: 1
+        description:
+          type: string
+          maxLength: 200
+    PatchedWritableIPAddressRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        address:
+          type: string
+          minLength: 1
+        vrf:
+          type: integer
+          nullable: true
+        tenant:
+          type: integer
+          nullable: true
+        status:
+          enum:
+          - active
+          - reserved
+          - deprecated
+          - dhcp
+          - slaac
+          type: string
+          description: |-
+            The operational status of this IP
+
+            * `active` - Active
+            * `reserved` - Reserved
+            * `deprecated` - Deprecated
+            * `dhcp` - DHCP
+            * `slaac` - SLAAC
+        role:
+          enum:
+          - loopback
+          - secondary
+          - anycast
+          - vip
+          - vrrp
+          - hsrp
+          - glbp
+          - carp
+          - ''
+          type: string
+          description: |-
+            The functional role of this IP
+
+            * `loopback` - Loopback
+            * `secondary` - Secondary
+            * `anycast` - Anycast
+            * `vip` - VIP
+            * `vrrp` - VRRP
+            * `hsrp` - HSRP
+            * `glbp` - GLBP
+            * `carp` - CARP
+        assigned_object_type:
+          type: string
+          nullable: true
+        assigned_object_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+          nullable: true
+        nat_inside:
+          type: integer
+          nullable: true
+          title: NAT (Inside)
+          description: The IP for which this address is the "outside" IP
+        dns_name:
+          type: string
+          description: Hostname or FQDN (not case-sensitive)
+          pattern: ^([0-9A-Za-z_-]+|\*)(\.[0-9A-Za-z_-]+)*\.?$
+          maxLength: 255
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableIPRangeRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        start_address:
+          type: string
+          minLength: 1
+        end_address:
+          type: string
+          minLength: 1
+        vrf:
+          type: integer
+          nullable: true
+        tenant:
+          type: integer
+          nullable: true
+        status:
+          enum:
+          - active
+          - reserved
+          - deprecated
+          type: string
+          description: |-
+            Operational status of this range
+
+            * `active` - Active
+            * `reserved` - Reserved
+            * `deprecated` - Deprecated
+        role:
+          type: integer
+          nullable: true
+          description: The primary function of this range
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        mark_utilized:
+          type: boolean
+          description: Treat as 100% utilized
+    PatchedWritableInterfaceRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          type: integer
+        vdcs:
+          type: array
+          items:
+            type: integer
+        module:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - virtual
+          - bridge
+          - lag
+          - 100base-fx
+          - 100base-lfx
+          - 100base-tx
+          - 100base-t1
+          - 1000base-t
+          - 2.5gbase-t
+          - 5gbase-t
+          - 10gbase-t
+          - 10gbase-cx4
+          - 1000base-x-gbic
+          - 1000base-x-sfp
+          - 10gbase-x-sfpp
+          - 10gbase-x-xfp
+          - 10gbase-x-xenpak
+          - 10gbase-x-x2
+          - 25gbase-x-sfp28
+          - 50gbase-x-sfp56
+          - 40gbase-x-qsfpp
+          - 50gbase-x-sfp28
+          - 100gbase-x-cfp
+          - 100gbase-x-cfp2
+          - 200gbase-x-cfp2
+          - 100gbase-x-cfp4
+          - 100gbase-x-cpak
+          - 100gbase-x-qsfp28
+          - 200gbase-x-qsfp56
+          - 400gbase-x-qsfpdd
+          - 400gbase-x-osfp
+          - 800gbase-x-qsfpdd
+          - 800gbase-x-osfp
+          - 1000base-kx
+          - 10gbase-kr
+          - 10gbase-kx4
+          - 25gbase-kr
+          - 40gbase-kr4
+          - 50gbase-kr
+          - 100gbase-kp4
+          - 100gbase-kr2
+          - 100gbase-kr4
+          - ieee802.11a
+          - ieee802.11g
+          - ieee802.11n
+          - ieee802.11ac
+          - ieee802.11ad
+          - ieee802.11ax
+          - ieee802.11ay
+          - ieee802.15.1
+          - other-wireless
+          - gsm
+          - cdma
+          - lte
+          - sonet-oc3
+          - sonet-oc12
+          - sonet-oc48
+          - sonet-oc192
+          - sonet-oc768
+          - sonet-oc1920
+          - sonet-oc3840
+          - 1gfc-sfp
+          - 2gfc-sfp
+          - 4gfc-sfp
+          - 8gfc-sfpp
+          - 16gfc-sfpp
+          - 32gfc-sfp28
+          - 64gfc-qsfpp
+          - 128gfc-qsfp28
+          - infiniband-sdr
+          - infiniband-ddr
+          - infiniband-qdr
+          - infiniband-fdr10
+          - infiniband-fdr
+          - infiniband-edr
+          - infiniband-hdr
+          - infiniband-ndr
+          - infiniband-xdr
+          - t1
+          - e1
+          - t3
+          - e3
+          - xdsl
+          - docsis
+          - gpon
+          - xg-pon
+          - xgs-pon
+          - ng-pon2
+          - epon
+          - 10g-epon
+          - cisco-stackwise
+          - cisco-stackwise-plus
+          - cisco-flexstack
+          - cisco-flexstack-plus
+          - cisco-stackwise-80
+          - cisco-stackwise-160
+          - cisco-stackwise-320
+          - cisco-stackwise-480
+          - cisco-stackwise-1t
+          - juniper-vcp
+          - extreme-summitstack
+          - extreme-summitstack-128
+          - extreme-summitstack-256
+          - extreme-summitstack-512
+          - other
+          type: string
+          description: |-
+            * `virtual` - Virtual
+            * `bridge` - Bridge
+            * `lag` - Link Aggregation Group (LAG)
+            * `100base-fx` - 100BASE-FX (10/100ME FIBER)
+            * `100base-lfx` - 100BASE-LFX (10/100ME FIBER)
+            * `100base-tx` - 100BASE-TX (10/100ME)
+            * `100base-t1` - 100BASE-T1 (10/100ME Single Pair)
+            * `1000base-t` - 1000BASE-T (1GE)
+            * `2.5gbase-t` - 2.5GBASE-T (2.5GE)
+            * `5gbase-t` - 5GBASE-T (5GE)
+            * `10gbase-t` - 10GBASE-T (10GE)
+            * `10gbase-cx4` - 10GBASE-CX4 (10GE)
+            * `1000base-x-gbic` - GBIC (1GE)
+            * `1000base-x-sfp` - SFP (1GE)
+            * `10gbase-x-sfpp` - SFP+ (10GE)
+            * `10gbase-x-xfp` - XFP (10GE)
+            * `10gbase-x-xenpak` - XENPAK (10GE)
+            * `10gbase-x-x2` - X2 (10GE)
+            * `25gbase-x-sfp28` - SFP28 (25GE)
+            * `50gbase-x-sfp56` - SFP56 (50GE)
+            * `40gbase-x-qsfpp` - QSFP+ (40GE)
+            * `50gbase-x-sfp28` - QSFP28 (50GE)
+            * `100gbase-x-cfp` - CFP (100GE)
+            * `100gbase-x-cfp2` - CFP2 (100GE)
+            * `200gbase-x-cfp2` - CFP2 (200GE)
+            * `100gbase-x-cfp4` - CFP4 (100GE)
+            * `100gbase-x-cpak` - Cisco CPAK (100GE)
+            * `100gbase-x-qsfp28` - QSFP28 (100GE)
+            * `200gbase-x-qsfp56` - QSFP56 (200GE)
+            * `400gbase-x-qsfpdd` - QSFP-DD (400GE)
+            * `400gbase-x-osfp` - OSFP (400GE)
+            * `800gbase-x-qsfpdd` - QSFP-DD (800GE)
+            * `800gbase-x-osfp` - OSFP (800GE)
+            * `1000base-kx` - 1000BASE-KX (1GE)
+            * `10gbase-kr` - 10GBASE-KR (10GE)
+            * `10gbase-kx4` - 10GBASE-KX4 (10GE)
+            * `25gbase-kr` - 25GBASE-KR (25GE)
+            * `40gbase-kr4` - 40GBASE-KR4 (40GE)
+            * `50gbase-kr` - 50GBASE-KR (50GE)
+            * `100gbase-kp4` - 100GBASE-KP4 (100GE)
+            * `100gbase-kr2` - 100GBASE-KR2 (100GE)
+            * `100gbase-kr4` - 100GBASE-KR4 (100GE)
+            * `ieee802.11a` - IEEE 802.11a
+            * `ieee802.11g` - IEEE 802.11b/g
+            * `ieee802.11n` - IEEE 802.11n
+            * `ieee802.11ac` - IEEE 802.11ac
+            * `ieee802.11ad` - IEEE 802.11ad
+            * `ieee802.11ax` - IEEE 802.11ax
+            * `ieee802.11ay` - IEEE 802.11ay
+            * `ieee802.15.1` - IEEE 802.15.1 (Bluetooth)
+            * `other-wireless` - Other (Wireless)
+            * `gsm` - GSM
+            * `cdma` - CDMA
+            * `lte` - LTE
+            * `sonet-oc3` - OC-3/STM-1
+            * `sonet-oc12` - OC-12/STM-4
+            * `sonet-oc48` - OC-48/STM-16
+            * `sonet-oc192` - OC-192/STM-64
+            * `sonet-oc768` - OC-768/STM-256
+            * `sonet-oc1920` - OC-1920/STM-640
+            * `sonet-oc3840` - OC-3840/STM-1234
+            * `1gfc-sfp` - SFP (1GFC)
+            * `2gfc-sfp` - SFP (2GFC)
+            * `4gfc-sfp` - SFP (4GFC)
+            * `8gfc-sfpp` - SFP+ (8GFC)
+            * `16gfc-sfpp` - SFP+ (16GFC)
+            * `32gfc-sfp28` - SFP28 (32GFC)
+            * `64gfc-qsfpp` - QSFP+ (64GFC)
+            * `128gfc-qsfp28` - QSFP28 (128GFC)
+            * `infiniband-sdr` - SDR (2 Gbps)
+            * `infiniband-ddr` - DDR (4 Gbps)
+            * `infiniband-qdr` - QDR (8 Gbps)
+            * `infiniband-fdr10` - FDR10 (10 Gbps)
+            * `infiniband-fdr` - FDR (13.5 Gbps)
+            * `infiniband-edr` - EDR (25 Gbps)
+            * `infiniband-hdr` - HDR (50 Gbps)
+            * `infiniband-ndr` - NDR (100 Gbps)
+            * `infiniband-xdr` - XDR (250 Gbps)
+            * `t1` - T1 (1.544 Mbps)
+            * `e1` - E1 (2.048 Mbps)
+            * `t3` - T3 (45 Mbps)
+            * `e3` - E3 (34 Mbps)
+            * `xdsl` - xDSL
+            * `docsis` - DOCSIS
+            * `gpon` - GPON (2.5 Gbps / 1.25 Gps)
+            * `xg-pon` - XG-PON (10 Gbps / 2.5 Gbps)
+            * `xgs-pon` - XGS-PON (10 Gbps)
+            * `ng-pon2` - NG-PON2 (TWDM-PON) (4x10 Gbps)
+            * `epon` - EPON (1 Gbps)
+            * `10g-epon` - 10G-EPON (10 Gbps)
+            * `cisco-stackwise` - Cisco StackWise
+            * `cisco-stackwise-plus` - Cisco StackWise Plus
+            * `cisco-flexstack` - Cisco FlexStack
+            * `cisco-flexstack-plus` - Cisco FlexStack Plus
+            * `cisco-stackwise-80` - Cisco StackWise-80
+            * `cisco-stackwise-160` - Cisco StackWise-160
+            * `cisco-stackwise-320` - Cisco StackWise-320
+            * `cisco-stackwise-480` - Cisco StackWise-480
+            * `cisco-stackwise-1t` - Cisco StackWise-1T
+            * `juniper-vcp` - Juniper VCP
+            * `extreme-summitstack` - Extreme SummitStack
+            * `extreme-summitstack-128` - Extreme SummitStack-128
+            * `extreme-summitstack-256` - Extreme SummitStack-256
+            * `extreme-summitstack-512` - Extreme SummitStack-512
+            * `other` - Other
+        enabled:
+          type: boolean
+        parent:
+          type: integer
+          nullable: true
+          title: Parent interface
+        bridge:
+          type: integer
+          nullable: true
+          title: Bridge interface
+        lag:
+          type: integer
+          nullable: true
+          title: Parent LAG
+        mtu:
+          type: integer
+          maximum: 65536
+          minimum: 1
+          nullable: true
+        mac_address:
+          type: string
+          nullable: true
+          minLength: 1
+        speed:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          title: Speed (Kbps)
+        duplex:
+          enum:
+          - half
+          - full
+          - auto
+          - ''
+          - null
+          type: string
+          description: |-
+            * `half` - Half
+            * `full` - Full
+            * `auto` - Auto
+          nullable: true
+        wwn:
+          type: string
+          minLength: 1
+        mgmt_only:
+          type: boolean
+          title: Management only
+          description: This interface is used only for out-of-band management
+        description:
+          type: string
+          maxLength: 200
+        mode:
+          enum:
+          - access
+          - tagged
+          - tagged-all
+          - ''
+          type: string
+          description: |-
+            IEEE 802.1Q tagging strategy
+
+            * `access` - Access
+            * `tagged` - Tagged
+            * `tagged-all` - Tagged (All)
+        rf_role:
+          enum:
+          - ap
+          - station
+          - ''
+          type: string
+          description: |-
+            * `ap` - Access point
+            * `station` - Station
+          title: Wireless role
+        rf_channel:
+          enum:
+          - 2.4g-1-2412-22
+          - 2.4g-2-2417-22
+          - 2.4g-3-2422-22
+          - 2.4g-4-2427-22
+          - 2.4g-5-2432-22
+          - 2.4g-6-2437-22
+          - 2.4g-7-2442-22
+          - 2.4g-8-2447-22
+          - 2.4g-9-2452-22
+          - 2.4g-10-2457-22
+          - 2.4g-11-2462-22
+          - 2.4g-12-2467-22
+          - 2.4g-13-2472-22
+          - 5g-32-5160-20
+          - 5g-34-5170-40
+          - 5g-36-5180-20
+          - 5g-38-5190-40
+          - 5g-40-5200-20
+          - 5g-42-5210-80
+          - 5g-44-5220-20
+          - 5g-46-5230-40
+          - 5g-48-5240-20
+          - 5g-50-5250-160
+          - 5g-52-5260-20
+          - 5g-54-5270-40
+          - 5g-56-5280-20
+          - 5g-58-5290-80
+          - 5g-60-5300-20
+          - 5g-62-5310-40
+          - 5g-64-5320-20
+          - 5g-100-5500-20
+          - 5g-102-5510-40
+          - 5g-104-5520-20
+          - 5g-106-5530-80
+          - 5g-108-5540-20
+          - 5g-110-5550-40
+          - 5g-112-5560-20
+          - 5g-114-5570-160
+          - 5g-116-5580-20
+          - 5g-118-5590-40
+          - 5g-120-5600-20
+          - 5g-122-5610-80
+          - 5g-124-5620-20
+          - 5g-126-5630-40
+          - 5g-128-5640-20
+          - 5g-132-5660-20
+          - 5g-134-5670-40
+          - 5g-136-5680-20
+          - 5g-138-5690-80
+          - 5g-140-5700-20
+          - 5g-142-5710-40
+          - 5g-144-5720-20
+          - 5g-149-5745-20
+          - 5g-151-5755-40
+          - 5g-153-5765-20
+          - 5g-155-5775-80
+          - 5g-157-5785-20
+          - 5g-159-5795-40
+          - 5g-161-5805-20
+          - 5g-163-5815-160
+          - 5g-165-5825-20
+          - 5g-167-5835-40
+          - 5g-169-5845-20
+          - 5g-171-5855-80
+          - 5g-173-5865-20
+          - 5g-175-5875-40
+          - 5g-177-5885-20
+          - 6g-1-5955-20
+          - 6g-3-5965-40
+          - 6g-5-5975-20
+          - 6g-7-5985-80
+          - 6g-9-5995-20
+          - 6g-11-6005-40
+          - 6g-13-6015-20
+          - 6g-15-6025-160
+          - 6g-17-6035-20
+          - 6g-19-6045-40
+          - 6g-21-6055-20
+          - 6g-23-6065-80
+          - 6g-25-6075-20
+          - 6g-27-6085-40
+          - 6g-29-6095-20
+          - 6g-31-6105-320
+          - 6g-33-6115-20
+          - 6g-35-6125-40
+          - 6g-37-6135-20
+          - 6g-39-6145-80
+          - 6g-41-6155-20
+          - 6g-43-6165-40
+          - 6g-45-6175-20
+          - 6g-47-6185-160
+          - 6g-49-6195-20
+          - 6g-51-6205-40
+          - 6g-53-6215-20
+          - 6g-55-6225-80
+          - 6g-57-6235-20
+          - 6g-59-6245-40
+          - 6g-61-6255-20
+          - 6g-65-6275-20
+          - 6g-67-6285-40
+          - 6g-69-6295-20
+          - 6g-71-6305-80
+          - 6g-73-6315-20
+          - 6g-75-6325-40
+          - 6g-77-6335-20
+          - 6g-79-6345-160
+          - 6g-81-6355-20
+          - 6g-83-6365-40
+          - 6g-85-6375-20
+          - 6g-87-6385-80
+          - 6g-89-6395-20
+          - 6g-91-6405-40
+          - 6g-93-6415-20
+          - 6g-95-6425-320
+          - 6g-97-6435-20
+          - 6g-99-6445-40
+          - 6g-101-6455-20
+          - 6g-103-6465-80
+          - 6g-105-6475-20
+          - 6g-107-6485-40
+          - 6g-109-6495-20
+          - 6g-111-6505-160
+          - 6g-113-6515-20
+          - 6g-115-6525-40
+          - 6g-117-6535-20
+          - 6g-119-6545-80
+          - 6g-121-6555-20
+          - 6g-123-6565-40
+          - 6g-125-6575-20
+          - 6g-129-6595-20
+          - 6g-131-6605-40
+          - 6g-133-6615-20
+          - 6g-135-6625-80
+          - 6g-137-6635-20
+          - 6g-139-6645-40
+          - 6g-141-6655-20
+          - 6g-143-6665-160
+          - 6g-145-6675-20
+          - 6g-147-6685-40
+          - 6g-149-6695-20
+          - 6g-151-6705-80
+          - 6g-153-6715-20
+          - 6g-155-6725-40
+          - 6g-157-6735-20
+          - 6g-159-6745-320
+          - 6g-161-6755-20
+          - 6g-163-6765-40
+          - 6g-165-6775-20
+          - 6g-167-6785-80
+          - 6g-169-6795-20
+          - 6g-171-6805-40
+          - 6g-173-6815-20
+          - 6g-175-6825-160
+          - 6g-177-6835-20
+          - 6g-179-6845-40
+          - 6g-181-6855-20
+          - 6g-183-6865-80
+          - 6g-185-6875-20
+          - 6g-187-6885-40
+          - 6g-189-6895-20
+          - 6g-193-6915-20
+          - 6g-195-6925-40
+          - 6g-197-6935-20
+          - 6g-199-6945-80
+          - 6g-201-6955-20
+          - 6g-203-6965-40
+          - 6g-205-6975-20
+          - 6g-207-6985-160
+          - 6g-209-6995-20
+          - 6g-211-7005-40
+          - 6g-213-7015-20
+          - 6g-215-7025-80
+          - 6g-217-7035-20
+          - 6g-219-7045-40
+          - 6g-221-7055-20
+          - 6g-225-7075-20
+          - 6g-227-7085-40
+          - 6g-229-7095-20
+          - 6g-233-7115-20
+          - 60g-1-58320-2160
+          - 60g-2-60480-2160
+          - 60g-3-62640-2160
+          - 60g-4-64800-2160
+          - 60g-5-66960-2160
+          - 60g-6-69120-2160
+          - 60g-9-59400-4320
+          - 60g-10-61560-4320
+          - 60g-11-63720-4320
+          - 60g-12-65880-4320
+          - 60g-13-68040-4320
+          - 60g-17-60480-6480
+          - 60g-18-62640-6480
+          - 60g-19-64800-6480
+          - 60g-20-66960-6480
+          - 60g-25-61560-6480
+          - 60g-26-63720-6480
+          - 60g-27-65880-6480
+          - ''
+          type: string
+          description: |-
+            * `2.4g-1-2412-22` - 1 (2412 MHz)
+            * `2.4g-2-2417-22` - 2 (2417 MHz)
+            * `2.4g-3-2422-22` - 3 (2422 MHz)
+            * `2.4g-4-2427-22` - 4 (2427 MHz)
+            * `2.4g-5-2432-22` - 5 (2432 MHz)
+            * `2.4g-6-2437-22` - 6 (2437 MHz)
+            * `2.4g-7-2442-22` - 7 (2442 MHz)
+            * `2.4g-8-2447-22` - 8 (2447 MHz)
+            * `2.4g-9-2452-22` - 9 (2452 MHz)
+            * `2.4g-10-2457-22` - 10 (2457 MHz)
+            * `2.4g-11-2462-22` - 11 (2462 MHz)
+            * `2.4g-12-2467-22` - 12 (2467 MHz)
+            * `2.4g-13-2472-22` - 13 (2472 MHz)
+            * `5g-32-5160-20` - 32 (5160/20 MHz)
+            * `5g-34-5170-40` - 34 (5170/40 MHz)
+            * `5g-36-5180-20` - 36 (5180/20 MHz)
+            * `5g-38-5190-40` - 38 (5190/40 MHz)
+            * `5g-40-5200-20` - 40 (5200/20 MHz)
+            * `5g-42-5210-80` - 42 (5210/80 MHz)
+            * `5g-44-5220-20` - 44 (5220/20 MHz)
+            * `5g-46-5230-40` - 46 (5230/40 MHz)
+            * `5g-48-5240-20` - 48 (5240/20 MHz)
+            * `5g-50-5250-160` - 50 (5250/160 MHz)
+            * `5g-52-5260-20` - 52 (5260/20 MHz)
+            * `5g-54-5270-40` - 54 (5270/40 MHz)
+            * `5g-56-5280-20` - 56 (5280/20 MHz)
+            * `5g-58-5290-80` - 58 (5290/80 MHz)
+            * `5g-60-5300-20` - 60 (5300/20 MHz)
+            * `5g-62-5310-40` - 62 (5310/40 MHz)
+            * `5g-64-5320-20` - 64 (5320/20 MHz)
+            * `5g-100-5500-20` - 100 (5500/20 MHz)
+            * `5g-102-5510-40` - 102 (5510/40 MHz)
+            * `5g-104-5520-20` - 104 (5520/20 MHz)
+            * `5g-106-5530-80` - 106 (5530/80 MHz)
+            * `5g-108-5540-20` - 108 (5540/20 MHz)
+            * `5g-110-5550-40` - 110 (5550/40 MHz)
+            * `5g-112-5560-20` - 112 (5560/20 MHz)
+            * `5g-114-5570-160` - 114 (5570/160 MHz)
+            * `5g-116-5580-20` - 116 (5580/20 MHz)
+            * `5g-118-5590-40` - 118 (5590/40 MHz)
+            * `5g-120-5600-20` - 120 (5600/20 MHz)
+            * `5g-122-5610-80` - 122 (5610/80 MHz)
+            * `5g-124-5620-20` - 124 (5620/20 MHz)
+            * `5g-126-5630-40` - 126 (5630/40 MHz)
+            * `5g-128-5640-20` - 128 (5640/20 MHz)
+            * `5g-132-5660-20` - 132 (5660/20 MHz)
+            * `5g-134-5670-40` - 134 (5670/40 MHz)
+            * `5g-136-5680-20` - 136 (5680/20 MHz)
+            * `5g-138-5690-80` - 138 (5690/80 MHz)
+            * `5g-140-5700-20` - 140 (5700/20 MHz)
+            * `5g-142-5710-40` - 142 (5710/40 MHz)
+            * `5g-144-5720-20` - 144 (5720/20 MHz)
+            * `5g-149-5745-20` - 149 (5745/20 MHz)
+            * `5g-151-5755-40` - 151 (5755/40 MHz)
+            * `5g-153-5765-20` - 153 (5765/20 MHz)
+            * `5g-155-5775-80` - 155 (5775/80 MHz)
+            * `5g-157-5785-20` - 157 (5785/20 MHz)
+            * `5g-159-5795-40` - 159 (5795/40 MHz)
+            * `5g-161-5805-20` - 161 (5805/20 MHz)
+            * `5g-163-5815-160` - 163 (5815/160 MHz)
+            * `5g-165-5825-20` - 165 (5825/20 MHz)
+            * `5g-167-5835-40` - 167 (5835/40 MHz)
+            * `5g-169-5845-20` - 169 (5845/20 MHz)
+            * `5g-171-5855-80` - 171 (5855/80 MHz)
+            * `5g-173-5865-20` - 173 (5865/20 MHz)
+            * `5g-175-5875-40` - 175 (5875/40 MHz)
+            * `5g-177-5885-20` - 177 (5885/20 MHz)
+            * `6g-1-5955-20` - 1 (5955/20 MHz)
+            * `6g-3-5965-40` - 3 (5965/40 MHz)
+            * `6g-5-5975-20` - 5 (5975/20 MHz)
+            * `6g-7-5985-80` - 7 (5985/80 MHz)
+            * `6g-9-5995-20` - 9 (5995/20 MHz)
+            * `6g-11-6005-40` - 11 (6005/40 MHz)
+            * `6g-13-6015-20` - 13 (6015/20 MHz)
+            * `6g-15-6025-160` - 15 (6025/160 MHz)
+            * `6g-17-6035-20` - 17 (6035/20 MHz)
+            * `6g-19-6045-40` - 19 (6045/40 MHz)
+            * `6g-21-6055-20` - 21 (6055/20 MHz)
+            * `6g-23-6065-80` - 23 (6065/80 MHz)
+            * `6g-25-6075-20` - 25 (6075/20 MHz)
+            * `6g-27-6085-40` - 27 (6085/40 MHz)
+            * `6g-29-6095-20` - 29 (6095/20 MHz)
+            * `6g-31-6105-320` - 31 (6105/320 MHz)
+            * `6g-33-6115-20` - 33 (6115/20 MHz)
+            * `6g-35-6125-40` - 35 (6125/40 MHz)
+            * `6g-37-6135-20` - 37 (6135/20 MHz)
+            * `6g-39-6145-80` - 39 (6145/80 MHz)
+            * `6g-41-6155-20` - 41 (6155/20 MHz)
+            * `6g-43-6165-40` - 43 (6165/40 MHz)
+            * `6g-45-6175-20` - 45 (6175/20 MHz)
+            * `6g-47-6185-160` - 47 (6185/160 MHz)
+            * `6g-49-6195-20` - 49 (6195/20 MHz)
+            * `6g-51-6205-40` - 51 (6205/40 MHz)
+            * `6g-53-6215-20` - 53 (6215/20 MHz)
+            * `6g-55-6225-80` - 55 (6225/80 MHz)
+            * `6g-57-6235-20` - 57 (6235/20 MHz)
+            * `6g-59-6245-40` - 59 (6245/40 MHz)
+            * `6g-61-6255-20` - 61 (6255/20 MHz)
+            * `6g-65-6275-20` - 65 (6275/20 MHz)
+            * `6g-67-6285-40` - 67 (6285/40 MHz)
+            * `6g-69-6295-20` - 69 (6295/20 MHz)
+            * `6g-71-6305-80` - 71 (6305/80 MHz)
+            * `6g-73-6315-20` - 73 (6315/20 MHz)
+            * `6g-75-6325-40` - 75 (6325/40 MHz)
+            * `6g-77-6335-20` - 77 (6335/20 MHz)
+            * `6g-79-6345-160` - 79 (6345/160 MHz)
+            * `6g-81-6355-20` - 81 (6355/20 MHz)
+            * `6g-83-6365-40` - 83 (6365/40 MHz)
+            * `6g-85-6375-20` - 85 (6375/20 MHz)
+            * `6g-87-6385-80` - 87 (6385/80 MHz)
+            * `6g-89-6395-20` - 89 (6395/20 MHz)
+            * `6g-91-6405-40` - 91 (6405/40 MHz)
+            * `6g-93-6415-20` - 93 (6415/20 MHz)
+            * `6g-95-6425-320` - 95 (6425/320 MHz)
+            * `6g-97-6435-20` - 97 (6435/20 MHz)
+            * `6g-99-6445-40` - 99 (6445/40 MHz)
+            * `6g-101-6455-20` - 101 (6455/20 MHz)
+            * `6g-103-6465-80` - 103 (6465/80 MHz)
+            * `6g-105-6475-20` - 105 (6475/20 MHz)
+            * `6g-107-6485-40` - 107 (6485/40 MHz)
+            * `6g-109-6495-20` - 109 (6495/20 MHz)
+            * `6g-111-6505-160` - 111 (6505/160 MHz)
+            * `6g-113-6515-20` - 113 (6515/20 MHz)
+            * `6g-115-6525-40` - 115 (6525/40 MHz)
+            * `6g-117-6535-20` - 117 (6535/20 MHz)
+            * `6g-119-6545-80` - 119 (6545/80 MHz)
+            * `6g-121-6555-20` - 121 (6555/20 MHz)
+            * `6g-123-6565-40` - 123 (6565/40 MHz)
+            * `6g-125-6575-20` - 125 (6575/20 MHz)
+            * `6g-129-6595-20` - 129 (6595/20 MHz)
+            * `6g-131-6605-40` - 131 (6605/40 MHz)
+            * `6g-133-6615-20` - 133 (6615/20 MHz)
+            * `6g-135-6625-80` - 135 (6625/80 MHz)
+            * `6g-137-6635-20` - 137 (6635/20 MHz)
+            * `6g-139-6645-40` - 139 (6645/40 MHz)
+            * `6g-141-6655-20` - 141 (6655/20 MHz)
+            * `6g-143-6665-160` - 143 (6665/160 MHz)
+            * `6g-145-6675-20` - 145 (6675/20 MHz)
+            * `6g-147-6685-40` - 147 (6685/40 MHz)
+            * `6g-149-6695-20` - 149 (6695/20 MHz)
+            * `6g-151-6705-80` - 151 (6705/80 MHz)
+            * `6g-153-6715-20` - 153 (6715/20 MHz)
+            * `6g-155-6725-40` - 155 (6725/40 MHz)
+            * `6g-157-6735-20` - 157 (6735/20 MHz)
+            * `6g-159-6745-320` - 159 (6745/320 MHz)
+            * `6g-161-6755-20` - 161 (6755/20 MHz)
+            * `6g-163-6765-40` - 163 (6765/40 MHz)
+            * `6g-165-6775-20` - 165 (6775/20 MHz)
+            * `6g-167-6785-80` - 167 (6785/80 MHz)
+            * `6g-169-6795-20` - 169 (6795/20 MHz)
+            * `6g-171-6805-40` - 171 (6805/40 MHz)
+            * `6g-173-6815-20` - 173 (6815/20 MHz)
+            * `6g-175-6825-160` - 175 (6825/160 MHz)
+            * `6g-177-6835-20` - 177 (6835/20 MHz)
+            * `6g-179-6845-40` - 179 (6845/40 MHz)
+            * `6g-181-6855-20` - 181 (6855/20 MHz)
+            * `6g-183-6865-80` - 183 (6865/80 MHz)
+            * `6g-185-6875-20` - 185 (6875/20 MHz)
+            * `6g-187-6885-40` - 187 (6885/40 MHz)
+            * `6g-189-6895-20` - 189 (6895/20 MHz)
+            * `6g-193-6915-20` - 193 (6915/20 MHz)
+            * `6g-195-6925-40` - 195 (6925/40 MHz)
+            * `6g-197-6935-20` - 197 (6935/20 MHz)
+            * `6g-199-6945-80` - 199 (6945/80 MHz)
+            * `6g-201-6955-20` - 201 (6955/20 MHz)
+            * `6g-203-6965-40` - 203 (6965/40 MHz)
+            * `6g-205-6975-20` - 205 (6975/20 MHz)
+            * `6g-207-6985-160` - 207 (6985/160 MHz)
+            * `6g-209-6995-20` - 209 (6995/20 MHz)
+            * `6g-211-7005-40` - 211 (7005/40 MHz)
+            * `6g-213-7015-20` - 213 (7015/20 MHz)
+            * `6g-215-7025-80` - 215 (7025/80 MHz)
+            * `6g-217-7035-20` - 217 (7035/20 MHz)
+            * `6g-219-7045-40` - 219 (7045/40 MHz)
+            * `6g-221-7055-20` - 221 (7055/20 MHz)
+            * `6g-225-7075-20` - 225 (7075/20 MHz)
+            * `6g-227-7085-40` - 227 (7085/40 MHz)
+            * `6g-229-7095-20` - 229 (7095/20 MHz)
+            * `6g-233-7115-20` - 233 (7115/20 MHz)
+            * `60g-1-58320-2160` - 1 (58.32/2.16 GHz)
+            * `60g-2-60480-2160` - 2 (60.48/2.16 GHz)
+            * `60g-3-62640-2160` - 3 (62.64/2.16 GHz)
+            * `60g-4-64800-2160` - 4 (64.80/2.16 GHz)
+            * `60g-5-66960-2160` - 5 (66.96/2.16 GHz)
+            * `60g-6-69120-2160` - 6 (69.12/2.16 GHz)
+            * `60g-9-59400-4320` - 9 (59.40/4.32 GHz)
+            * `60g-10-61560-4320` - 10 (61.56/4.32 GHz)
+            * `60g-11-63720-4320` - 11 (63.72/4.32 GHz)
+            * `60g-12-65880-4320` - 12 (65.88/4.32 GHz)
+            * `60g-13-68040-4320` - 13 (68.04/4.32 GHz)
+            * `60g-17-60480-6480` - 17 (60.48/6.48 GHz)
+            * `60g-18-62640-6480` - 18 (62.64/6.48 GHz)
+            * `60g-19-64800-6480` - 19 (64.80/6.48 GHz)
+            * `60g-20-66960-6480` - 20 (66.96/6.48 GHz)
+            * `60g-25-61560-6480` - 25 (61.56/8.64 GHz)
+            * `60g-26-63720-6480` - 26 (63.72/8.64 GHz)
+            * `60g-27-65880-6480` - 27 (65.88/8.64 GHz)
+          title: Wireless channel
+        poe_mode:
+          enum:
+          - pd
+          - pse
+          - ''
+          type: string
+          description: |-
+            * `pd` - PD
+            * `pse` - PSE
+        poe_type:
+          enum:
+          - type1-ieee802.3af
+          - type2-ieee802.3at
+          - type3-ieee802.3bt
+          - type4-ieee802.3bt
+          - passive-24v-2pair
+          - passive-24v-4pair
+          - passive-48v-2pair
+          - passive-48v-4pair
+          - ''
+          type: string
+          description: |-
+            * `type1-ieee802.3af` - 802.3af (Type 1)
+            * `type2-ieee802.3at` - 802.3at (Type 2)
+            * `type3-ieee802.3bt` - 802.3bt (Type 3)
+            * `type4-ieee802.3bt` - 802.3bt (Type 4)
+            * `passive-24v-2pair` - Passive 24V (2-pair)
+            * `passive-24v-4pair` - Passive 24V (4-pair)
+            * `passive-48v-2pair` - Passive 48V (2-pair)
+            * `passive-48v-4pair` - Passive 48V (4-pair)
+        rf_channel_frequency:
+          type: number
+          format: double
+          maximum: 100000
+          minimum: -100000
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+          title: Channel frequency (MHz)
+          description: Populated by selected channel (if set)
+        rf_channel_width:
+          type: number
+          format: double
+          maximum: 10000
+          minimum: -10000
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+          title: Channel width (MHz)
+          description: Populated by selected channel (if set)
+        tx_power:
+          type: integer
+          maximum: 127
+          minimum: 0
+          nullable: true
+          title: Transmit power (dBm)
+        untagged_vlan:
+          type: integer
+          nullable: true
+        tagged_vlans:
+          type: array
+          items:
+            type: integer
+            title: Tagged VLANs
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        wireless_lans:
+          type: array
+          items:
+            type: integer
+            title: Wireless LANs
+        vrf:
+          type: integer
+          nullable: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableInterfaceTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          type: integer
+          nullable: true
+        module_type:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - virtual
+          - bridge
+          - lag
+          - 100base-fx
+          - 100base-lfx
+          - 100base-tx
+          - 100base-t1
+          - 1000base-t
+          - 2.5gbase-t
+          - 5gbase-t
+          - 10gbase-t
+          - 10gbase-cx4
+          - 1000base-x-gbic
+          - 1000base-x-sfp
+          - 10gbase-x-sfpp
+          - 10gbase-x-xfp
+          - 10gbase-x-xenpak
+          - 10gbase-x-x2
+          - 25gbase-x-sfp28
+          - 50gbase-x-sfp56
+          - 40gbase-x-qsfpp
+          - 50gbase-x-sfp28
+          - 100gbase-x-cfp
+          - 100gbase-x-cfp2
+          - 200gbase-x-cfp2
+          - 100gbase-x-cfp4
+          - 100gbase-x-cpak
+          - 100gbase-x-qsfp28
+          - 200gbase-x-qsfp56
+          - 400gbase-x-qsfpdd
+          - 400gbase-x-osfp
+          - 800gbase-x-qsfpdd
+          - 800gbase-x-osfp
+          - 1000base-kx
+          - 10gbase-kr
+          - 10gbase-kx4
+          - 25gbase-kr
+          - 40gbase-kr4
+          - 50gbase-kr
+          - 100gbase-kp4
+          - 100gbase-kr2
+          - 100gbase-kr4
+          - ieee802.11a
+          - ieee802.11g
+          - ieee802.11n
+          - ieee802.11ac
+          - ieee802.11ad
+          - ieee802.11ax
+          - ieee802.11ay
+          - ieee802.15.1
+          - other-wireless
+          - gsm
+          - cdma
+          - lte
+          - sonet-oc3
+          - sonet-oc12
+          - sonet-oc48
+          - sonet-oc192
+          - sonet-oc768
+          - sonet-oc1920
+          - sonet-oc3840
+          - 1gfc-sfp
+          - 2gfc-sfp
+          - 4gfc-sfp
+          - 8gfc-sfpp
+          - 16gfc-sfpp
+          - 32gfc-sfp28
+          - 64gfc-qsfpp
+          - 128gfc-qsfp28
+          - infiniband-sdr
+          - infiniband-ddr
+          - infiniband-qdr
+          - infiniband-fdr10
+          - infiniband-fdr
+          - infiniband-edr
+          - infiniband-hdr
+          - infiniband-ndr
+          - infiniband-xdr
+          - t1
+          - e1
+          - t3
+          - e3
+          - xdsl
+          - docsis
+          - gpon
+          - xg-pon
+          - xgs-pon
+          - ng-pon2
+          - epon
+          - 10g-epon
+          - cisco-stackwise
+          - cisco-stackwise-plus
+          - cisco-flexstack
+          - cisco-flexstack-plus
+          - cisco-stackwise-80
+          - cisco-stackwise-160
+          - cisco-stackwise-320
+          - cisco-stackwise-480
+          - cisco-stackwise-1t
+          - juniper-vcp
+          - extreme-summitstack
+          - extreme-summitstack-128
+          - extreme-summitstack-256
+          - extreme-summitstack-512
+          - other
+          type: string
+          description: |-
+            * `virtual` - Virtual
+            * `bridge` - Bridge
+            * `lag` - Link Aggregation Group (LAG)
+            * `100base-fx` - 100BASE-FX (10/100ME FIBER)
+            * `100base-lfx` - 100BASE-LFX (10/100ME FIBER)
+            * `100base-tx` - 100BASE-TX (10/100ME)
+            * `100base-t1` - 100BASE-T1 (10/100ME Single Pair)
+            * `1000base-t` - 1000BASE-T (1GE)
+            * `2.5gbase-t` - 2.5GBASE-T (2.5GE)
+            * `5gbase-t` - 5GBASE-T (5GE)
+            * `10gbase-t` - 10GBASE-T (10GE)
+            * `10gbase-cx4` - 10GBASE-CX4 (10GE)
+            * `1000base-x-gbic` - GBIC (1GE)
+            * `1000base-x-sfp` - SFP (1GE)
+            * `10gbase-x-sfpp` - SFP+ (10GE)
+            * `10gbase-x-xfp` - XFP (10GE)
+            * `10gbase-x-xenpak` - XENPAK (10GE)
+            * `10gbase-x-x2` - X2 (10GE)
+            * `25gbase-x-sfp28` - SFP28 (25GE)
+            * `50gbase-x-sfp56` - SFP56 (50GE)
+            * `40gbase-x-qsfpp` - QSFP+ (40GE)
+            * `50gbase-x-sfp28` - QSFP28 (50GE)
+            * `100gbase-x-cfp` - CFP (100GE)
+            * `100gbase-x-cfp2` - CFP2 (100GE)
+            * `200gbase-x-cfp2` - CFP2 (200GE)
+            * `100gbase-x-cfp4` - CFP4 (100GE)
+            * `100gbase-x-cpak` - Cisco CPAK (100GE)
+            * `100gbase-x-qsfp28` - QSFP28 (100GE)
+            * `200gbase-x-qsfp56` - QSFP56 (200GE)
+            * `400gbase-x-qsfpdd` - QSFP-DD (400GE)
+            * `400gbase-x-osfp` - OSFP (400GE)
+            * `800gbase-x-qsfpdd` - QSFP-DD (800GE)
+            * `800gbase-x-osfp` - OSFP (800GE)
+            * `1000base-kx` - 1000BASE-KX (1GE)
+            * `10gbase-kr` - 10GBASE-KR (10GE)
+            * `10gbase-kx4` - 10GBASE-KX4 (10GE)
+            * `25gbase-kr` - 25GBASE-KR (25GE)
+            * `40gbase-kr4` - 40GBASE-KR4 (40GE)
+            * `50gbase-kr` - 50GBASE-KR (50GE)
+            * `100gbase-kp4` - 100GBASE-KP4 (100GE)
+            * `100gbase-kr2` - 100GBASE-KR2 (100GE)
+            * `100gbase-kr4` - 100GBASE-KR4 (100GE)
+            * `ieee802.11a` - IEEE 802.11a
+            * `ieee802.11g` - IEEE 802.11b/g
+            * `ieee802.11n` - IEEE 802.11n
+            * `ieee802.11ac` - IEEE 802.11ac
+            * `ieee802.11ad` - IEEE 802.11ad
+            * `ieee802.11ax` - IEEE 802.11ax
+            * `ieee802.11ay` - IEEE 802.11ay
+            * `ieee802.15.1` - IEEE 802.15.1 (Bluetooth)
+            * `other-wireless` - Other (Wireless)
+            * `gsm` - GSM
+            * `cdma` - CDMA
+            * `lte` - LTE
+            * `sonet-oc3` - OC-3/STM-1
+            * `sonet-oc12` - OC-12/STM-4
+            * `sonet-oc48` - OC-48/STM-16
+            * `sonet-oc192` - OC-192/STM-64
+            * `sonet-oc768` - OC-768/STM-256
+            * `sonet-oc1920` - OC-1920/STM-640
+            * `sonet-oc3840` - OC-3840/STM-1234
+            * `1gfc-sfp` - SFP (1GFC)
+            * `2gfc-sfp` - SFP (2GFC)
+            * `4gfc-sfp` - SFP (4GFC)
+            * `8gfc-sfpp` - SFP+ (8GFC)
+            * `16gfc-sfpp` - SFP+ (16GFC)
+            * `32gfc-sfp28` - SFP28 (32GFC)
+            * `64gfc-qsfpp` - QSFP+ (64GFC)
+            * `128gfc-qsfp28` - QSFP28 (128GFC)
+            * `infiniband-sdr` - SDR (2 Gbps)
+            * `infiniband-ddr` - DDR (4 Gbps)
+            * `infiniband-qdr` - QDR (8 Gbps)
+            * `infiniband-fdr10` - FDR10 (10 Gbps)
+            * `infiniband-fdr` - FDR (13.5 Gbps)
+            * `infiniband-edr` - EDR (25 Gbps)
+            * `infiniband-hdr` - HDR (50 Gbps)
+            * `infiniband-ndr` - NDR (100 Gbps)
+            * `infiniband-xdr` - XDR (250 Gbps)
+            * `t1` - T1 (1.544 Mbps)
+            * `e1` - E1 (2.048 Mbps)
+            * `t3` - T3 (45 Mbps)
+            * `e3` - E3 (34 Mbps)
+            * `xdsl` - xDSL
+            * `docsis` - DOCSIS
+            * `gpon` - GPON (2.5 Gbps / 1.25 Gps)
+            * `xg-pon` - XG-PON (10 Gbps / 2.5 Gbps)
+            * `xgs-pon` - XGS-PON (10 Gbps)
+            * `ng-pon2` - NG-PON2 (TWDM-PON) (4x10 Gbps)
+            * `epon` - EPON (1 Gbps)
+            * `10g-epon` - 10G-EPON (10 Gbps)
+            * `cisco-stackwise` - Cisco StackWise
+            * `cisco-stackwise-plus` - Cisco StackWise Plus
+            * `cisco-flexstack` - Cisco FlexStack
+            * `cisco-flexstack-plus` - Cisco FlexStack Plus
+            * `cisco-stackwise-80` - Cisco StackWise-80
+            * `cisco-stackwise-160` - Cisco StackWise-160
+            * `cisco-stackwise-320` - Cisco StackWise-320
+            * `cisco-stackwise-480` - Cisco StackWise-480
+            * `cisco-stackwise-1t` - Cisco StackWise-1T
+            * `juniper-vcp` - Juniper VCP
+            * `extreme-summitstack` - Extreme SummitStack
+            * `extreme-summitstack-128` - Extreme SummitStack-128
+            * `extreme-summitstack-256` - Extreme SummitStack-256
+            * `extreme-summitstack-512` - Extreme SummitStack-512
+            * `other` - Other
+        enabled:
+          type: boolean
+        mgmt_only:
+          type: boolean
+          title: Management only
+        description:
+          type: string
+          maxLength: 200
+        bridge:
+          type: integer
+          nullable: true
+          title: Bridge interface
+        poe_mode:
+          enum:
+          - pd
+          - pse
+          - ''
+          type: string
+          description: |-
+            * `pd` - PD
+            * `pse` - PSE
+        poe_type:
+          enum:
+          - type1-ieee802.3af
+          - type2-ieee802.3at
+          - type3-ieee802.3bt
+          - type4-ieee802.3bt
+          - passive-24v-2pair
+          - passive-24v-4pair
+          - passive-48v-2pair
+          - passive-48v-4pair
+          - ''
+          type: string
+          description: |-
+            * `type1-ieee802.3af` - 802.3af (Type 1)
+            * `type2-ieee802.3at` - 802.3at (Type 2)
+            * `type3-ieee802.3bt` - 802.3bt (Type 3)
+            * `type4-ieee802.3bt` - 802.3bt (Type 4)
+            * `passive-24v-2pair` - Passive 24V (2-pair)
+            * `passive-24v-4pair` - Passive 24V (4-pair)
+            * `passive-48v-2pair` - Passive 48V (2-pair)
+            * `passive-48v-4pair` - Passive 48V (4-pair)
+    PatchedWritableInventoryItemRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          type: integer
+        parent:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        role:
+          type: integer
+          nullable: true
+        manufacturer:
+          type: integer
+          nullable: true
+        part_id:
+          type: string
+          description: Manufacturer-assigned part identifier
+          maxLength: 50
+        serial:
+          type: string
+          title: Serial number
+          maxLength: 50
+        asset_tag:
+          type: string
+          nullable: true
+          description: A unique tag used to identify this item
+          maxLength: 50
+        discovered:
+          type: boolean
+          description: This item was automatically discovered
+        description:
+          type: string
+          maxLength: 200
+        component_type:
+          type: string
+          nullable: true
+        component_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+          nullable: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableInventoryItemTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          type: integer
+        parent:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        role:
+          type: integer
+          nullable: true
+        manufacturer:
+          type: integer
+          nullable: true
+        part_id:
+          type: string
+          description: Manufacturer-assigned part identifier
+          maxLength: 50
+        description:
+          type: string
+          maxLength: 200
+        component_type:
+          type: string
+          nullable: true
+        component_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+          nullable: true
+    PatchedWritableJournalEntryRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        assigned_object_type:
+          type: string
+        assigned_object_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+        created_by:
+          type: integer
+          nullable: true
+        kind:
+          enum:
+          - info
+          - success
+          - warning
+          - danger
+          type: string
+          description: |-
+            * `info` - Info
+            * `success` - Success
+            * `warning` - Warning
+            * `danger` - Danger
+        comments:
+          type: string
+          minLength: 1
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableL2VPNRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        identifier:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: -9223372036854775808
+          format: int64
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        type:
+          enum:
+          - vpws
+          - vpls
+          - vxlan
+          - vxlan-evpn
+          - mpls-evpn
+          - pbb-evpn
+          - epl
+          - evpl
+          - ep-lan
+          - evp-lan
+          - ep-tree
+          - evp-tree
+          type: string
+          description: |-
+            * `vpws` - VPWS
+            * `vpls` - VPLS
+            * `vxlan` - VXLAN
+            * `vxlan-evpn` - VXLAN-EVPN
+            * `mpls-evpn` - MPLS EVPN
+            * `pbb-evpn` - PBB EVPN
+            * `epl` - EPL
+            * `evpl` - EVPL
+            * `ep-lan` - Ethernet Private LAN
+            * `evp-lan` - Ethernet Virtual Private LAN
+            * `ep-tree` - Ethernet Private Tree
+            * `evp-tree` - Ethernet Virtual Private Tree
+        import_targets:
+          type: array
+          items:
+            type: integer
+        export_targets:
+          type: array
+          items:
+            type: integer
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tenant:
+          type: integer
+          nullable: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableL2VPNTerminationRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        l2vpn:
+          type: integer
+        assigned_object_type:
+          type: string
+        assigned_object_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableLocationRequest:
+      type: object
+      description: Extends PrimaryModelSerializer to include MPTT support.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        site:
+          type: integer
+        parent:
+          type: integer
+          nullable: true
+        status:
+          enum:
+          - planned
+          - staging
+          - active
+          - decommissioning
+          - retired
+          type: string
+          description: |-
+            * `planned` - Planned
+            * `staging` - Staging
+            * `active` - Active
+            * `decommissioning` - Decommissioning
+            * `retired` - Retired
+        tenant:
+          type: integer
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableModuleBayRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          type: integer
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        installed_module:
+          type: integer
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        position:
+          type: string
+          description: Identifier to reference when renaming installed components
+          maxLength: 30
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableModuleBayTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          type: integer
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        position:
+          type: string
+          description: Identifier to reference when renaming installed components
+          maxLength: 30
+        description:
+          type: string
+          maxLength: 200
+    PatchedWritableModuleRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          type: integer
+        module_bay:
+          type: integer
+        module_type:
+          type: integer
+        status:
+          enum:
+          - offline
+          - active
+          - planned
+          - staged
+          - failed
+          - decommissioning
+          type: string
+          description: |-
+            * `offline` - Offline
+            * `active` - Active
+            * `planned` - Planned
+            * `staged` - Staged
+            * `failed` - Failed
+            * `decommissioning` - Decommissioning
+        serial:
+          type: string
+          title: Serial number
+          maxLength: 50
+        asset_tag:
+          type: string
+          nullable: true
+          description: A unique tag used to identify this device
+          maxLength: 50
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableModuleTypeRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        manufacturer:
+          type: integer
+        model:
+          type: string
+          minLength: 1
+          maxLength: 100
+        part_number:
+          type: string
+          description: Discrete part number (optional)
+          maxLength: 50
+        weight:
+          type: number
+          format: double
+          maximum: 1000000
+          minimum: -1000000
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+        weight_unit:
+          enum:
+          - kg
+          - g
+          - lb
+          - oz
+          - ''
+          type: string
+          description: |-
+            * `kg` - Kilograms
+            * `g` - Grams
+            * `lb` - Pounds
+            * `oz` - Ounces
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableObjectPermissionRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        description:
+          type: string
+          maxLength: 200
+        enabled:
+          type: boolean
+        object_types:
+          type: array
+          items:
+            type: string
+        groups:
+          type: array
+          items:
+            type: integer
+        users:
+          type: array
+          items:
+            type: integer
+        actions:
+          type: array
+          items:
+            type: string
+            minLength: 1
+            maxLength: 30
+          description: The list of actions granted by this permission
+        constraints:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          description: Queryset filter matching the applicable objects of the selected
+            type(s)
+    PatchedWritablePlatformRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        manufacturer:
+          type: integer
+          nullable: true
+          description: Optionally limit this platform to devices of a certain manufacturer
+        config_template:
+          type: integer
+          nullable: true
+        napalm_driver:
+          type: string
+          description: The name of the NAPALM driver to use when interacting with
+            devices
+          maxLength: 50
+        napalm_args:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          title: NAPALM arguments
+          description: Additional arguments to pass when initiating the NAPALM driver
+            (JSON format)
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritablePowerFeedRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        power_panel:
+          type: integer
+        rack:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        status:
+          enum:
+          - offline
+          - active
+          - planned
+          - failed
+          type: string
+          description: |-
+            * `offline` - Offline
+            * `active` - Active
+            * `planned` - Planned
+            * `failed` - Failed
+        type:
+          enum:
+          - primary
+          - redundant
+          type: string
+          description: |-
+            * `primary` - Primary
+            * `redundant` - Redundant
+        supply:
+          enum:
+          - ac
+          - dc
+          type: string
+          description: |-
+            * `ac` - AC
+            * `dc` - DC
+        phase:
+          enum:
+          - single-phase
+          - three-phase
+          type: string
+          description: |-
+            * `single-phase` - Single phase
+            * `three-phase` - Three-phase
+        voltage:
+          type: integer
+          maximum: 32767
+          minimum: -32768
+        amperage:
+          type: integer
+          maximum: 32767
+          minimum: 1
+        max_utilization:
+          type: integer
+          maximum: 100
+          minimum: 1
+          description: Maximum permissible draw (percentage)
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritablePowerOutletRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          type: integer
+        module:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - iec-60320-c5
+          - iec-60320-c7
+          - iec-60320-c13
+          - iec-60320-c15
+          - iec-60320-c19
+          - iec-60320-c21
+          - iec-60309-p-n-e-4h
+          - iec-60309-p-n-e-6h
+          - iec-60309-p-n-e-9h
+          - iec-60309-2p-e-4h
+          - iec-60309-2p-e-6h
+          - iec-60309-2p-e-9h
+          - iec-60309-3p-e-4h
+          - iec-60309-3p-e-6h
+          - iec-60309-3p-e-9h
+          - iec-60309-3p-n-e-4h
+          - iec-60309-3p-n-e-6h
+          - iec-60309-3p-n-e-9h
+          - nema-1-15r
+          - nema-5-15r
+          - nema-5-20r
+          - nema-5-30r
+          - nema-5-50r
+          - nema-6-15r
+          - nema-6-20r
+          - nema-6-30r
+          - nema-6-50r
+          - nema-10-30r
+          - nema-10-50r
+          - nema-14-20r
+          - nema-14-30r
+          - nema-14-50r
+          - nema-14-60r
+          - nema-15-15r
+          - nema-15-20r
+          - nema-15-30r
+          - nema-15-50r
+          - nema-15-60r
+          - nema-l1-15r
+          - nema-l5-15r
+          - nema-l5-20r
+          - nema-l5-30r
+          - nema-l5-50r
+          - nema-l6-15r
+          - nema-l6-20r
+          - nema-l6-30r
+          - nema-l6-50r
+          - nema-l10-30r
+          - nema-l14-20r
+          - nema-l14-30r
+          - nema-l14-50r
+          - nema-l14-60r
+          - nema-l15-20r
+          - nema-l15-30r
+          - nema-l15-50r
+          - nema-l15-60r
+          - nema-l21-20r
+          - nema-l21-30r
+          - nema-l22-30r
+          - CS6360C
+          - CS6364C
+          - CS8164C
+          - CS8264C
+          - CS8364C
+          - CS8464C
+          - ita-e
+          - ita-f
+          - ita-g
+          - ita-h
+          - ita-i
+          - ita-j
+          - ita-k
+          - ita-l
+          - ita-m
+          - ita-n
+          - ita-o
+          - ita-multistandard
+          - usb-a
+          - usb-micro-b
+          - usb-c
+          - dc-terminal
+          - hdot-cx
+          - saf-d-grid
+          - neutrik-powercon-20a
+          - neutrik-powercon-32a
+          - neutrik-powercon-true1
+          - neutrik-powercon-true1-top
+          - ubiquiti-smartpower
+          - hardwired
+          - other
+          - ''
+          type: string
+          description: |-
+            Physical port type
+
+            * `iec-60320-c5` - C5
+            * `iec-60320-c7` - C7
+            * `iec-60320-c13` - C13
+            * `iec-60320-c15` - C15
+            * `iec-60320-c19` - C19
+            * `iec-60320-c21` - C21
+            * `iec-60309-p-n-e-4h` - P+N+E 4H
+            * `iec-60309-p-n-e-6h` - P+N+E 6H
+            * `iec-60309-p-n-e-9h` - P+N+E 9H
+            * `iec-60309-2p-e-4h` - 2P+E 4H
+            * `iec-60309-2p-e-6h` - 2P+E 6H
+            * `iec-60309-2p-e-9h` - 2P+E 9H
+            * `iec-60309-3p-e-4h` - 3P+E 4H
+            * `iec-60309-3p-e-6h` - 3P+E 6H
+            * `iec-60309-3p-e-9h` - 3P+E 9H
+            * `iec-60309-3p-n-e-4h` - 3P+N+E 4H
+            * `iec-60309-3p-n-e-6h` - 3P+N+E 6H
+            * `iec-60309-3p-n-e-9h` - 3P+N+E 9H
+            * `nema-1-15r` - NEMA 1-15R
+            * `nema-5-15r` - NEMA 5-15R
+            * `nema-5-20r` - NEMA 5-20R
+            * `nema-5-30r` - NEMA 5-30R
+            * `nema-5-50r` - NEMA 5-50R
+            * `nema-6-15r` - NEMA 6-15R
+            * `nema-6-20r` - NEMA 6-20R
+            * `nema-6-30r` - NEMA 6-30R
+            * `nema-6-50r` - NEMA 6-50R
+            * `nema-10-30r` - NEMA 10-30R
+            * `nema-10-50r` - NEMA 10-50R
+            * `nema-14-20r` - NEMA 14-20R
+            * `nema-14-30r` - NEMA 14-30R
+            * `nema-14-50r` - NEMA 14-50R
+            * `nema-14-60r` - NEMA 14-60R
+            * `nema-15-15r` - NEMA 15-15R
+            * `nema-15-20r` - NEMA 15-20R
+            * `nema-15-30r` - NEMA 15-30R
+            * `nema-15-50r` - NEMA 15-50R
+            * `nema-15-60r` - NEMA 15-60R
+            * `nema-l1-15r` - NEMA L1-15R
+            * `nema-l5-15r` - NEMA L5-15R
+            * `nema-l5-20r` - NEMA L5-20R
+            * `nema-l5-30r` - NEMA L5-30R
+            * `nema-l5-50r` - NEMA L5-50R
+            * `nema-l6-15r` - NEMA L6-15R
+            * `nema-l6-20r` - NEMA L6-20R
+            * `nema-l6-30r` - NEMA L6-30R
+            * `nema-l6-50r` - NEMA L6-50R
+            * `nema-l10-30r` - NEMA L10-30R
+            * `nema-l14-20r` - NEMA L14-20R
+            * `nema-l14-30r` - NEMA L14-30R
+            * `nema-l14-50r` - NEMA L14-50R
+            * `nema-l14-60r` - NEMA L14-60R
+            * `nema-l15-20r` - NEMA L15-20R
+            * `nema-l15-30r` - NEMA L15-30R
+            * `nema-l15-50r` - NEMA L15-50R
+            * `nema-l15-60r` - NEMA L15-60R
+            * `nema-l21-20r` - NEMA L21-20R
+            * `nema-l21-30r` - NEMA L21-30R
+            * `nema-l22-30r` - NEMA L22-30R
+            * `CS6360C` - CS6360C
+            * `CS6364C` - CS6364C
+            * `CS8164C` - CS8164C
+            * `CS8264C` - CS8264C
+            * `CS8364C` - CS8364C
+            * `CS8464C` - CS8464C
+            * `ita-e` - ITA Type E (CEE 7/5)
+            * `ita-f` - ITA Type F (CEE 7/3)
+            * `ita-g` - ITA Type G (BS 1363)
+            * `ita-h` - ITA Type H
+            * `ita-i` - ITA Type I
+            * `ita-j` - ITA Type J
+            * `ita-k` - ITA Type K
+            * `ita-l` - ITA Type L (CEI 23-50)
+            * `ita-m` - ITA Type M (BS 546)
+            * `ita-n` - ITA Type N
+            * `ita-o` - ITA Type O
+            * `ita-multistandard` - ITA Multistandard
+            * `usb-a` - USB Type A
+            * `usb-micro-b` - USB Micro B
+            * `usb-c` - USB Type C
+            * `dc-terminal` - DC Terminal
+            * `hdot-cx` - HDOT Cx
+            * `saf-d-grid` - Saf-D-Grid
+            * `neutrik-powercon-20a` - Neutrik powerCON (20A)
+            * `neutrik-powercon-32a` - Neutrik powerCON (32A)
+            * `neutrik-powercon-true1` - Neutrik powerCON TRUE1
+            * `neutrik-powercon-true1-top` - Neutrik powerCON TRUE1 TOP
+            * `ubiquiti-smartpower` - Ubiquiti SmartPower
+            * `hardwired` - Hardwired
+            * `other` - Other
+        power_port:
+          type: integer
+          nullable: true
+        feed_leg:
+          enum:
+          - A
+          - B
+          - C
+          - ''
+          type: string
+          description: |-
+            Phase (for three-phase feeds)
+
+            * `A` - A
+            * `B` - B
+            * `C` - C
+        description:
+          type: string
+          maxLength: 200
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritablePowerOutletTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          type: integer
+          nullable: true
+        module_type:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - iec-60320-c5
+          - iec-60320-c7
+          - iec-60320-c13
+          - iec-60320-c15
+          - iec-60320-c19
+          - iec-60320-c21
+          - iec-60309-p-n-e-4h
+          - iec-60309-p-n-e-6h
+          - iec-60309-p-n-e-9h
+          - iec-60309-2p-e-4h
+          - iec-60309-2p-e-6h
+          - iec-60309-2p-e-9h
+          - iec-60309-3p-e-4h
+          - iec-60309-3p-e-6h
+          - iec-60309-3p-e-9h
+          - iec-60309-3p-n-e-4h
+          - iec-60309-3p-n-e-6h
+          - iec-60309-3p-n-e-9h
+          - nema-1-15r
+          - nema-5-15r
+          - nema-5-20r
+          - nema-5-30r
+          - nema-5-50r
+          - nema-6-15r
+          - nema-6-20r
+          - nema-6-30r
+          - nema-6-50r
+          - nema-10-30r
+          - nema-10-50r
+          - nema-14-20r
+          - nema-14-30r
+          - nema-14-50r
+          - nema-14-60r
+          - nema-15-15r
+          - nema-15-20r
+          - nema-15-30r
+          - nema-15-50r
+          - nema-15-60r
+          - nema-l1-15r
+          - nema-l5-15r
+          - nema-l5-20r
+          - nema-l5-30r
+          - nema-l5-50r
+          - nema-l6-15r
+          - nema-l6-20r
+          - nema-l6-30r
+          - nema-l6-50r
+          - nema-l10-30r
+          - nema-l14-20r
+          - nema-l14-30r
+          - nema-l14-50r
+          - nema-l14-60r
+          - nema-l15-20r
+          - nema-l15-30r
+          - nema-l15-50r
+          - nema-l15-60r
+          - nema-l21-20r
+          - nema-l21-30r
+          - nema-l22-30r
+          - CS6360C
+          - CS6364C
+          - CS8164C
+          - CS8264C
+          - CS8364C
+          - CS8464C
+          - ita-e
+          - ita-f
+          - ita-g
+          - ita-h
+          - ita-i
+          - ita-j
+          - ita-k
+          - ita-l
+          - ita-m
+          - ita-n
+          - ita-o
+          - ita-multistandard
+          - usb-a
+          - usb-micro-b
+          - usb-c
+          - dc-terminal
+          - hdot-cx
+          - saf-d-grid
+          - neutrik-powercon-20a
+          - neutrik-powercon-32a
+          - neutrik-powercon-true1
+          - neutrik-powercon-true1-top
+          - ubiquiti-smartpower
+          - hardwired
+          - other
+          - ''
+          type: string
+          description: |-
+            * `iec-60320-c5` - C5
+            * `iec-60320-c7` - C7
+            * `iec-60320-c13` - C13
+            * `iec-60320-c15` - C15
+            * `iec-60320-c19` - C19
+            * `iec-60320-c21` - C21
+            * `iec-60309-p-n-e-4h` - P+N+E 4H
+            * `iec-60309-p-n-e-6h` - P+N+E 6H
+            * `iec-60309-p-n-e-9h` - P+N+E 9H
+            * `iec-60309-2p-e-4h` - 2P+E 4H
+            * `iec-60309-2p-e-6h` - 2P+E 6H
+            * `iec-60309-2p-e-9h` - 2P+E 9H
+            * `iec-60309-3p-e-4h` - 3P+E 4H
+            * `iec-60309-3p-e-6h` - 3P+E 6H
+            * `iec-60309-3p-e-9h` - 3P+E 9H
+            * `iec-60309-3p-n-e-4h` - 3P+N+E 4H
+            * `iec-60309-3p-n-e-6h` - 3P+N+E 6H
+            * `iec-60309-3p-n-e-9h` - 3P+N+E 9H
+            * `nema-1-15r` - NEMA 1-15R
+            * `nema-5-15r` - NEMA 5-15R
+            * `nema-5-20r` - NEMA 5-20R
+            * `nema-5-30r` - NEMA 5-30R
+            * `nema-5-50r` - NEMA 5-50R
+            * `nema-6-15r` - NEMA 6-15R
+            * `nema-6-20r` - NEMA 6-20R
+            * `nema-6-30r` - NEMA 6-30R
+            * `nema-6-50r` - NEMA 6-50R
+            * `nema-10-30r` - NEMA 10-30R
+            * `nema-10-50r` - NEMA 10-50R
+            * `nema-14-20r` - NEMA 14-20R
+            * `nema-14-30r` - NEMA 14-30R
+            * `nema-14-50r` - NEMA 14-50R
+            * `nema-14-60r` - NEMA 14-60R
+            * `nema-15-15r` - NEMA 15-15R
+            * `nema-15-20r` - NEMA 15-20R
+            * `nema-15-30r` - NEMA 15-30R
+            * `nema-15-50r` - NEMA 15-50R
+            * `nema-15-60r` - NEMA 15-60R
+            * `nema-l1-15r` - NEMA L1-15R
+            * `nema-l5-15r` - NEMA L5-15R
+            * `nema-l5-20r` - NEMA L5-20R
+            * `nema-l5-30r` - NEMA L5-30R
+            * `nema-l5-50r` - NEMA L5-50R
+            * `nema-l6-15r` - NEMA L6-15R
+            * `nema-l6-20r` - NEMA L6-20R
+            * `nema-l6-30r` - NEMA L6-30R
+            * `nema-l6-50r` - NEMA L6-50R
+            * `nema-l10-30r` - NEMA L10-30R
+            * `nema-l14-20r` - NEMA L14-20R
+            * `nema-l14-30r` - NEMA L14-30R
+            * `nema-l14-50r` - NEMA L14-50R
+            * `nema-l14-60r` - NEMA L14-60R
+            * `nema-l15-20r` - NEMA L15-20R
+            * `nema-l15-30r` - NEMA L15-30R
+            * `nema-l15-50r` - NEMA L15-50R
+            * `nema-l15-60r` - NEMA L15-60R
+            * `nema-l21-20r` - NEMA L21-20R
+            * `nema-l21-30r` - NEMA L21-30R
+            * `nema-l22-30r` - NEMA L22-30R
+            * `CS6360C` - CS6360C
+            * `CS6364C` - CS6364C
+            * `CS8164C` - CS8164C
+            * `CS8264C` - CS8264C
+            * `CS8364C` - CS8364C
+            * `CS8464C` - CS8464C
+            * `ita-e` - ITA Type E (CEE 7/5)
+            * `ita-f` - ITA Type F (CEE 7/3)
+            * `ita-g` - ITA Type G (BS 1363)
+            * `ita-h` - ITA Type H
+            * `ita-i` - ITA Type I
+            * `ita-j` - ITA Type J
+            * `ita-k` - ITA Type K
+            * `ita-l` - ITA Type L (CEI 23-50)
+            * `ita-m` - ITA Type M (BS 546)
+            * `ita-n` - ITA Type N
+            * `ita-o` - ITA Type O
+            * `ita-multistandard` - ITA Multistandard
+            * `usb-a` - USB Type A
+            * `usb-micro-b` - USB Micro B
+            * `usb-c` - USB Type C
+            * `dc-terminal` - DC Terminal
+            * `hdot-cx` - HDOT Cx
+            * `saf-d-grid` - Saf-D-Grid
+            * `neutrik-powercon-20a` - Neutrik powerCON (20A)
+            * `neutrik-powercon-32a` - Neutrik powerCON (32A)
+            * `neutrik-powercon-true1` - Neutrik powerCON TRUE1
+            * `neutrik-powercon-true1-top` - Neutrik powerCON TRUE1 TOP
+            * `ubiquiti-smartpower` - Ubiquiti SmartPower
+            * `hardwired` - Hardwired
+            * `other` - Other
+        power_port:
+          type: integer
+          nullable: true
+        feed_leg:
+          enum:
+          - A
+          - B
+          - C
+          - ''
+          type: string
+          description: |-
+            Phase (for three-phase feeds)
+
+            * `A` - A
+            * `B` - B
+            * `C` - C
+        description:
+          type: string
+          maxLength: 200
+    PatchedWritablePowerPanelRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        site:
+          type: integer
+        location:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritablePowerPortRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          type: integer
+        module:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - iec-60320-c6
+          - iec-60320-c8
+          - iec-60320-c14
+          - iec-60320-c16
+          - iec-60320-c20
+          - iec-60320-c22
+          - iec-60309-p-n-e-4h
+          - iec-60309-p-n-e-6h
+          - iec-60309-p-n-e-9h
+          - iec-60309-2p-e-4h
+          - iec-60309-2p-e-6h
+          - iec-60309-2p-e-9h
+          - iec-60309-3p-e-4h
+          - iec-60309-3p-e-6h
+          - iec-60309-3p-e-9h
+          - iec-60309-3p-n-e-4h
+          - iec-60309-3p-n-e-6h
+          - iec-60309-3p-n-e-9h
+          - nema-1-15p
+          - nema-5-15p
+          - nema-5-20p
+          - nema-5-30p
+          - nema-5-50p
+          - nema-6-15p
+          - nema-6-20p
+          - nema-6-30p
+          - nema-6-50p
+          - nema-10-30p
+          - nema-10-50p
+          - nema-14-20p
+          - nema-14-30p
+          - nema-14-50p
+          - nema-14-60p
+          - nema-15-15p
+          - nema-15-20p
+          - nema-15-30p
+          - nema-15-50p
+          - nema-15-60p
+          - nema-l1-15p
+          - nema-l5-15p
+          - nema-l5-20p
+          - nema-l5-30p
+          - nema-l5-50p
+          - nema-l6-15p
+          - nema-l6-20p
+          - nema-l6-30p
+          - nema-l6-50p
+          - nema-l10-30p
+          - nema-l14-20p
+          - nema-l14-30p
+          - nema-l14-50p
+          - nema-l14-60p
+          - nema-l15-20p
+          - nema-l15-30p
+          - nema-l15-50p
+          - nema-l15-60p
+          - nema-l21-20p
+          - nema-l21-30p
+          - nema-l22-30p
+          - cs6361c
+          - cs6365c
+          - cs8165c
+          - cs8265c
+          - cs8365c
+          - cs8465c
+          - ita-c
+          - ita-e
+          - ita-f
+          - ita-ef
+          - ita-g
+          - ita-h
+          - ita-i
+          - ita-j
+          - ita-k
+          - ita-l
+          - ita-m
+          - ita-n
+          - ita-o
+          - usb-a
+          - usb-b
+          - usb-c
+          - usb-mini-a
+          - usb-mini-b
+          - usb-micro-a
+          - usb-micro-b
+          - usb-micro-ab
+          - usb-3-b
+          - usb-3-micro-b
+          - dc-terminal
+          - saf-d-grid
+          - neutrik-powercon-20
+          - neutrik-powercon-32
+          - neutrik-powercon-true1
+          - neutrik-powercon-true1-top
+          - ubiquiti-smartpower
+          - hardwired
+          - other
+          - ''
+          type: string
+          description: |-
+            Physical port type
+
+            * `iec-60320-c6` - C6
+            * `iec-60320-c8` - C8
+            * `iec-60320-c14` - C14
+            * `iec-60320-c16` - C16
+            * `iec-60320-c20` - C20
+            * `iec-60320-c22` - C22
+            * `iec-60309-p-n-e-4h` - P+N+E 4H
+            * `iec-60309-p-n-e-6h` - P+N+E 6H
+            * `iec-60309-p-n-e-9h` - P+N+E 9H
+            * `iec-60309-2p-e-4h` - 2P+E 4H
+            * `iec-60309-2p-e-6h` - 2P+E 6H
+            * `iec-60309-2p-e-9h` - 2P+E 9H
+            * `iec-60309-3p-e-4h` - 3P+E 4H
+            * `iec-60309-3p-e-6h` - 3P+E 6H
+            * `iec-60309-3p-e-9h` - 3P+E 9H
+            * `iec-60309-3p-n-e-4h` - 3P+N+E 4H
+            * `iec-60309-3p-n-e-6h` - 3P+N+E 6H
+            * `iec-60309-3p-n-e-9h` - 3P+N+E 9H
+            * `nema-1-15p` - NEMA 1-15P
+            * `nema-5-15p` - NEMA 5-15P
+            * `nema-5-20p` - NEMA 5-20P
+            * `nema-5-30p` - NEMA 5-30P
+            * `nema-5-50p` - NEMA 5-50P
+            * `nema-6-15p` - NEMA 6-15P
+            * `nema-6-20p` - NEMA 6-20P
+            * `nema-6-30p` - NEMA 6-30P
+            * `nema-6-50p` - NEMA 6-50P
+            * `nema-10-30p` - NEMA 10-30P
+            * `nema-10-50p` - NEMA 10-50P
+            * `nema-14-20p` - NEMA 14-20P
+            * `nema-14-30p` - NEMA 14-30P
+            * `nema-14-50p` - NEMA 14-50P
+            * `nema-14-60p` - NEMA 14-60P
+            * `nema-15-15p` - NEMA 15-15P
+            * `nema-15-20p` - NEMA 15-20P
+            * `nema-15-30p` - NEMA 15-30P
+            * `nema-15-50p` - NEMA 15-50P
+            * `nema-15-60p` - NEMA 15-60P
+            * `nema-l1-15p` - NEMA L1-15P
+            * `nema-l5-15p` - NEMA L5-15P
+            * `nema-l5-20p` - NEMA L5-20P
+            * `nema-l5-30p` - NEMA L5-30P
+            * `nema-l5-50p` - NEMA L5-50P
+            * `nema-l6-15p` - NEMA L6-15P
+            * `nema-l6-20p` - NEMA L6-20P
+            * `nema-l6-30p` - NEMA L6-30P
+            * `nema-l6-50p` - NEMA L6-50P
+            * `nema-l10-30p` - NEMA L10-30P
+            * `nema-l14-20p` - NEMA L14-20P
+            * `nema-l14-30p` - NEMA L14-30P
+            * `nema-l14-50p` - NEMA L14-50P
+            * `nema-l14-60p` - NEMA L14-60P
+            * `nema-l15-20p` - NEMA L15-20P
+            * `nema-l15-30p` - NEMA L15-30P
+            * `nema-l15-50p` - NEMA L15-50P
+            * `nema-l15-60p` - NEMA L15-60P
+            * `nema-l21-20p` - NEMA L21-20P
+            * `nema-l21-30p` - NEMA L21-30P
+            * `nema-l22-30p` - NEMA L22-30P
+            * `cs6361c` - CS6361C
+            * `cs6365c` - CS6365C
+            * `cs8165c` - CS8165C
+            * `cs8265c` - CS8265C
+            * `cs8365c` - CS8365C
+            * `cs8465c` - CS8465C
+            * `ita-c` - ITA Type C (CEE 7/16)
+            * `ita-e` - ITA Type E (CEE 7/6)
+            * `ita-f` - ITA Type F (CEE 7/4)
+            * `ita-ef` - ITA Type E/F (CEE 7/7)
+            * `ita-g` - ITA Type G (BS 1363)
+            * `ita-h` - ITA Type H
+            * `ita-i` - ITA Type I
+            * `ita-j` - ITA Type J
+            * `ita-k` - ITA Type K
+            * `ita-l` - ITA Type L (CEI 23-50)
+            * `ita-m` - ITA Type M (BS 546)
+            * `ita-n` - ITA Type N
+            * `ita-o` - ITA Type O
+            * `usb-a` - USB Type A
+            * `usb-b` - USB Type B
+            * `usb-c` - USB Type C
+            * `usb-mini-a` - USB Mini A
+            * `usb-mini-b` - USB Mini B
+            * `usb-micro-a` - USB Micro A
+            * `usb-micro-b` - USB Micro B
+            * `usb-micro-ab` - USB Micro AB
+            * `usb-3-b` - USB 3.0 Type B
+            * `usb-3-micro-b` - USB 3.0 Micro B
+            * `dc-terminal` - DC Terminal
+            * `saf-d-grid` - Saf-D-Grid
+            * `neutrik-powercon-20` - Neutrik powerCON (20A)
+            * `neutrik-powercon-32` - Neutrik powerCON (32A)
+            * `neutrik-powercon-true1` - Neutrik powerCON TRUE1
+            * `neutrik-powercon-true1-top` - Neutrik powerCON TRUE1 TOP
+            * `ubiquiti-smartpower` - Ubiquiti SmartPower
+            * `hardwired` - Hardwired
+            * `other` - Other
+        maximum_draw:
+          type: integer
+          maximum: 32767
+          minimum: 1
+          nullable: true
+          description: Maximum power draw (watts)
+        allocated_draw:
+          type: integer
+          maximum: 32767
+          minimum: 1
+          nullable: true
+          description: Allocated power draw (watts)
+        description:
+          type: string
+          maxLength: 200
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritablePowerPortTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          type: integer
+          nullable: true
+        module_type:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - iec-60320-c6
+          - iec-60320-c8
+          - iec-60320-c14
+          - iec-60320-c16
+          - iec-60320-c20
+          - iec-60320-c22
+          - iec-60309-p-n-e-4h
+          - iec-60309-p-n-e-6h
+          - iec-60309-p-n-e-9h
+          - iec-60309-2p-e-4h
+          - iec-60309-2p-e-6h
+          - iec-60309-2p-e-9h
+          - iec-60309-3p-e-4h
+          - iec-60309-3p-e-6h
+          - iec-60309-3p-e-9h
+          - iec-60309-3p-n-e-4h
+          - iec-60309-3p-n-e-6h
+          - iec-60309-3p-n-e-9h
+          - nema-1-15p
+          - nema-5-15p
+          - nema-5-20p
+          - nema-5-30p
+          - nema-5-50p
+          - nema-6-15p
+          - nema-6-20p
+          - nema-6-30p
+          - nema-6-50p
+          - nema-10-30p
+          - nema-10-50p
+          - nema-14-20p
+          - nema-14-30p
+          - nema-14-50p
+          - nema-14-60p
+          - nema-15-15p
+          - nema-15-20p
+          - nema-15-30p
+          - nema-15-50p
+          - nema-15-60p
+          - nema-l1-15p
+          - nema-l5-15p
+          - nema-l5-20p
+          - nema-l5-30p
+          - nema-l5-50p
+          - nema-l6-15p
+          - nema-l6-20p
+          - nema-l6-30p
+          - nema-l6-50p
+          - nema-l10-30p
+          - nema-l14-20p
+          - nema-l14-30p
+          - nema-l14-50p
+          - nema-l14-60p
+          - nema-l15-20p
+          - nema-l15-30p
+          - nema-l15-50p
+          - nema-l15-60p
+          - nema-l21-20p
+          - nema-l21-30p
+          - nema-l22-30p
+          - cs6361c
+          - cs6365c
+          - cs8165c
+          - cs8265c
+          - cs8365c
+          - cs8465c
+          - ita-c
+          - ita-e
+          - ita-f
+          - ita-ef
+          - ita-g
+          - ita-h
+          - ita-i
+          - ita-j
+          - ita-k
+          - ita-l
+          - ita-m
+          - ita-n
+          - ita-o
+          - usb-a
+          - usb-b
+          - usb-c
+          - usb-mini-a
+          - usb-mini-b
+          - usb-micro-a
+          - usb-micro-b
+          - usb-micro-ab
+          - usb-3-b
+          - usb-3-micro-b
+          - dc-terminal
+          - saf-d-grid
+          - neutrik-powercon-20
+          - neutrik-powercon-32
+          - neutrik-powercon-true1
+          - neutrik-powercon-true1-top
+          - ubiquiti-smartpower
+          - hardwired
+          - other
+          - ''
+          type: string
+          description: |-
+            * `iec-60320-c6` - C6
+            * `iec-60320-c8` - C8
+            * `iec-60320-c14` - C14
+            * `iec-60320-c16` - C16
+            * `iec-60320-c20` - C20
+            * `iec-60320-c22` - C22
+            * `iec-60309-p-n-e-4h` - P+N+E 4H
+            * `iec-60309-p-n-e-6h` - P+N+E 6H
+            * `iec-60309-p-n-e-9h` - P+N+E 9H
+            * `iec-60309-2p-e-4h` - 2P+E 4H
+            * `iec-60309-2p-e-6h` - 2P+E 6H
+            * `iec-60309-2p-e-9h` - 2P+E 9H
+            * `iec-60309-3p-e-4h` - 3P+E 4H
+            * `iec-60309-3p-e-6h` - 3P+E 6H
+            * `iec-60309-3p-e-9h` - 3P+E 9H
+            * `iec-60309-3p-n-e-4h` - 3P+N+E 4H
+            * `iec-60309-3p-n-e-6h` - 3P+N+E 6H
+            * `iec-60309-3p-n-e-9h` - 3P+N+E 9H
+            * `nema-1-15p` - NEMA 1-15P
+            * `nema-5-15p` - NEMA 5-15P
+            * `nema-5-20p` - NEMA 5-20P
+            * `nema-5-30p` - NEMA 5-30P
+            * `nema-5-50p` - NEMA 5-50P
+            * `nema-6-15p` - NEMA 6-15P
+            * `nema-6-20p` - NEMA 6-20P
+            * `nema-6-30p` - NEMA 6-30P
+            * `nema-6-50p` - NEMA 6-50P
+            * `nema-10-30p` - NEMA 10-30P
+            * `nema-10-50p` - NEMA 10-50P
+            * `nema-14-20p` - NEMA 14-20P
+            * `nema-14-30p` - NEMA 14-30P
+            * `nema-14-50p` - NEMA 14-50P
+            * `nema-14-60p` - NEMA 14-60P
+            * `nema-15-15p` - NEMA 15-15P
+            * `nema-15-20p` - NEMA 15-20P
+            * `nema-15-30p` - NEMA 15-30P
+            * `nema-15-50p` - NEMA 15-50P
+            * `nema-15-60p` - NEMA 15-60P
+            * `nema-l1-15p` - NEMA L1-15P
+            * `nema-l5-15p` - NEMA L5-15P
+            * `nema-l5-20p` - NEMA L5-20P
+            * `nema-l5-30p` - NEMA L5-30P
+            * `nema-l5-50p` - NEMA L5-50P
+            * `nema-l6-15p` - NEMA L6-15P
+            * `nema-l6-20p` - NEMA L6-20P
+            * `nema-l6-30p` - NEMA L6-30P
+            * `nema-l6-50p` - NEMA L6-50P
+            * `nema-l10-30p` - NEMA L10-30P
+            * `nema-l14-20p` - NEMA L14-20P
+            * `nema-l14-30p` - NEMA L14-30P
+            * `nema-l14-50p` - NEMA L14-50P
+            * `nema-l14-60p` - NEMA L14-60P
+            * `nema-l15-20p` - NEMA L15-20P
+            * `nema-l15-30p` - NEMA L15-30P
+            * `nema-l15-50p` - NEMA L15-50P
+            * `nema-l15-60p` - NEMA L15-60P
+            * `nema-l21-20p` - NEMA L21-20P
+            * `nema-l21-30p` - NEMA L21-30P
+            * `nema-l22-30p` - NEMA L22-30P
+            * `cs6361c` - CS6361C
+            * `cs6365c` - CS6365C
+            * `cs8165c` - CS8165C
+            * `cs8265c` - CS8265C
+            * `cs8365c` - CS8365C
+            * `cs8465c` - CS8465C
+            * `ita-c` - ITA Type C (CEE 7/16)
+            * `ita-e` - ITA Type E (CEE 7/6)
+            * `ita-f` - ITA Type F (CEE 7/4)
+            * `ita-ef` - ITA Type E/F (CEE 7/7)
+            * `ita-g` - ITA Type G (BS 1363)
+            * `ita-h` - ITA Type H
+            * `ita-i` - ITA Type I
+            * `ita-j` - ITA Type J
+            * `ita-k` - ITA Type K
+            * `ita-l` - ITA Type L (CEI 23-50)
+            * `ita-m` - ITA Type M (BS 546)
+            * `ita-n` - ITA Type N
+            * `ita-o` - ITA Type O
+            * `usb-a` - USB Type A
+            * `usb-b` - USB Type B
+            * `usb-c` - USB Type C
+            * `usb-mini-a` - USB Mini A
+            * `usb-mini-b` - USB Mini B
+            * `usb-micro-a` - USB Micro A
+            * `usb-micro-b` - USB Micro B
+            * `usb-micro-ab` - USB Micro AB
+            * `usb-3-b` - USB 3.0 Type B
+            * `usb-3-micro-b` - USB 3.0 Micro B
+            * `dc-terminal` - DC Terminal
+            * `saf-d-grid` - Saf-D-Grid
+            * `neutrik-powercon-20` - Neutrik powerCON (20A)
+            * `neutrik-powercon-32` - Neutrik powerCON (32A)
+            * `neutrik-powercon-true1` - Neutrik powerCON TRUE1
+            * `neutrik-powercon-true1-top` - Neutrik powerCON TRUE1 TOP
+            * `ubiquiti-smartpower` - Ubiquiti SmartPower
+            * `hardwired` - Hardwired
+            * `other` - Other
+        maximum_draw:
+          type: integer
+          maximum: 32767
+          minimum: 1
+          nullable: true
+          description: Maximum power draw (watts)
+        allocated_draw:
+          type: integer
+          maximum: 32767
+          minimum: 1
+          nullable: true
+          description: Allocated power draw (watts)
+        description:
+          type: string
+          maxLength: 200
+    PatchedWritablePrefixRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        prefix:
+          type: string
+          minLength: 1
+        site:
+          type: integer
+          nullable: true
+        vrf:
+          type: integer
+          nullable: true
+        tenant:
+          type: integer
+          nullable: true
+        vlan:
+          type: integer
+          nullable: true
+        status:
+          enum:
+          - container
+          - active
+          - reserved
+          - deprecated
+          type: string
+          description: |-
+            Operational status of this prefix
+
+            * `container` - Container
+            * `active` - Active
+            * `reserved` - Reserved
+            * `deprecated` - Deprecated
+        role:
+          type: integer
+          nullable: true
+          description: The primary function of this prefix
+        is_pool:
+          type: boolean
+          title: Is a pool
+          description: All IP addresses within this prefix are considered usable
+        mark_utilized:
+          type: boolean
+          description: Treat as 100% utilized
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableProviderAccountRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        provider:
+          type: integer
+        name:
+          type: string
+          maxLength: 100
+        account:
+          type: string
+          minLength: 1
+          title: Account ID
+          maxLength: 100
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableProviderNetworkRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        provider:
+          type: integer
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        service_id:
+          type: string
+          maxLength: 100
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableProviderRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          description: Full name of the provider
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        accounts:
+          type: array
+          items:
+            type: integer
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        asns:
+          type: array
+          items:
+            type: integer
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableRackRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        facility_id:
+          type: string
+          nullable: true
+          maxLength: 50
+        site:
+          type: integer
+        location:
+          type: integer
+          nullable: true
+        tenant:
+          type: integer
+          nullable: true
+        status:
+          enum:
+          - reserved
+          - available
+          - planned
+          - active
+          - deprecated
+          type: string
+          description: |-
+            * `reserved` - Reserved
+            * `available` - Available
+            * `planned` - Planned
+            * `active` - Active
+            * `deprecated` - Deprecated
+        role:
+          type: integer
+          nullable: true
+          description: Functional role
+        serial:
+          type: string
+          title: Serial number
+          maxLength: 50
+        asset_tag:
+          type: string
+          nullable: true
+          description: A unique tag used to identify this rack
+          maxLength: 50
+        type:
+          enum:
+          - 2-post-frame
+          - 4-post-frame
+          - 4-post-cabinet
+          - wall-frame
+          - wall-frame-vertical
+          - wall-cabinet
+          - wall-cabinet-vertical
+          - ''
+          type: string
+          description: |-
+            * `2-post-frame` - 2-post frame
+            * `4-post-frame` - 4-post frame
+            * `4-post-cabinet` - 4-post cabinet
+            * `wall-frame` - Wall-mounted frame
+            * `wall-frame-vertical` - Wall-mounted frame (vertical)
+            * `wall-cabinet` - Wall-mounted cabinet
+            * `wall-cabinet-vertical` - Wall-mounted cabinet (vertical)
+        width:
+          enum:
+          - 10
+          - 19
+          - 21
+          - 23
+          type: integer
+          description: |-
+            Rail-to-rail width
+
+            * `10` - 10 inches
+            * `19` - 19 inches
+            * `21` - 21 inches
+            * `23` - 23 inches
+          minimum: 0
+          maximum: 32767
+        u_height:
+          type: integer
+          maximum: 100
+          minimum: 1
+          title: Height (U)
+          description: Height in rack units
+        weight:
+          type: number
+          format: double
+          maximum: 1000000
+          minimum: -1000000
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+        max_weight:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          description: Maximum load capacity for the rack
+        weight_unit:
+          enum:
+          - kg
+          - g
+          - lb
+          - oz
+          - ''
+          type: string
+          description: |-
+            * `kg` - Kilograms
+            * `g` - Grams
+            * `lb` - Pounds
+            * `oz` - Ounces
+        desc_units:
+          type: boolean
+          title: Descending units
+          description: Units are numbered top-to-bottom
+        outer_width:
+          type: integer
+          maximum: 32767
+          minimum: 0
+          nullable: true
+          description: Outer dimension of rack (width)
+        outer_depth:
+          type: integer
+          maximum: 32767
+          minimum: 0
+          nullable: true
+          description: Outer dimension of rack (depth)
+        outer_unit:
+          enum:
+          - mm
+          - in
+          - ''
+          type: string
+          description: |-
+            * `mm` - Millimeters
+            * `in` - Inches
+        mounting_depth:
+          type: integer
+          maximum: 32767
+          minimum: 0
+          nullable: true
+          description: Maximum depth of a mounted device, in millimeters. For four-post
+            racks, this is the distance between the front and rear rails.
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableRackReservationRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        rack:
+          type: integer
+        units:
+          type: array
+          items:
+            type: integer
+            maximum: 32767
+            minimum: 0
+        user:
+          type: integer
+        tenant:
+          type: integer
+          nullable: true
+        description:
+          type: string
+          minLength: 1
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableRearPortRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          type: integer
+        module:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - 8p8c
+          - 8p6c
+          - 8p4c
+          - 8p2c
+          - 6p6c
+          - 6p4c
+          - 6p2c
+          - 4p4c
+          - 4p2c
+          - gg45
+          - tera-4p
+          - tera-2p
+          - tera-1p
+          - 110-punch
+          - bnc
+          - f
+          - n
+          - mrj21
+          - fc
+          - lc
+          - lc-pc
+          - lc-upc
+          - lc-apc
+          - lsh
+          - lsh-pc
+          - lsh-upc
+          - lsh-apc
+          - mpo
+          - mtrj
+          - sc
+          - sc-pc
+          - sc-upc
+          - sc-apc
+          - st
+          - cs
+          - sn
+          - sma-905
+          - sma-906
+          - urm-p2
+          - urm-p4
+          - urm-p8
+          - splice
+          - other
+          type: string
+          description: |-
+            * `8p8c` - 8P8C
+            * `8p6c` - 8P6C
+            * `8p4c` - 8P4C
+            * `8p2c` - 8P2C
+            * `6p6c` - 6P6C
+            * `6p4c` - 6P4C
+            * `6p2c` - 6P2C
+            * `4p4c` - 4P4C
+            * `4p2c` - 4P2C
+            * `gg45` - GG45
+            * `tera-4p` - TERA 4P
+            * `tera-2p` - TERA 2P
+            * `tera-1p` - TERA 1P
+            * `110-punch` - 110 Punch
+            * `bnc` - BNC
+            * `f` - F Connector
+            * `n` - N Connector
+            * `mrj21` - MRJ21
+            * `fc` - FC
+            * `lc` - LC
+            * `lc-pc` - LC/PC
+            * `lc-upc` - LC/UPC
+            * `lc-apc` - LC/APC
+            * `lsh` - LSH
+            * `lsh-pc` - LSH/PC
+            * `lsh-upc` - LSH/UPC
+            * `lsh-apc` - LSH/APC
+            * `mpo` - MPO
+            * `mtrj` - MTRJ
+            * `sc` - SC
+            * `sc-pc` - SC/PC
+            * `sc-upc` - SC/UPC
+            * `sc-apc` - SC/APC
+            * `st` - ST
+            * `cs` - CS
+            * `sn` - SN
+            * `sma-905` - SMA 905
+            * `sma-906` - SMA 906
+            * `urm-p2` - URM-P2
+            * `urm-p4` - URM-P4
+            * `urm-p8` - URM-P8
+            * `splice` - Splice
+            * `other` - Other
+        color:
+          type: string
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        positions:
+          type: integer
+          maximum: 1024
+          minimum: 1
+          description: Number of front ports which may be mapped
+        description:
+          type: string
+          maxLength: 200
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableRearPortTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          type: integer
+          nullable: true
+        module_type:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - 8p8c
+          - 8p6c
+          - 8p4c
+          - 8p2c
+          - 6p6c
+          - 6p4c
+          - 6p2c
+          - 4p4c
+          - 4p2c
+          - gg45
+          - tera-4p
+          - tera-2p
+          - tera-1p
+          - 110-punch
+          - bnc
+          - f
+          - n
+          - mrj21
+          - fc
+          - lc
+          - lc-pc
+          - lc-upc
+          - lc-apc
+          - lsh
+          - lsh-pc
+          - lsh-upc
+          - lsh-apc
+          - mpo
+          - mtrj
+          - sc
+          - sc-pc
+          - sc-upc
+          - sc-apc
+          - st
+          - cs
+          - sn
+          - sma-905
+          - sma-906
+          - urm-p2
+          - urm-p4
+          - urm-p8
+          - splice
+          - other
+          type: string
+          description: |-
+            * `8p8c` - 8P8C
+            * `8p6c` - 8P6C
+            * `8p4c` - 8P4C
+            * `8p2c` - 8P2C
+            * `6p6c` - 6P6C
+            * `6p4c` - 6P4C
+            * `6p2c` - 6P2C
+            * `4p4c` - 4P4C
+            * `4p2c` - 4P2C
+            * `gg45` - GG45
+            * `tera-4p` - TERA 4P
+            * `tera-2p` - TERA 2P
+            * `tera-1p` - TERA 1P
+            * `110-punch` - 110 Punch
+            * `bnc` - BNC
+            * `f` - F Connector
+            * `n` - N Connector
+            * `mrj21` - MRJ21
+            * `fc` - FC
+            * `lc` - LC
+            * `lc-pc` - LC/PC
+            * `lc-upc` - LC/UPC
+            * `lc-apc` - LC/APC
+            * `lsh` - LSH
+            * `lsh-pc` - LSH/PC
+            * `lsh-upc` - LSH/UPC
+            * `lsh-apc` - LSH/APC
+            * `mpo` - MPO
+            * `mtrj` - MTRJ
+            * `sc` - SC
+            * `sc-pc` - SC/PC
+            * `sc-upc` - SC/UPC
+            * `sc-apc` - SC/APC
+            * `st` - ST
+            * `cs` - CS
+            * `sn` - SN
+            * `sma-905` - SMA 905
+            * `sma-906` - SMA 906
+            * `urm-p2` - URM-P2
+            * `urm-p4` - URM-P4
+            * `urm-p8` - URM-P8
+            * `splice` - Splice
+            * `other` - Other
+        color:
+          type: string
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        positions:
+          type: integer
+          maximum: 1024
+          minimum: 1
+        description:
+          type: string
+          maxLength: 200
+    PatchedWritableRegionRequest:
+      type: object
+      description: Extends PrimaryModelSerializer to include MPTT support.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        parent:
+          type: integer
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableRouteTargetRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          description: Route target value (formatted in accordance with RFC 4360)
+          maxLength: 21
+        tenant:
+          type: integer
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableServiceRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          type: integer
+          nullable: true
+        virtual_machine:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        ports:
+          type: array
+          items:
+            type: integer
+            maximum: 65535
+            minimum: 1
+          title: Port numbers
+        protocol:
+          enum:
+          - tcp
+          - udp
+          - sctp
+          type: string
+          description: |-
+            * `tcp` - TCP
+            * `udp` - UDP
+            * `sctp` - SCTP
+        ipaddresses:
+          type: array
+          items:
+            type: integer
+            title: IP addresses
+          title: IP addresses
+          description: The specific IP addresses (if any) to which this service is
+            bound
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableServiceTemplateRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        ports:
+          type: array
+          items:
+            type: integer
+            maximum: 65535
+            minimum: 1
+          title: Port numbers
+        protocol:
+          enum:
+          - tcp
+          - udp
+          - sctp
+          type: string
+          description: |-
+            * `tcp` - TCP
+            * `udp` - UDP
+            * `sctp` - SCTP
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableSiteGroupRequest:
+      type: object
+      description: Extends PrimaryModelSerializer to include MPTT support.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        parent:
+          type: integer
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableSiteRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          description: Full name of the site
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        status:
+          enum:
+          - planned
+          - staging
+          - active
+          - decommissioning
+          - retired
+          type: string
+          description: |-
+            * `planned` - Planned
+            * `staging` - Staging
+            * `active` - Active
+            * `decommissioning` - Decommissioning
+            * `retired` - Retired
+        region:
+          type: integer
+          nullable: true
+        group:
+          type: integer
+          nullable: true
+        tenant:
+          type: integer
+          nullable: true
+        facility:
+          type: string
+          description: Local facility ID or description
+          maxLength: 50
+        time_zone:
+          type: string
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        physical_address:
+          type: string
+          description: Physical location of the building
+          maxLength: 200
+        shipping_address:
+          type: string
+          description: If different from the physical address
+          maxLength: 200
+        latitude:
+          type: number
+          format: double
+          maximum: 100
+          minimum: -100
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+          description: GPS coordinate in decimal format (xx.yyyyyy)
+        longitude:
+          type: number
+          format: double
+          maximum: 1000
+          minimum: -1000
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+          description: GPS coordinate in decimal format (xx.yyyyyy)
+        comments:
+          type: string
+        asns:
+          type: array
+          items:
+            type: integer
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableTenantGroupRequest:
+      type: object
+      description: Extends PrimaryModelSerializer to include MPTT support.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        parent:
+          type: integer
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableTenantRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        group:
+          type: integer
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableTokenRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        user:
+          type: integer
+        expires:
+          type: string
+          format: date-time
+          nullable: true
+        last_used:
+          type: string
+          format: date-time
+          nullable: true
+        key:
+          type: string
+          maxLength: 40
+          minLength: 40
+        write_enabled:
+          type: boolean
+          description: Permit create/update/delete operations using this key
+        description:
+          type: string
+          maxLength: 200
+    PatchedWritableUserRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        username:
+          type: string
+          minLength: 1
+          description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_
+            only.
+          pattern: ^[\w.@+-]+$
+          maxLength: 150
+        password:
+          type: string
+          writeOnly: true
+          minLength: 1
+          maxLength: 128
+        first_name:
+          type: string
+          maxLength: 150
+        last_name:
+          type: string
+          maxLength: 150
+        email:
+          type: string
+          format: email
+          title: Email address
+          maxLength: 254
+        is_staff:
+          type: boolean
+          title: Staff status
+          description: Designates whether the user can log into this admin site.
+        is_active:
+          type: boolean
+          title: Active
+          description: Designates whether this user should be treated as active. Unselect
+            this instead of deleting accounts.
+        date_joined:
+          type: string
+          format: date-time
+        groups:
+          type: array
+          items:
+            type: integer
+          description: The groups this user belongs to. A user will get all permissions
+            granted to each of their groups.
+    PatchedWritableVLANRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        site:
+          type: integer
+          nullable: true
+          description: The specific site to which this VLAN is assigned (if any)
+        group:
+          type: integer
+          nullable: true
+          description: VLAN group (optional)
+        vid:
+          type: integer
+          maximum: 4094
+          minimum: 1
+          title: ID
+          description: Numeric VLAN ID (1-4094)
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        tenant:
+          type: integer
+          nullable: true
+        status:
+          enum:
+          - active
+          - reserved
+          - deprecated
+          type: string
+          description: |-
+            Operational status of this VLAN
+
+            * `active` - Active
+            * `reserved` - Reserved
+            * `deprecated` - Deprecated
+        role:
+          type: integer
+          nullable: true
+          description: The primary function of this VLAN
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableVMInterfaceRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        virtual_machine:
+          type: integer
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        enabled:
+          type: boolean
+        parent:
+          type: integer
+          nullable: true
+          title: Parent interface
+        bridge:
+          type: integer
+          nullable: true
+          title: Bridge interface
+        mtu:
+          type: integer
+          maximum: 65536
+          minimum: 1
+          nullable: true
+        mac_address:
+          type: string
+          nullable: true
+          minLength: 1
+        description:
+          type: string
+          maxLength: 200
+        mode:
+          enum:
+          - access
+          - tagged
+          - tagged-all
+          - ''
+          type: string
+          description: |-
+            IEEE 802.1Q tagging strategy
+
+            * `access` - Access
+            * `tagged` - Tagged
+            * `tagged-all` - Tagged (All)
+        untagged_vlan:
+          type: integer
+          nullable: true
+        tagged_vlans:
+          type: array
+          items:
+            type: integer
+            title: Tagged VLANs
+        vrf:
+          type: integer
+          nullable: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableVRFRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        rd:
+          type: string
+          nullable: true
+          title: Route distinguisher
+          description: Unique route distinguisher (as defined in RFC 4364)
+          maxLength: 21
+        tenant:
+          type: integer
+          nullable: true
+        enforce_unique:
+          type: boolean
+          title: Enforce unique space
+          description: Prevent duplicate prefixes/IP addresses within this VRF
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        import_targets:
+          type: array
+          items:
+            type: integer
+        export_targets:
+          type: array
+          items:
+            type: integer
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableVirtualChassisRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        domain:
+          type: string
+          maxLength: 30
+        master:
+          type: integer
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableVirtualDeviceContextRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        device:
+          type: integer
+          nullable: true
+        identifier:
+          type: integer
+          maximum: 32767
+          minimum: 0
+          nullable: true
+          description: Numeric identifier unique to the parent device
+        tenant:
+          type: integer
+          nullable: true
+        primary_ip4:
+          type: integer
+          nullable: true
+          title: Primary IPv4
+        primary_ip6:
+          type: integer
+          nullable: true
+          title: Primary IPv6
+        status:
+          enum:
+          - active
+          - planned
+          - offline
+          type: string
+          description: |-
+            * `active` - Active
+            * `planned` - Planned
+            * `offline` - Offline
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableVirtualMachineWithConfigContextRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        status:
+          enum:
+          - offline
+          - active
+          - planned
+          - staged
+          - failed
+          - decommissioning
+          type: string
+          description: |-
+            * `offline` - Offline
+            * `active` - Active
+            * `planned` - Planned
+            * `staged` - Staged
+            * `failed` - Failed
+            * `decommissioning` - Decommissioning
+        site:
+          type: integer
+          nullable: true
+        cluster:
+          type: integer
+          nullable: true
+        device:
+          type: integer
+          nullable: true
+        role:
+          type: integer
+          nullable: true
+        tenant:
+          type: integer
+          nullable: true
+        platform:
+          type: integer
+          nullable: true
+        primary_ip4:
+          type: integer
+          nullable: true
+          title: Primary IPv4
+        primary_ip6:
+          type: integer
+          nullable: true
+          title: Primary IPv6
+        vcpus:
+          type: number
+          format: double
+          maximum: 10000
+          minimum: 0.01
+          exclusiveMaximum: true
+          nullable: true
+        memory:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          title: Memory (MB)
+        disk:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          title: Disk (GB)
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        local_context_data:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          description: Local config context data takes precedence over source contexts
+            in the final rendered config context
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableWirelessLANGroupRequest:
+      type: object
+      description: Extends PrimaryModelSerializer to include MPTT support.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        parent:
+          type: integer
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableWirelessLANRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        ssid:
+          type: string
+          minLength: 1
+          maxLength: 32
+        description:
+          type: string
+          maxLength: 200
+        group:
+          type: integer
+          nullable: true
+        status:
+          enum:
+          - active
+          - reserved
+          - disabled
+          - deprecated
+          type: string
+          description: |-
+            * `active` - Active
+            * `reserved` - Reserved
+            * `disabled` - Disabled
+            * `deprecated` - Deprecated
+        vlan:
+          type: integer
+          nullable: true
+        tenant:
+          type: integer
+          nullable: true
+        auth_type:
+          enum:
+          - open
+          - wep
+          - wpa-personal
+          - wpa-enterprise
+          - ''
+          type: string
+          description: |-
+            * `open` - Open
+            * `wep` - WEP
+            * `wpa-personal` - WPA Personal (PSK)
+            * `wpa-enterprise` - WPA Enterprise
+        auth_cipher:
+          enum:
+          - auto
+          - tkip
+          - aes
+          - ''
+          type: string
+          description: |-
+            * `auto` - Auto
+            * `tkip` - TKIP
+            * `aes` - AES
+        auth_psk:
+          type: string
+          title: Pre-shared key
+          maxLength: 64
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    PatchedWritableWirelessLinkRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        interface_a:
+          type: integer
+        interface_b:
+          type: integer
+        ssid:
+          type: string
+          maxLength: 32
+        status:
+          enum:
+          - connected
+          - planned
+          - decommissioning
+          type: string
+          description: |-
+            * `connected` - Connected
+            * `planned` - Planned
+            * `decommissioning` - Decommissioning
+        tenant:
+          type: integer
+          nullable: true
+        auth_type:
+          enum:
+          - open
+          - wep
+          - wpa-personal
+          - wpa-enterprise
+          - ''
+          type: string
+          description: |-
+            * `open` - Open
+            * `wep` - WEP
+            * `wpa-personal` - WPA Personal (PSK)
+            * `wpa-enterprise` - WPA Enterprise
+        auth_cipher:
+          enum:
+          - auto
+          - tkip
+          - aes
+          - ''
+          type: string
+          description: |-
+            * `auto` - Auto
+            * `tkip` - TKIP
+            * `aes` - AES
+        auth_psk:
+          type: string
+          title: Pre-shared key
+          maxLength: 64
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    Platform:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        manufacturer:
+          allOf:
+          - $ref: '#/components/schemas/NestedManufacturer'
+          nullable: true
+        config_template:
+          allOf:
+          - $ref: '#/components/schemas/NestedConfigTemplate'
+          nullable: true
+        napalm_driver:
+          type: string
+          description: The name of the NAPALM driver to use when interacting with
+            devices
+          maxLength: 50
+        napalm_args:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          title: NAPALM arguments
+          description: Additional arguments to pass when initiating the NAPALM driver
+            (JSON format)
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        device_count:
+          type: integer
+          readOnly: true
+        virtualmachine_count:
+          type: integer
+          readOnly: true
+      required:
+      - created
+      - device_count
+      - display
+      - id
+      - last_updated
+      - name
+      - slug
+      - url
+      - virtualmachine_count
+    PlatformRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        manufacturer:
+          allOf:
+          - $ref: '#/components/schemas/NestedManufacturerRequest'
+          nullable: true
+        config_template:
+          allOf:
+          - $ref: '#/components/schemas/NestedConfigTemplateRequest'
+          nullable: true
+        napalm_driver:
+          type: string
+          description: The name of the NAPALM driver to use when interacting with
+            devices
+          maxLength: 50
+        napalm_args:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          title: NAPALM arguments
+          description: Additional arguments to pass when initiating the NAPALM driver
+            (JSON format)
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    PowerFeed:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        power_panel:
+          $ref: '#/components/schemas/NestedPowerPanel'
+        rack:
+          allOf:
+          - $ref: '#/components/schemas/NestedRack'
+          nullable: true
+        name:
+          type: string
+          maxLength: 100
+        status:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        type:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        supply:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        phase:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        voltage:
+          type: integer
+          maximum: 32767
+          minimum: -32768
+        amperage:
+          type: integer
+          maximum: 32767
+          minimum: 1
+        max_utilization:
+          type: integer
+          maximum: 100
+          minimum: 1
+          description: Maximum permissible draw (percentage)
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        cable:
+          allOf:
+          - $ref: '#/components/schemas/NestedCable'
+          readOnly: true
+          nullable: true
+        cable_end:
+          type: string
+          readOnly: true
+        link_peers:
+          type: array
+          items: {}
+          readOnly: true
+        link_peers_type:
+          type: string
+          description: Return the type of the peer link terminations, or None.
+          readOnly: true
+        connected_endpoints:
+          type: array
+          items: {}
+          readOnly: true
+        connected_endpoints_type:
+          type: string
+          readOnly: true
+        connected_endpoints_reachable:
+          type: boolean
+          readOnly: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        _occupied:
+          type: boolean
+          readOnly: true
+          title: ' occupied'
+      required:
+      - _occupied
+      - cable
+      - cable_end
+      - connected_endpoints
+      - connected_endpoints_reachable
+      - connected_endpoints_type
+      - created
+      - display
+      - id
+      - last_updated
+      - link_peers
+      - link_peers_type
+      - name
+      - power_panel
+      - url
+    PowerFeedRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        power_panel:
+          $ref: '#/components/schemas/NestedPowerPanelRequest'
+        rack:
+          allOf:
+          - $ref: '#/components/schemas/NestedRackRequest'
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        status:
+          enum:
+          - offline
+          - active
+          - planned
+          - failed
+          type: string
+          description: |-
+            * `offline` - Offline
+            * `active` - Active
+            * `planned` - Planned
+            * `failed` - Failed
+        type:
+          enum:
+          - primary
+          - redundant
+          type: string
+          description: |-
+            * `primary` - Primary
+            * `redundant` - Redundant
+        supply:
+          enum:
+          - ac
+          - dc
+          type: string
+          description: |-
+            * `ac` - AC
+            * `dc` - DC
+        phase:
+          enum:
+          - single-phase
+          - three-phase
+          type: string
+          description: |-
+            * `single-phase` - Single phase
+            * `three-phase` - Three-phase
+        voltage:
+          type: integer
+          maximum: 32767
+          minimum: -32768
+        amperage:
+          type: integer
+          maximum: 32767
+          minimum: 1
+        max_utilization:
+          type: integer
+          maximum: 100
+          minimum: 1
+          description: Maximum permissible draw (percentage)
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - power_panel
+    PowerOutlet:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        device:
+          $ref: '#/components/schemas/NestedDevice'
+        module:
+          allOf:
+          - $ref: '#/components/schemas/ComponentNestedModule'
+          nullable: true
+        name:
+          type: string
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          nullable: true
+        power_port:
+          allOf:
+          - $ref: '#/components/schemas/NestedPowerPort'
+          nullable: true
+        feed_leg:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        cable:
+          allOf:
+          - $ref: '#/components/schemas/NestedCable'
+          readOnly: true
+          nullable: true
+        cable_end:
+          type: string
+          readOnly: true
+        link_peers:
+          type: array
+          items: {}
+          readOnly: true
+        link_peers_type:
+          type: string
+          description: Return the type of the peer link terminations, or None.
+          readOnly: true
+        connected_endpoints:
+          type: array
+          items: {}
+          readOnly: true
+        connected_endpoints_type:
+          type: string
+          readOnly: true
+        connected_endpoints_reachable:
+          type: boolean
+          readOnly: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        _occupied:
+          type: boolean
+          readOnly: true
+          title: ' occupied'
+      required:
+      - _occupied
+      - cable
+      - cable_end
+      - connected_endpoints
+      - connected_endpoints_reachable
+      - connected_endpoints_type
+      - created
+      - device
+      - display
+      - id
+      - last_updated
+      - link_peers
+      - link_peers_type
+      - name
+      - url
+    PowerOutletRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          $ref: '#/components/schemas/NestedDeviceRequest'
+        module:
+          allOf:
+          - $ref: '#/components/schemas/ComponentNestedModuleRequest'
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - iec-60320-c5
+          - iec-60320-c7
+          - iec-60320-c13
+          - iec-60320-c15
+          - iec-60320-c19
+          - iec-60320-c21
+          - iec-60309-p-n-e-4h
+          - iec-60309-p-n-e-6h
+          - iec-60309-p-n-e-9h
+          - iec-60309-2p-e-4h
+          - iec-60309-2p-e-6h
+          - iec-60309-2p-e-9h
+          - iec-60309-3p-e-4h
+          - iec-60309-3p-e-6h
+          - iec-60309-3p-e-9h
+          - iec-60309-3p-n-e-4h
+          - iec-60309-3p-n-e-6h
+          - iec-60309-3p-n-e-9h
+          - nema-1-15r
+          - nema-5-15r
+          - nema-5-20r
+          - nema-5-30r
+          - nema-5-50r
+          - nema-6-15r
+          - nema-6-20r
+          - nema-6-30r
+          - nema-6-50r
+          - nema-10-30r
+          - nema-10-50r
+          - nema-14-20r
+          - nema-14-30r
+          - nema-14-50r
+          - nema-14-60r
+          - nema-15-15r
+          - nema-15-20r
+          - nema-15-30r
+          - nema-15-50r
+          - nema-15-60r
+          - nema-l1-15r
+          - nema-l5-15r
+          - nema-l5-20r
+          - nema-l5-30r
+          - nema-l5-50r
+          - nema-l6-15r
+          - nema-l6-20r
+          - nema-l6-30r
+          - nema-l6-50r
+          - nema-l10-30r
+          - nema-l14-20r
+          - nema-l14-30r
+          - nema-l14-50r
+          - nema-l14-60r
+          - nema-l15-20r
+          - nema-l15-30r
+          - nema-l15-50r
+          - nema-l15-60r
+          - nema-l21-20r
+          - nema-l21-30r
+          - nema-l22-30r
+          - CS6360C
+          - CS6364C
+          - CS8164C
+          - CS8264C
+          - CS8364C
+          - CS8464C
+          - ita-e
+          - ita-f
+          - ita-g
+          - ita-h
+          - ita-i
+          - ita-j
+          - ita-k
+          - ita-l
+          - ita-m
+          - ita-n
+          - ita-o
+          - ita-multistandard
+          - usb-a
+          - usb-micro-b
+          - usb-c
+          - dc-terminal
+          - hdot-cx
+          - saf-d-grid
+          - neutrik-powercon-20a
+          - neutrik-powercon-32a
+          - neutrik-powercon-true1
+          - neutrik-powercon-true1-top
+          - ubiquiti-smartpower
+          - hardwired
+          - other
+          - ''
+          - null
+          type: string
+          description: |-
+            * `iec-60320-c5` - C5
+            * `iec-60320-c7` - C7
+            * `iec-60320-c13` - C13
+            * `iec-60320-c15` - C15
+            * `iec-60320-c19` - C19
+            * `iec-60320-c21` - C21
+            * `iec-60309-p-n-e-4h` - P+N+E 4H
+            * `iec-60309-p-n-e-6h` - P+N+E 6H
+            * `iec-60309-p-n-e-9h` - P+N+E 9H
+            * `iec-60309-2p-e-4h` - 2P+E 4H
+            * `iec-60309-2p-e-6h` - 2P+E 6H
+            * `iec-60309-2p-e-9h` - 2P+E 9H
+            * `iec-60309-3p-e-4h` - 3P+E 4H
+            * `iec-60309-3p-e-6h` - 3P+E 6H
+            * `iec-60309-3p-e-9h` - 3P+E 9H
+            * `iec-60309-3p-n-e-4h` - 3P+N+E 4H
+            * `iec-60309-3p-n-e-6h` - 3P+N+E 6H
+            * `iec-60309-3p-n-e-9h` - 3P+N+E 9H
+            * `nema-1-15r` - NEMA 1-15R
+            * `nema-5-15r` - NEMA 5-15R
+            * `nema-5-20r` - NEMA 5-20R
+            * `nema-5-30r` - NEMA 5-30R
+            * `nema-5-50r` - NEMA 5-50R
+            * `nema-6-15r` - NEMA 6-15R
+            * `nema-6-20r` - NEMA 6-20R
+            * `nema-6-30r` - NEMA 6-30R
+            * `nema-6-50r` - NEMA 6-50R
+            * `nema-10-30r` - NEMA 10-30R
+            * `nema-10-50r` - NEMA 10-50R
+            * `nema-14-20r` - NEMA 14-20R
+            * `nema-14-30r` - NEMA 14-30R
+            * `nema-14-50r` - NEMA 14-50R
+            * `nema-14-60r` - NEMA 14-60R
+            * `nema-15-15r` - NEMA 15-15R
+            * `nema-15-20r` - NEMA 15-20R
+            * `nema-15-30r` - NEMA 15-30R
+            * `nema-15-50r` - NEMA 15-50R
+            * `nema-15-60r` - NEMA 15-60R
+            * `nema-l1-15r` - NEMA L1-15R
+            * `nema-l5-15r` - NEMA L5-15R
+            * `nema-l5-20r` - NEMA L5-20R
+            * `nema-l5-30r` - NEMA L5-30R
+            * `nema-l5-50r` - NEMA L5-50R
+            * `nema-l6-15r` - NEMA L6-15R
+            * `nema-l6-20r` - NEMA L6-20R
+            * `nema-l6-30r` - NEMA L6-30R
+            * `nema-l6-50r` - NEMA L6-50R
+            * `nema-l10-30r` - NEMA L10-30R
+            * `nema-l14-20r` - NEMA L14-20R
+            * `nema-l14-30r` - NEMA L14-30R
+            * `nema-l14-50r` - NEMA L14-50R
+            * `nema-l14-60r` - NEMA L14-60R
+            * `nema-l15-20r` - NEMA L15-20R
+            * `nema-l15-30r` - NEMA L15-30R
+            * `nema-l15-50r` - NEMA L15-50R
+            * `nema-l15-60r` - NEMA L15-60R
+            * `nema-l21-20r` - NEMA L21-20R
+            * `nema-l21-30r` - NEMA L21-30R
+            * `nema-l22-30r` - NEMA L22-30R
+            * `CS6360C` - CS6360C
+            * `CS6364C` - CS6364C
+            * `CS8164C` - CS8164C
+            * `CS8264C` - CS8264C
+            * `CS8364C` - CS8364C
+            * `CS8464C` - CS8464C
+            * `ita-e` - ITA Type E (CEE 7/5)
+            * `ita-f` - ITA Type F (CEE 7/3)
+            * `ita-g` - ITA Type G (BS 1363)
+            * `ita-h` - ITA Type H
+            * `ita-i` - ITA Type I
+            * `ita-j` - ITA Type J
+            * `ita-k` - ITA Type K
+            * `ita-l` - ITA Type L (CEI 23-50)
+            * `ita-m` - ITA Type M (BS 546)
+            * `ita-n` - ITA Type N
+            * `ita-o` - ITA Type O
+            * `ita-multistandard` - ITA Multistandard
+            * `usb-a` - USB Type A
+            * `usb-micro-b` - USB Micro B
+            * `usb-c` - USB Type C
+            * `dc-terminal` - DC Terminal
+            * `hdot-cx` - HDOT Cx
+            * `saf-d-grid` - Saf-D-Grid
+            * `neutrik-powercon-20a` - Neutrik powerCON (20A)
+            * `neutrik-powercon-32a` - Neutrik powerCON (32A)
+            * `neutrik-powercon-true1` - Neutrik powerCON TRUE1
+            * `neutrik-powercon-true1-top` - Neutrik powerCON TRUE1 TOP
+            * `ubiquiti-smartpower` - Ubiquiti SmartPower
+            * `hardwired` - Hardwired
+            * `other` - Other
+          nullable: true
+        power_port:
+          allOf:
+          - $ref: '#/components/schemas/NestedPowerPortRequest'
+          nullable: true
+        feed_leg:
+          enum:
+          - A
+          - B
+          - C
+          - ''
+          - null
+          type: string
+          description: |-
+            * `A` - A
+            * `B` - B
+            * `C` - C
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - device
+      - name
+    PowerOutletTemplate:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        device_type:
+          allOf:
+          - $ref: '#/components/schemas/NestedDeviceType'
+          nullable: true
+        module_type:
+          allOf:
+          - $ref: '#/components/schemas/NestedModuleType'
+          nullable: true
+        name:
+          type: string
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          nullable: true
+        power_port:
+          allOf:
+          - $ref: '#/components/schemas/NestedPowerPortTemplate'
+          nullable: true
+        feed_leg:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - url
+    PowerOutletTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          allOf:
+          - $ref: '#/components/schemas/NestedDeviceTypeRequest'
+          nullable: true
+        module_type:
+          allOf:
+          - $ref: '#/components/schemas/NestedModuleTypeRequest'
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - iec-60320-c5
+          - iec-60320-c7
+          - iec-60320-c13
+          - iec-60320-c15
+          - iec-60320-c19
+          - iec-60320-c21
+          - iec-60309-p-n-e-4h
+          - iec-60309-p-n-e-6h
+          - iec-60309-p-n-e-9h
+          - iec-60309-2p-e-4h
+          - iec-60309-2p-e-6h
+          - iec-60309-2p-e-9h
+          - iec-60309-3p-e-4h
+          - iec-60309-3p-e-6h
+          - iec-60309-3p-e-9h
+          - iec-60309-3p-n-e-4h
+          - iec-60309-3p-n-e-6h
+          - iec-60309-3p-n-e-9h
+          - nema-1-15r
+          - nema-5-15r
+          - nema-5-20r
+          - nema-5-30r
+          - nema-5-50r
+          - nema-6-15r
+          - nema-6-20r
+          - nema-6-30r
+          - nema-6-50r
+          - nema-10-30r
+          - nema-10-50r
+          - nema-14-20r
+          - nema-14-30r
+          - nema-14-50r
+          - nema-14-60r
+          - nema-15-15r
+          - nema-15-20r
+          - nema-15-30r
+          - nema-15-50r
+          - nema-15-60r
+          - nema-l1-15r
+          - nema-l5-15r
+          - nema-l5-20r
+          - nema-l5-30r
+          - nema-l5-50r
+          - nema-l6-15r
+          - nema-l6-20r
+          - nema-l6-30r
+          - nema-l6-50r
+          - nema-l10-30r
+          - nema-l14-20r
+          - nema-l14-30r
+          - nema-l14-50r
+          - nema-l14-60r
+          - nema-l15-20r
+          - nema-l15-30r
+          - nema-l15-50r
+          - nema-l15-60r
+          - nema-l21-20r
+          - nema-l21-30r
+          - nema-l22-30r
+          - CS6360C
+          - CS6364C
+          - CS8164C
+          - CS8264C
+          - CS8364C
+          - CS8464C
+          - ita-e
+          - ita-f
+          - ita-g
+          - ita-h
+          - ita-i
+          - ita-j
+          - ita-k
+          - ita-l
+          - ita-m
+          - ita-n
+          - ita-o
+          - ita-multistandard
+          - usb-a
+          - usb-micro-b
+          - usb-c
+          - dc-terminal
+          - hdot-cx
+          - saf-d-grid
+          - neutrik-powercon-20a
+          - neutrik-powercon-32a
+          - neutrik-powercon-true1
+          - neutrik-powercon-true1-top
+          - ubiquiti-smartpower
+          - hardwired
+          - other
+          - ''
+          - null
+          type: string
+          description: |-
+            * `iec-60320-c5` - C5
+            * `iec-60320-c7` - C7
+            * `iec-60320-c13` - C13
+            * `iec-60320-c15` - C15
+            * `iec-60320-c19` - C19
+            * `iec-60320-c21` - C21
+            * `iec-60309-p-n-e-4h` - P+N+E 4H
+            * `iec-60309-p-n-e-6h` - P+N+E 6H
+            * `iec-60309-p-n-e-9h` - P+N+E 9H
+            * `iec-60309-2p-e-4h` - 2P+E 4H
+            * `iec-60309-2p-e-6h` - 2P+E 6H
+            * `iec-60309-2p-e-9h` - 2P+E 9H
+            * `iec-60309-3p-e-4h` - 3P+E 4H
+            * `iec-60309-3p-e-6h` - 3P+E 6H
+            * `iec-60309-3p-e-9h` - 3P+E 9H
+            * `iec-60309-3p-n-e-4h` - 3P+N+E 4H
+            * `iec-60309-3p-n-e-6h` - 3P+N+E 6H
+            * `iec-60309-3p-n-e-9h` - 3P+N+E 9H
+            * `nema-1-15r` - NEMA 1-15R
+            * `nema-5-15r` - NEMA 5-15R
+            * `nema-5-20r` - NEMA 5-20R
+            * `nema-5-30r` - NEMA 5-30R
+            * `nema-5-50r` - NEMA 5-50R
+            * `nema-6-15r` - NEMA 6-15R
+            * `nema-6-20r` - NEMA 6-20R
+            * `nema-6-30r` - NEMA 6-30R
+            * `nema-6-50r` - NEMA 6-50R
+            * `nema-10-30r` - NEMA 10-30R
+            * `nema-10-50r` - NEMA 10-50R
+            * `nema-14-20r` - NEMA 14-20R
+            * `nema-14-30r` - NEMA 14-30R
+            * `nema-14-50r` - NEMA 14-50R
+            * `nema-14-60r` - NEMA 14-60R
+            * `nema-15-15r` - NEMA 15-15R
+            * `nema-15-20r` - NEMA 15-20R
+            * `nema-15-30r` - NEMA 15-30R
+            * `nema-15-50r` - NEMA 15-50R
+            * `nema-15-60r` - NEMA 15-60R
+            * `nema-l1-15r` - NEMA L1-15R
+            * `nema-l5-15r` - NEMA L5-15R
+            * `nema-l5-20r` - NEMA L5-20R
+            * `nema-l5-30r` - NEMA L5-30R
+            * `nema-l5-50r` - NEMA L5-50R
+            * `nema-l6-15r` - NEMA L6-15R
+            * `nema-l6-20r` - NEMA L6-20R
+            * `nema-l6-30r` - NEMA L6-30R
+            * `nema-l6-50r` - NEMA L6-50R
+            * `nema-l10-30r` - NEMA L10-30R
+            * `nema-l14-20r` - NEMA L14-20R
+            * `nema-l14-30r` - NEMA L14-30R
+            * `nema-l14-50r` - NEMA L14-50R
+            * `nema-l14-60r` - NEMA L14-60R
+            * `nema-l15-20r` - NEMA L15-20R
+            * `nema-l15-30r` - NEMA L15-30R
+            * `nema-l15-50r` - NEMA L15-50R
+            * `nema-l15-60r` - NEMA L15-60R
+            * `nema-l21-20r` - NEMA L21-20R
+            * `nema-l21-30r` - NEMA L21-30R
+            * `nema-l22-30r` - NEMA L22-30R
+            * `CS6360C` - CS6360C
+            * `CS6364C` - CS6364C
+            * `CS8164C` - CS8164C
+            * `CS8264C` - CS8264C
+            * `CS8364C` - CS8364C
+            * `CS8464C` - CS8464C
+            * `ita-e` - ITA Type E (CEE 7/5)
+            * `ita-f` - ITA Type F (CEE 7/3)
+            * `ita-g` - ITA Type G (BS 1363)
+            * `ita-h` - ITA Type H
+            * `ita-i` - ITA Type I
+            * `ita-j` - ITA Type J
+            * `ita-k` - ITA Type K
+            * `ita-l` - ITA Type L (CEI 23-50)
+            * `ita-m` - ITA Type M (BS 546)
+            * `ita-n` - ITA Type N
+            * `ita-o` - ITA Type O
+            * `ita-multistandard` - ITA Multistandard
+            * `usb-a` - USB Type A
+            * `usb-micro-b` - USB Micro B
+            * `usb-c` - USB Type C
+            * `dc-terminal` - DC Terminal
+            * `hdot-cx` - HDOT Cx
+            * `saf-d-grid` - Saf-D-Grid
+            * `neutrik-powercon-20a` - Neutrik powerCON (20A)
+            * `neutrik-powercon-32a` - Neutrik powerCON (32A)
+            * `neutrik-powercon-true1` - Neutrik powerCON TRUE1
+            * `neutrik-powercon-true1-top` - Neutrik powerCON TRUE1 TOP
+            * `ubiquiti-smartpower` - Ubiquiti SmartPower
+            * `hardwired` - Hardwired
+            * `other` - Other
+          nullable: true
+        power_port:
+          allOf:
+          - $ref: '#/components/schemas/NestedPowerPortTemplateRequest'
+          nullable: true
+        feed_leg:
+          enum:
+          - A
+          - B
+          - C
+          - ''
+          - null
+          type: string
+          description: |-
+            * `A` - A
+            * `B` - B
+            * `C` - C
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+      required:
+      - name
+    PowerPanel:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        site:
+          $ref: '#/components/schemas/NestedSite'
+        location:
+          allOf:
+          - $ref: '#/components/schemas/NestedLocation'
+          nullable: true
+        name:
+          type: string
+          maxLength: 100
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        powerfeed_count:
+          type: integer
+          readOnly: true
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - powerfeed_count
+      - site
+      - url
+    PowerPanelRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        site:
+          $ref: '#/components/schemas/NestedSiteRequest'
+        location:
+          allOf:
+          - $ref: '#/components/schemas/NestedLocationRequest'
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - site
+    PowerPort:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        device:
+          $ref: '#/components/schemas/NestedDevice'
+        module:
+          allOf:
+          - $ref: '#/components/schemas/ComponentNestedModule'
+          nullable: true
+        name:
+          type: string
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          nullable: true
+        maximum_draw:
+          type: integer
+          maximum: 32767
+          minimum: 1
+          nullable: true
+          description: Maximum power draw (watts)
+        allocated_draw:
+          type: integer
+          maximum: 32767
+          minimum: 1
+          nullable: true
+          description: Allocated power draw (watts)
+        description:
+          type: string
+          maxLength: 200
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        cable:
+          allOf:
+          - $ref: '#/components/schemas/NestedCable'
+          readOnly: true
+          nullable: true
+        cable_end:
+          type: string
+          readOnly: true
+        link_peers:
+          type: array
+          items: {}
+          readOnly: true
+        link_peers_type:
+          type: string
+          description: Return the type of the peer link terminations, or None.
+          readOnly: true
+        connected_endpoints:
+          type: array
+          items: {}
+          readOnly: true
+        connected_endpoints_type:
+          type: string
+          readOnly: true
+        connected_endpoints_reachable:
+          type: boolean
+          readOnly: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        _occupied:
+          type: boolean
+          readOnly: true
+          title: ' occupied'
+      required:
+      - _occupied
+      - cable
+      - cable_end
+      - connected_endpoints
+      - connected_endpoints_reachable
+      - connected_endpoints_type
+      - created
+      - device
+      - display
+      - id
+      - last_updated
+      - link_peers
+      - link_peers_type
+      - name
+      - url
+    PowerPortRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          $ref: '#/components/schemas/NestedDeviceRequest'
+        module:
+          allOf:
+          - $ref: '#/components/schemas/ComponentNestedModuleRequest'
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - iec-60320-c6
+          - iec-60320-c8
+          - iec-60320-c14
+          - iec-60320-c16
+          - iec-60320-c20
+          - iec-60320-c22
+          - iec-60309-p-n-e-4h
+          - iec-60309-p-n-e-6h
+          - iec-60309-p-n-e-9h
+          - iec-60309-2p-e-4h
+          - iec-60309-2p-e-6h
+          - iec-60309-2p-e-9h
+          - iec-60309-3p-e-4h
+          - iec-60309-3p-e-6h
+          - iec-60309-3p-e-9h
+          - iec-60309-3p-n-e-4h
+          - iec-60309-3p-n-e-6h
+          - iec-60309-3p-n-e-9h
+          - nema-1-15p
+          - nema-5-15p
+          - nema-5-20p
+          - nema-5-30p
+          - nema-5-50p
+          - nema-6-15p
+          - nema-6-20p
+          - nema-6-30p
+          - nema-6-50p
+          - nema-10-30p
+          - nema-10-50p
+          - nema-14-20p
+          - nema-14-30p
+          - nema-14-50p
+          - nema-14-60p
+          - nema-15-15p
+          - nema-15-20p
+          - nema-15-30p
+          - nema-15-50p
+          - nema-15-60p
+          - nema-l1-15p
+          - nema-l5-15p
+          - nema-l5-20p
+          - nema-l5-30p
+          - nema-l5-50p
+          - nema-l6-15p
+          - nema-l6-20p
+          - nema-l6-30p
+          - nema-l6-50p
+          - nema-l10-30p
+          - nema-l14-20p
+          - nema-l14-30p
+          - nema-l14-50p
+          - nema-l14-60p
+          - nema-l15-20p
+          - nema-l15-30p
+          - nema-l15-50p
+          - nema-l15-60p
+          - nema-l21-20p
+          - nema-l21-30p
+          - nema-l22-30p
+          - cs6361c
+          - cs6365c
+          - cs8165c
+          - cs8265c
+          - cs8365c
+          - cs8465c
+          - ita-c
+          - ita-e
+          - ita-f
+          - ita-ef
+          - ita-g
+          - ita-h
+          - ita-i
+          - ita-j
+          - ita-k
+          - ita-l
+          - ita-m
+          - ita-n
+          - ita-o
+          - usb-a
+          - usb-b
+          - usb-c
+          - usb-mini-a
+          - usb-mini-b
+          - usb-micro-a
+          - usb-micro-b
+          - usb-micro-ab
+          - usb-3-b
+          - usb-3-micro-b
+          - dc-terminal
+          - saf-d-grid
+          - neutrik-powercon-20
+          - neutrik-powercon-32
+          - neutrik-powercon-true1
+          - neutrik-powercon-true1-top
+          - ubiquiti-smartpower
+          - hardwired
+          - other
+          - ''
+          - null
+          type: string
+          description: |-
+            * `iec-60320-c6` - C6
+            * `iec-60320-c8` - C8
+            * `iec-60320-c14` - C14
+            * `iec-60320-c16` - C16
+            * `iec-60320-c20` - C20
+            * `iec-60320-c22` - C22
+            * `iec-60309-p-n-e-4h` - P+N+E 4H
+            * `iec-60309-p-n-e-6h` - P+N+E 6H
+            * `iec-60309-p-n-e-9h` - P+N+E 9H
+            * `iec-60309-2p-e-4h` - 2P+E 4H
+            * `iec-60309-2p-e-6h` - 2P+E 6H
+            * `iec-60309-2p-e-9h` - 2P+E 9H
+            * `iec-60309-3p-e-4h` - 3P+E 4H
+            * `iec-60309-3p-e-6h` - 3P+E 6H
+            * `iec-60309-3p-e-9h` - 3P+E 9H
+            * `iec-60309-3p-n-e-4h` - 3P+N+E 4H
+            * `iec-60309-3p-n-e-6h` - 3P+N+E 6H
+            * `iec-60309-3p-n-e-9h` - 3P+N+E 9H
+            * `nema-1-15p` - NEMA 1-15P
+            * `nema-5-15p` - NEMA 5-15P
+            * `nema-5-20p` - NEMA 5-20P
+            * `nema-5-30p` - NEMA 5-30P
+            * `nema-5-50p` - NEMA 5-50P
+            * `nema-6-15p` - NEMA 6-15P
+            * `nema-6-20p` - NEMA 6-20P
+            * `nema-6-30p` - NEMA 6-30P
+            * `nema-6-50p` - NEMA 6-50P
+            * `nema-10-30p` - NEMA 10-30P
+            * `nema-10-50p` - NEMA 10-50P
+            * `nema-14-20p` - NEMA 14-20P
+            * `nema-14-30p` - NEMA 14-30P
+            * `nema-14-50p` - NEMA 14-50P
+            * `nema-14-60p` - NEMA 14-60P
+            * `nema-15-15p` - NEMA 15-15P
+            * `nema-15-20p` - NEMA 15-20P
+            * `nema-15-30p` - NEMA 15-30P
+            * `nema-15-50p` - NEMA 15-50P
+            * `nema-15-60p` - NEMA 15-60P
+            * `nema-l1-15p` - NEMA L1-15P
+            * `nema-l5-15p` - NEMA L5-15P
+            * `nema-l5-20p` - NEMA L5-20P
+            * `nema-l5-30p` - NEMA L5-30P
+            * `nema-l5-50p` - NEMA L5-50P
+            * `nema-l6-15p` - NEMA L6-15P
+            * `nema-l6-20p` - NEMA L6-20P
+            * `nema-l6-30p` - NEMA L6-30P
+            * `nema-l6-50p` - NEMA L6-50P
+            * `nema-l10-30p` - NEMA L10-30P
+            * `nema-l14-20p` - NEMA L14-20P
+            * `nema-l14-30p` - NEMA L14-30P
+            * `nema-l14-50p` - NEMA L14-50P
+            * `nema-l14-60p` - NEMA L14-60P
+            * `nema-l15-20p` - NEMA L15-20P
+            * `nema-l15-30p` - NEMA L15-30P
+            * `nema-l15-50p` - NEMA L15-50P
+            * `nema-l15-60p` - NEMA L15-60P
+            * `nema-l21-20p` - NEMA L21-20P
+            * `nema-l21-30p` - NEMA L21-30P
+            * `nema-l22-30p` - NEMA L22-30P
+            * `cs6361c` - CS6361C
+            * `cs6365c` - CS6365C
+            * `cs8165c` - CS8165C
+            * `cs8265c` - CS8265C
+            * `cs8365c` - CS8365C
+            * `cs8465c` - CS8465C
+            * `ita-c` - ITA Type C (CEE 7/16)
+            * `ita-e` - ITA Type E (CEE 7/6)
+            * `ita-f` - ITA Type F (CEE 7/4)
+            * `ita-ef` - ITA Type E/F (CEE 7/7)
+            * `ita-g` - ITA Type G (BS 1363)
+            * `ita-h` - ITA Type H
+            * `ita-i` - ITA Type I
+            * `ita-j` - ITA Type J
+            * `ita-k` - ITA Type K
+            * `ita-l` - ITA Type L (CEI 23-50)
+            * `ita-m` - ITA Type M (BS 546)
+            * `ita-n` - ITA Type N
+            * `ita-o` - ITA Type O
+            * `usb-a` - USB Type A
+            * `usb-b` - USB Type B
+            * `usb-c` - USB Type C
+            * `usb-mini-a` - USB Mini A
+            * `usb-mini-b` - USB Mini B
+            * `usb-micro-a` - USB Micro A
+            * `usb-micro-b` - USB Micro B
+            * `usb-micro-ab` - USB Micro AB
+            * `usb-3-b` - USB 3.0 Type B
+            * `usb-3-micro-b` - USB 3.0 Micro B
+            * `dc-terminal` - DC Terminal
+            * `saf-d-grid` - Saf-D-Grid
+            * `neutrik-powercon-20` - Neutrik powerCON (20A)
+            * `neutrik-powercon-32` - Neutrik powerCON (32A)
+            * `neutrik-powercon-true1` - Neutrik powerCON TRUE1
+            * `neutrik-powercon-true1-top` - Neutrik powerCON TRUE1 TOP
+            * `ubiquiti-smartpower` - Ubiquiti SmartPower
+            * `hardwired` - Hardwired
+            * `other` - Other
+          nullable: true
+        maximum_draw:
+          type: integer
+          maximum: 32767
+          minimum: 1
+          nullable: true
+          description: Maximum power draw (watts)
+        allocated_draw:
+          type: integer
+          maximum: 32767
+          minimum: 1
+          nullable: true
+          description: Allocated power draw (watts)
+        description:
+          type: string
+          maxLength: 200
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - device
+      - name
+    PowerPortTemplate:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        device_type:
+          allOf:
+          - $ref: '#/components/schemas/NestedDeviceType'
+          nullable: true
+        module_type:
+          allOf:
+          - $ref: '#/components/schemas/NestedModuleType'
+          nullable: true
+        name:
+          type: string
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          nullable: true
+        maximum_draw:
+          type: integer
+          maximum: 32767
+          minimum: 1
+          nullable: true
+          description: Maximum power draw (watts)
+        allocated_draw:
+          type: integer
+          maximum: 32767
+          minimum: 1
+          nullable: true
+          description: Allocated power draw (watts)
+        description:
+          type: string
+          maxLength: 200
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - url
+    PowerPortTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          allOf:
+          - $ref: '#/components/schemas/NestedDeviceTypeRequest'
+          nullable: true
+        module_type:
+          allOf:
+          - $ref: '#/components/schemas/NestedModuleTypeRequest'
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - iec-60320-c6
+          - iec-60320-c8
+          - iec-60320-c14
+          - iec-60320-c16
+          - iec-60320-c20
+          - iec-60320-c22
+          - iec-60309-p-n-e-4h
+          - iec-60309-p-n-e-6h
+          - iec-60309-p-n-e-9h
+          - iec-60309-2p-e-4h
+          - iec-60309-2p-e-6h
+          - iec-60309-2p-e-9h
+          - iec-60309-3p-e-4h
+          - iec-60309-3p-e-6h
+          - iec-60309-3p-e-9h
+          - iec-60309-3p-n-e-4h
+          - iec-60309-3p-n-e-6h
+          - iec-60309-3p-n-e-9h
+          - nema-1-15p
+          - nema-5-15p
+          - nema-5-20p
+          - nema-5-30p
+          - nema-5-50p
+          - nema-6-15p
+          - nema-6-20p
+          - nema-6-30p
+          - nema-6-50p
+          - nema-10-30p
+          - nema-10-50p
+          - nema-14-20p
+          - nema-14-30p
+          - nema-14-50p
+          - nema-14-60p
+          - nema-15-15p
+          - nema-15-20p
+          - nema-15-30p
+          - nema-15-50p
+          - nema-15-60p
+          - nema-l1-15p
+          - nema-l5-15p
+          - nema-l5-20p
+          - nema-l5-30p
+          - nema-l5-50p
+          - nema-l6-15p
+          - nema-l6-20p
+          - nema-l6-30p
+          - nema-l6-50p
+          - nema-l10-30p
+          - nema-l14-20p
+          - nema-l14-30p
+          - nema-l14-50p
+          - nema-l14-60p
+          - nema-l15-20p
+          - nema-l15-30p
+          - nema-l15-50p
+          - nema-l15-60p
+          - nema-l21-20p
+          - nema-l21-30p
+          - nema-l22-30p
+          - cs6361c
+          - cs6365c
+          - cs8165c
+          - cs8265c
+          - cs8365c
+          - cs8465c
+          - ita-c
+          - ita-e
+          - ita-f
+          - ita-ef
+          - ita-g
+          - ita-h
+          - ita-i
+          - ita-j
+          - ita-k
+          - ita-l
+          - ita-m
+          - ita-n
+          - ita-o
+          - usb-a
+          - usb-b
+          - usb-c
+          - usb-mini-a
+          - usb-mini-b
+          - usb-micro-a
+          - usb-micro-b
+          - usb-micro-ab
+          - usb-3-b
+          - usb-3-micro-b
+          - dc-terminal
+          - saf-d-grid
+          - neutrik-powercon-20
+          - neutrik-powercon-32
+          - neutrik-powercon-true1
+          - neutrik-powercon-true1-top
+          - ubiquiti-smartpower
+          - hardwired
+          - other
+          - ''
+          - null
+          type: string
+          description: |-
+            * `iec-60320-c6` - C6
+            * `iec-60320-c8` - C8
+            * `iec-60320-c14` - C14
+            * `iec-60320-c16` - C16
+            * `iec-60320-c20` - C20
+            * `iec-60320-c22` - C22
+            * `iec-60309-p-n-e-4h` - P+N+E 4H
+            * `iec-60309-p-n-e-6h` - P+N+E 6H
+            * `iec-60309-p-n-e-9h` - P+N+E 9H
+            * `iec-60309-2p-e-4h` - 2P+E 4H
+            * `iec-60309-2p-e-6h` - 2P+E 6H
+            * `iec-60309-2p-e-9h` - 2P+E 9H
+            * `iec-60309-3p-e-4h` - 3P+E 4H
+            * `iec-60309-3p-e-6h` - 3P+E 6H
+            * `iec-60309-3p-e-9h` - 3P+E 9H
+            * `iec-60309-3p-n-e-4h` - 3P+N+E 4H
+            * `iec-60309-3p-n-e-6h` - 3P+N+E 6H
+            * `iec-60309-3p-n-e-9h` - 3P+N+E 9H
+            * `nema-1-15p` - NEMA 1-15P
+            * `nema-5-15p` - NEMA 5-15P
+            * `nema-5-20p` - NEMA 5-20P
+            * `nema-5-30p` - NEMA 5-30P
+            * `nema-5-50p` - NEMA 5-50P
+            * `nema-6-15p` - NEMA 6-15P
+            * `nema-6-20p` - NEMA 6-20P
+            * `nema-6-30p` - NEMA 6-30P
+            * `nema-6-50p` - NEMA 6-50P
+            * `nema-10-30p` - NEMA 10-30P
+            * `nema-10-50p` - NEMA 10-50P
+            * `nema-14-20p` - NEMA 14-20P
+            * `nema-14-30p` - NEMA 14-30P
+            * `nema-14-50p` - NEMA 14-50P
+            * `nema-14-60p` - NEMA 14-60P
+            * `nema-15-15p` - NEMA 15-15P
+            * `nema-15-20p` - NEMA 15-20P
+            * `nema-15-30p` - NEMA 15-30P
+            * `nema-15-50p` - NEMA 15-50P
+            * `nema-15-60p` - NEMA 15-60P
+            * `nema-l1-15p` - NEMA L1-15P
+            * `nema-l5-15p` - NEMA L5-15P
+            * `nema-l5-20p` - NEMA L5-20P
+            * `nema-l5-30p` - NEMA L5-30P
+            * `nema-l5-50p` - NEMA L5-50P
+            * `nema-l6-15p` - NEMA L6-15P
+            * `nema-l6-20p` - NEMA L6-20P
+            * `nema-l6-30p` - NEMA L6-30P
+            * `nema-l6-50p` - NEMA L6-50P
+            * `nema-l10-30p` - NEMA L10-30P
+            * `nema-l14-20p` - NEMA L14-20P
+            * `nema-l14-30p` - NEMA L14-30P
+            * `nema-l14-50p` - NEMA L14-50P
+            * `nema-l14-60p` - NEMA L14-60P
+            * `nema-l15-20p` - NEMA L15-20P
+            * `nema-l15-30p` - NEMA L15-30P
+            * `nema-l15-50p` - NEMA L15-50P
+            * `nema-l15-60p` - NEMA L15-60P
+            * `nema-l21-20p` - NEMA L21-20P
+            * `nema-l21-30p` - NEMA L21-30P
+            * `nema-l22-30p` - NEMA L22-30P
+            * `cs6361c` - CS6361C
+            * `cs6365c` - CS6365C
+            * `cs8165c` - CS8165C
+            * `cs8265c` - CS8265C
+            * `cs8365c` - CS8365C
+            * `cs8465c` - CS8465C
+            * `ita-c` - ITA Type C (CEE 7/16)
+            * `ita-e` - ITA Type E (CEE 7/6)
+            * `ita-f` - ITA Type F (CEE 7/4)
+            * `ita-ef` - ITA Type E/F (CEE 7/7)
+            * `ita-g` - ITA Type G (BS 1363)
+            * `ita-h` - ITA Type H
+            * `ita-i` - ITA Type I
+            * `ita-j` - ITA Type J
+            * `ita-k` - ITA Type K
+            * `ita-l` - ITA Type L (CEI 23-50)
+            * `ita-m` - ITA Type M (BS 546)
+            * `ita-n` - ITA Type N
+            * `ita-o` - ITA Type O
+            * `usb-a` - USB Type A
+            * `usb-b` - USB Type B
+            * `usb-c` - USB Type C
+            * `usb-mini-a` - USB Mini A
+            * `usb-mini-b` - USB Mini B
+            * `usb-micro-a` - USB Micro A
+            * `usb-micro-b` - USB Micro B
+            * `usb-micro-ab` - USB Micro AB
+            * `usb-3-b` - USB 3.0 Type B
+            * `usb-3-micro-b` - USB 3.0 Micro B
+            * `dc-terminal` - DC Terminal
+            * `saf-d-grid` - Saf-D-Grid
+            * `neutrik-powercon-20` - Neutrik powerCON (20A)
+            * `neutrik-powercon-32` - Neutrik powerCON (32A)
+            * `neutrik-powercon-true1` - Neutrik powerCON TRUE1
+            * `neutrik-powercon-true1-top` - Neutrik powerCON TRUE1 TOP
+            * `ubiquiti-smartpower` - Ubiquiti SmartPower
+            * `hardwired` - Hardwired
+            * `other` - Other
+          nullable: true
+        maximum_draw:
+          type: integer
+          maximum: 32767
+          minimum: 1
+          nullable: true
+          description: Maximum power draw (watts)
+        allocated_draw:
+          type: integer
+          maximum: 32767
+          minimum: 1
+          nullable: true
+          description: Allocated power draw (watts)
+        description:
+          type: string
+          maxLength: 200
+      required:
+      - name
+    Prefix:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        family:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          readOnly: true
+        prefix:
+          type: string
+        site:
+          allOf:
+          - $ref: '#/components/schemas/NestedSite'
+          nullable: true
+        vrf:
+          allOf:
+          - $ref: '#/components/schemas/NestedVRF'
+          nullable: true
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenant'
+          nullable: true
+        vlan:
+          allOf:
+          - $ref: '#/components/schemas/NestedVLAN'
+          nullable: true
+        status:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        role:
+          allOf:
+          - $ref: '#/components/schemas/NestedRole'
+          nullable: true
+        is_pool:
+          type: boolean
+          title: Is a pool
+          description: All IP addresses within this prefix are considered usable
+        mark_utilized:
+          type: boolean
+          description: Treat as 100% utilized
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        children:
+          type: integer
+          readOnly: true
+        _depth:
+          type: integer
+          readOnly: true
+          title: ' depth'
+      required:
+      - _depth
+      - children
+      - created
+      - display
+      - family
+      - id
+      - last_updated
+      - prefix
+      - url
+    PrefixLengthRequest:
+      type: object
+      properties:
+        prefix_length:
+          type: integer
+      required:
+      - prefix_length
+    PrefixRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        prefix:
+          type: string
+          minLength: 1
+        site:
+          allOf:
+          - $ref: '#/components/schemas/NestedSiteRequest'
+          nullable: true
+        vrf:
+          allOf:
+          - $ref: '#/components/schemas/NestedVRFRequest'
+          nullable: true
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenantRequest'
+          nullable: true
+        vlan:
+          allOf:
+          - $ref: '#/components/schemas/NestedVLANRequest'
+          nullable: true
+        status:
+          enum:
+          - container
+          - active
+          - reserved
+          - deprecated
+          type: string
+          description: |-
+            * `container` - Container
+            * `active` - Active
+            * `reserved` - Reserved
+            * `deprecated` - Deprecated
+        role:
+          allOf:
+          - $ref: '#/components/schemas/NestedRoleRequest'
+          nullable: true
+        is_pool:
+          type: boolean
+          title: Is a pool
+          description: All IP addresses within this prefix are considered usable
+        mark_utilized:
+          type: boolean
+          description: Treat as 100% utilized
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - prefix
+    Provider:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          description: Full name of the provider
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        accounts:
+          type: array
+          items:
+            type: integer
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        asns:
+          type: array
+          items:
+            type: integer
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        circuit_count:
+          type: integer
+          readOnly: true
+      required:
+      - circuit_count
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - slug
+      - url
+    ProviderAccount:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        provider:
+          $ref: '#/components/schemas/NestedProvider'
+        name:
+          type: string
+          maxLength: 100
+        account:
+          type: string
+          title: Account ID
+          maxLength: 100
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - account
+      - created
+      - display
+      - id
+      - last_updated
+      - provider
+      - url
+    ProviderAccountRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        provider:
+          $ref: '#/components/schemas/NestedProviderRequest'
+        name:
+          type: string
+          maxLength: 100
+        account:
+          type: string
+          minLength: 1
+          title: Account ID
+          maxLength: 100
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - account
+      - provider
+    ProviderNetwork:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        provider:
+          $ref: '#/components/schemas/NestedProvider'
+        name:
+          type: string
+          maxLength: 100
+        service_id:
+          type: string
+          maxLength: 100
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - provider
+      - url
+    ProviderNetworkRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        provider:
+          $ref: '#/components/schemas/NestedProviderRequest'
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        service_id:
+          type: string
+          maxLength: 100
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - provider
+    ProviderRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          description: Full name of the provider
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        accounts:
+          type: array
+          items:
+            type: integer
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        asns:
+          type: array
+          items:
+            type: integer
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    RIR:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        is_private:
+          type: boolean
+          title: Private
+          description: IP space managed by this RIR is considered private
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        aggregate_count:
+          type: integer
+          readOnly: true
+      required:
+      - aggregate_count
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - slug
+      - url
+    RIRRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        is_private:
+          type: boolean
+          title: Private
+          description: IP space managed by this RIR is considered private
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    Rack:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        facility_id:
+          type: string
+          nullable: true
+          maxLength: 50
+        site:
+          $ref: '#/components/schemas/NestedSite'
+        location:
+          allOf:
+          - $ref: '#/components/schemas/NestedLocation'
+          nullable: true
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenant'
+          nullable: true
+        status:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        role:
+          allOf:
+          - $ref: '#/components/schemas/NestedRackRole'
+          nullable: true
+        serial:
+          type: string
+          title: Serial number
+          maxLength: 50
+        asset_tag:
+          type: string
+          nullable: true
+          description: A unique tag used to identify this rack
+          maxLength: 50
+        type:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          nullable: true
+        width:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        u_height:
+          type: integer
+          maximum: 100
+          minimum: 1
+          title: Height (U)
+          description: Height in rack units
+        weight:
+          type: number
+          format: double
+          maximum: 1000000
+          minimum: -1000000
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+        max_weight:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          description: Maximum load capacity for the rack
+        weight_unit:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          nullable: true
+        desc_units:
+          type: boolean
+          title: Descending units
+          description: Units are numbered top-to-bottom
+        outer_width:
+          type: integer
+          maximum: 32767
+          minimum: 0
+          nullable: true
+          description: Outer dimension of rack (width)
+        outer_depth:
+          type: integer
+          maximum: 32767
+          minimum: 0
+          nullable: true
+          description: Outer dimension of rack (depth)
+        outer_unit:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+          nullable: true
+        mounting_depth:
+          type: integer
+          maximum: 32767
+          minimum: 0
+          nullable: true
+          description: Maximum depth of a mounted device, in millimeters. For four-post
+            racks, this is the distance between the front and rear rails.
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        device_count:
+          type: integer
+          readOnly: true
+        powerfeed_count:
+          type: integer
+          readOnly: true
+      required:
+      - created
+      - device_count
+      - display
+      - id
+      - last_updated
+      - name
+      - powerfeed_count
+      - site
+      - url
+    RackRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        facility_id:
+          type: string
+          nullable: true
+          maxLength: 50
+        site:
+          $ref: '#/components/schemas/NestedSiteRequest'
+        location:
+          allOf:
+          - $ref: '#/components/schemas/NestedLocationRequest'
+          nullable: true
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenantRequest'
+          nullable: true
+        status:
+          enum:
+          - reserved
+          - available
+          - planned
+          - active
+          - deprecated
+          type: string
+          description: |-
+            * `reserved` - Reserved
+            * `available` - Available
+            * `planned` - Planned
+            * `active` - Active
+            * `deprecated` - Deprecated
+        role:
+          allOf:
+          - $ref: '#/components/schemas/NestedRackRoleRequest'
+          nullable: true
+        serial:
+          type: string
+          title: Serial number
+          maxLength: 50
+        asset_tag:
+          type: string
+          nullable: true
+          description: A unique tag used to identify this rack
+          maxLength: 50
+        type:
+          enum:
+          - 2-post-frame
+          - 4-post-frame
+          - 4-post-cabinet
+          - wall-frame
+          - wall-frame-vertical
+          - wall-cabinet
+          - wall-cabinet-vertical
+          - ''
+          - null
+          type: string
+          description: |-
+            * `2-post-frame` - 2-post frame
+            * `4-post-frame` - 4-post frame
+            * `4-post-cabinet` - 4-post cabinet
+            * `wall-frame` - Wall-mounted frame
+            * `wall-frame-vertical` - Wall-mounted frame (vertical)
+            * `wall-cabinet` - Wall-mounted cabinet
+            * `wall-cabinet-vertical` - Wall-mounted cabinet (vertical)
+          nullable: true
+        width:
+          enum:
+          - 10
+          - 19
+          - 21
+          - 23
+          type: integer
+          description: |-
+            * `10` - 10 inches
+            * `19` - 19 inches
+            * `21` - 21 inches
+            * `23` - 23 inches
+        u_height:
+          type: integer
+          maximum: 100
+          minimum: 1
+          title: Height (U)
+          description: Height in rack units
+        weight:
+          type: number
+          format: double
+          maximum: 1000000
+          minimum: -1000000
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+        max_weight:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          description: Maximum load capacity for the rack
+        weight_unit:
+          enum:
+          - kg
+          - g
+          - lb
+          - oz
+          - ''
+          - null
+          type: string
+          description: |-
+            * `kg` - Kilograms
+            * `g` - Grams
+            * `lb` - Pounds
+            * `oz` - Ounces
+          nullable: true
+        desc_units:
+          type: boolean
+          title: Descending units
+          description: Units are numbered top-to-bottom
+        outer_width:
+          type: integer
+          maximum: 32767
+          minimum: 0
+          nullable: true
+          description: Outer dimension of rack (width)
+        outer_depth:
+          type: integer
+          maximum: 32767
+          minimum: 0
+          nullable: true
+          description: Outer dimension of rack (depth)
+        outer_unit:
+          enum:
+          - mm
+          - in
+          - ''
+          - null
+          type: string
+          description: |-
+            * `mm` - Millimeters
+            * `in` - Inches
+          nullable: true
+        mounting_depth:
+          type: integer
+          maximum: 32767
+          minimum: 0
+          nullable: true
+          description: Maximum depth of a mounted device, in millimeters. For four-post
+            racks, this is the distance between the front and rear rails.
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - site
+    RackReservation:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        rack:
+          $ref: '#/components/schemas/NestedRack'
+        units:
+          type: array
+          items:
+            type: integer
+            maximum: 32767
+            minimum: 0
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        user:
+          $ref: '#/components/schemas/NestedUser'
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenant'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - created
+      - description
+      - display
+      - id
+      - last_updated
+      - rack
+      - units
+      - url
+      - user
+    RackReservationRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        rack:
+          $ref: '#/components/schemas/NestedRackRequest'
+        units:
+          type: array
+          items:
+            type: integer
+            maximum: 32767
+            minimum: 0
+        user:
+          $ref: '#/components/schemas/NestedUserRequest'
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenantRequest'
+          nullable: true
+        description:
+          type: string
+          minLength: 1
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - description
+      - rack
+      - units
+      - user
+    RackRole:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        color:
+          type: string
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        rack_count:
+          type: integer
+          readOnly: true
+      required:
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - rack_count
+      - slug
+      - url
+    RackRoleRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        color:
+          type: string
+          minLength: 1
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    RearPort:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        device:
+          $ref: '#/components/schemas/NestedDevice'
+        module:
+          allOf:
+          - $ref: '#/components/schemas/ComponentNestedModule'
+          nullable: true
+        name:
+          type: string
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        color:
+          type: string
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        positions:
+          type: integer
+          maximum: 1024
+          minimum: 1
+          description: Number of front ports which may be mapped
+        description:
+          type: string
+          maxLength: 200
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        cable:
+          allOf:
+          - $ref: '#/components/schemas/NestedCable'
+          readOnly: true
+          nullable: true
+        cable_end:
+          type: string
+          readOnly: true
+        link_peers:
+          type: array
+          items: {}
+          readOnly: true
+        link_peers_type:
+          type: string
+          description: Return the type of the peer link terminations, or None.
+          readOnly: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        _occupied:
+          type: boolean
+          readOnly: true
+          title: ' occupied'
+      required:
+      - _occupied
+      - cable
+      - cable_end
+      - created
+      - device
+      - display
+      - id
+      - last_updated
+      - link_peers
+      - link_peers_type
+      - name
+      - type
+      - url
+    RearPortRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          $ref: '#/components/schemas/NestedDeviceRequest'
+        module:
+          allOf:
+          - $ref: '#/components/schemas/ComponentNestedModuleRequest'
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - 8p8c
+          - 8p6c
+          - 8p4c
+          - 8p2c
+          - 6p6c
+          - 6p4c
+          - 6p2c
+          - 4p4c
+          - 4p2c
+          - gg45
+          - tera-4p
+          - tera-2p
+          - tera-1p
+          - 110-punch
+          - bnc
+          - f
+          - n
+          - mrj21
+          - fc
+          - lc
+          - lc-pc
+          - lc-upc
+          - lc-apc
+          - lsh
+          - lsh-pc
+          - lsh-upc
+          - lsh-apc
+          - mpo
+          - mtrj
+          - sc
+          - sc-pc
+          - sc-upc
+          - sc-apc
+          - st
+          - cs
+          - sn
+          - sma-905
+          - sma-906
+          - urm-p2
+          - urm-p4
+          - urm-p8
+          - splice
+          - other
+          type: string
+          description: |-
+            * `8p8c` - 8P8C
+            * `8p6c` - 8P6C
+            * `8p4c` - 8P4C
+            * `8p2c` - 8P2C
+            * `6p6c` - 6P6C
+            * `6p4c` - 6P4C
+            * `6p2c` - 6P2C
+            * `4p4c` - 4P4C
+            * `4p2c` - 4P2C
+            * `gg45` - GG45
+            * `tera-4p` - TERA 4P
+            * `tera-2p` - TERA 2P
+            * `tera-1p` - TERA 1P
+            * `110-punch` - 110 Punch
+            * `bnc` - BNC
+            * `f` - F Connector
+            * `n` - N Connector
+            * `mrj21` - MRJ21
+            * `fc` - FC
+            * `lc` - LC
+            * `lc-pc` - LC/PC
+            * `lc-upc` - LC/UPC
+            * `lc-apc` - LC/APC
+            * `lsh` - LSH
+            * `lsh-pc` - LSH/PC
+            * `lsh-upc` - LSH/UPC
+            * `lsh-apc` - LSH/APC
+            * `mpo` - MPO
+            * `mtrj` - MTRJ
+            * `sc` - SC
+            * `sc-pc` - SC/PC
+            * `sc-upc` - SC/UPC
+            * `sc-apc` - SC/APC
+            * `st` - ST
+            * `cs` - CS
+            * `sn` - SN
+            * `sma-905` - SMA 905
+            * `sma-906` - SMA 906
+            * `urm-p2` - URM-P2
+            * `urm-p4` - URM-P4
+            * `urm-p8` - URM-P8
+            * `splice` - Splice
+            * `other` - Other
+        color:
+          type: string
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        positions:
+          type: integer
+          maximum: 1024
+          minimum: 1
+          description: Number of front ports which may be mapped
+        description:
+          type: string
+          maxLength: 200
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - device
+      - name
+      - type
+    RearPortTemplate:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        device_type:
+          allOf:
+          - $ref: '#/components/schemas/NestedDeviceType'
+          nullable: true
+        module_type:
+          allOf:
+          - $ref: '#/components/schemas/NestedModuleType'
+          nullable: true
+        name:
+          type: string
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        color:
+          type: string
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        positions:
+          type: integer
+          maximum: 1024
+          minimum: 1
+        description:
+          type: string
+          maxLength: 200
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - type
+      - url
+    RearPortTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          allOf:
+          - $ref: '#/components/schemas/NestedDeviceTypeRequest'
+          nullable: true
+        module_type:
+          allOf:
+          - $ref: '#/components/schemas/NestedModuleTypeRequest'
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - 8p8c
+          - 8p6c
+          - 8p4c
+          - 8p2c
+          - 6p6c
+          - 6p4c
+          - 6p2c
+          - 4p4c
+          - 4p2c
+          - gg45
+          - tera-4p
+          - tera-2p
+          - tera-1p
+          - 110-punch
+          - bnc
+          - f
+          - n
+          - mrj21
+          - fc
+          - lc
+          - lc-pc
+          - lc-upc
+          - lc-apc
+          - lsh
+          - lsh-pc
+          - lsh-upc
+          - lsh-apc
+          - mpo
+          - mtrj
+          - sc
+          - sc-pc
+          - sc-upc
+          - sc-apc
+          - st
+          - cs
+          - sn
+          - sma-905
+          - sma-906
+          - urm-p2
+          - urm-p4
+          - urm-p8
+          - splice
+          - other
+          type: string
+          description: |-
+            * `8p8c` - 8P8C
+            * `8p6c` - 8P6C
+            * `8p4c` - 8P4C
+            * `8p2c` - 8P2C
+            * `6p6c` - 6P6C
+            * `6p4c` - 6P4C
+            * `6p2c` - 6P2C
+            * `4p4c` - 4P4C
+            * `4p2c` - 4P2C
+            * `gg45` - GG45
+            * `tera-4p` - TERA 4P
+            * `tera-2p` - TERA 2P
+            * `tera-1p` - TERA 1P
+            * `110-punch` - 110 Punch
+            * `bnc` - BNC
+            * `f` - F Connector
+            * `n` - N Connector
+            * `mrj21` - MRJ21
+            * `fc` - FC
+            * `lc` - LC
+            * `lc-pc` - LC/PC
+            * `lc-upc` - LC/UPC
+            * `lc-apc` - LC/APC
+            * `lsh` - LSH
+            * `lsh-pc` - LSH/PC
+            * `lsh-upc` - LSH/UPC
+            * `lsh-apc` - LSH/APC
+            * `mpo` - MPO
+            * `mtrj` - MTRJ
+            * `sc` - SC
+            * `sc-pc` - SC/PC
+            * `sc-upc` - SC/UPC
+            * `sc-apc` - SC/APC
+            * `st` - ST
+            * `cs` - CS
+            * `sn` - SN
+            * `sma-905` - SMA 905
+            * `sma-906` - SMA 906
+            * `urm-p2` - URM-P2
+            * `urm-p4` - URM-P4
+            * `urm-p8` - URM-P8
+            * `splice` - Splice
+            * `other` - Other
+        color:
+          type: string
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        positions:
+          type: integer
+          maximum: 1024
+          minimum: 1
+        description:
+          type: string
+          maxLength: 200
+      required:
+      - name
+      - type
+    Region:
+      type: object
+      description: Extends PrimaryModelSerializer to include MPTT support.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        parent:
+          allOf:
+          - $ref: '#/components/schemas/NestedRegion'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        site_count:
+          type: integer
+          readOnly: true
+        _depth:
+          type: integer
+          readOnly: true
+          title: ' depth'
+      required:
+      - _depth
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - site_count
+      - slug
+      - url
+    RegionRequest:
+      type: object
+      description: Extends PrimaryModelSerializer to include MPTT support.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        parent:
+          allOf:
+          - $ref: '#/components/schemas/NestedRegionRequest'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    Role:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        weight:
+          type: integer
+          maximum: 32767
+          minimum: 0
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        prefix_count:
+          type: integer
+          readOnly: true
+        vlan_count:
+          type: integer
+          readOnly: true
+      required:
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - prefix_count
+      - slug
+      - url
+      - vlan_count
+    RoleRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        weight:
+          type: integer
+          maximum: 32767
+          minimum: 0
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    RouteTarget:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          description: Route target value (formatted in accordance with RFC 4360)
+          maxLength: 21
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenant'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - url
+    RouteTargetRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          description: Route target value (formatted in accordance with RFC 4360)
+          maxLength: 21
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenantRequest'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+    SavedFilter:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        content_types:
+          type: array
+          items:
+            type: string
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        description:
+          type: string
+          maxLength: 200
+        user:
+          type: integer
+          nullable: true
+        weight:
+          type: integer
+          maximum: 32767
+          minimum: 0
+        enabled:
+          type: boolean
+        shared:
+          type: boolean
+        parameters:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - content_types
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - parameters
+      - slug
+      - url
+    SavedFilterRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        content_types:
+          type: array
+          items:
+            type: string
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        description:
+          type: string
+          maxLength: 200
+        user:
+          type: integer
+          nullable: true
+        weight:
+          type: integer
+          maximum: 32767
+          minimum: 0
+        enabled:
+          type: boolean
+        shared:
+          type: boolean
+        parameters:
+          type: object
+          additionalProperties: {}
+      required:
+      - content_types
+      - name
+      - parameters
+      - slug
+    Service:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        device:
+          allOf:
+          - $ref: '#/components/schemas/NestedDevice'
+          nullable: true
+        virtual_machine:
+          allOf:
+          - $ref: '#/components/schemas/NestedVirtualMachine'
+          nullable: true
+        name:
+          type: string
+          maxLength: 100
+        ports:
+          type: array
+          items:
+            type: integer
+            maximum: 65535
+            minimum: 1
+          title: Port numbers
+        protocol:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        ipaddresses:
+          type: array
+          items:
+            type: integer
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - ports
+      - url
+    ServiceRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          allOf:
+          - $ref: '#/components/schemas/NestedDeviceRequest'
+          nullable: true
+        virtual_machine:
+          allOf:
+          - $ref: '#/components/schemas/NestedVirtualMachineRequest'
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        ports:
+          type: array
+          items:
+            type: integer
+            maximum: 65535
+            minimum: 1
+          title: Port numbers
+        protocol:
+          enum:
+          - tcp
+          - udp
+          - sctp
+          type: string
+          description: |-
+            * `tcp` - TCP
+            * `udp` - UDP
+            * `sctp` - SCTP
+        ipaddresses:
+          type: array
+          items:
+            type: integer
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - ports
+    ServiceTemplate:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        ports:
+          type: array
+          items:
+            type: integer
+            maximum: 65535
+            minimum: 1
+          title: Port numbers
+        protocol:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - ports
+      - url
+    ServiceTemplateRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        ports:
+          type: array
+          items:
+            type: integer
+            maximum: 65535
+            minimum: 1
+          title: Port numbers
+        protocol:
+          enum:
+          - tcp
+          - udp
+          - sctp
+          type: string
+          description: |-
+            * `tcp` - TCP
+            * `udp` - UDP
+            * `sctp` - SCTP
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - ports
+    Site:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          description: Full name of the site
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        status:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        region:
+          allOf:
+          - $ref: '#/components/schemas/NestedRegion'
+          nullable: true
+        group:
+          allOf:
+          - $ref: '#/components/schemas/NestedSiteGroup'
+          nullable: true
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenant'
+          nullable: true
+        facility:
+          type: string
+          description: Local facility ID or description
+          maxLength: 50
+        time_zone:
+          type: string
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        physical_address:
+          type: string
+          description: Physical location of the building
+          maxLength: 200
+        shipping_address:
+          type: string
+          description: If different from the physical address
+          maxLength: 200
+        latitude:
+          type: number
+          format: double
+          maximum: 100
+          minimum: -100
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+          description: GPS coordinate in decimal format (xx.yyyyyy)
+        longitude:
+          type: number
+          format: double
+          maximum: 1000
+          minimum: -1000
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+          description: GPS coordinate in decimal format (xx.yyyyyy)
+        comments:
+          type: string
+        asns:
+          type: array
+          items:
+            type: integer
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        circuit_count:
+          type: integer
+          readOnly: true
+        device_count:
+          type: integer
+          readOnly: true
+        prefix_count:
+          type: integer
+          readOnly: true
+        rack_count:
+          type: integer
+          readOnly: true
+        virtualmachine_count:
+          type: integer
+          readOnly: true
+        vlan_count:
+          type: integer
+          readOnly: true
+      required:
+      - circuit_count
+      - created
+      - device_count
+      - display
+      - id
+      - last_updated
+      - name
+      - prefix_count
+      - rack_count
+      - slug
+      - url
+      - virtualmachine_count
+      - vlan_count
+    SiteGroup:
+      type: object
+      description: Extends PrimaryModelSerializer to include MPTT support.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        parent:
+          allOf:
+          - $ref: '#/components/schemas/NestedSiteGroup'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        site_count:
+          type: integer
+          readOnly: true
+        _depth:
+          type: integer
+          readOnly: true
+          title: ' depth'
+      required:
+      - _depth
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - site_count
+      - slug
+      - url
+    SiteGroupRequest:
+      type: object
+      description: Extends PrimaryModelSerializer to include MPTT support.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        parent:
+          allOf:
+          - $ref: '#/components/schemas/NestedSiteGroupRequest'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    SiteRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          description: Full name of the site
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        status:
+          enum:
+          - planned
+          - staging
+          - active
+          - decommissioning
+          - retired
+          type: string
+          description: |-
+            * `planned` - Planned
+            * `staging` - Staging
+            * `active` - Active
+            * `decommissioning` - Decommissioning
+            * `retired` - Retired
+        region:
+          allOf:
+          - $ref: '#/components/schemas/NestedRegionRequest'
+          nullable: true
+        group:
+          allOf:
+          - $ref: '#/components/schemas/NestedSiteGroupRequest'
+          nullable: true
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenantRequest'
+          nullable: true
+        facility:
+          type: string
+          description: Local facility ID or description
+          maxLength: 50
+        time_zone:
+          type: string
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        physical_address:
+          type: string
+          description: Physical location of the building
+          maxLength: 200
+        shipping_address:
+          type: string
+          description: If different from the physical address
+          maxLength: 200
+        latitude:
+          type: number
+          format: double
+          maximum: 100
+          minimum: -100
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+          description: GPS coordinate in decimal format (xx.yyyyyy)
+        longitude:
+          type: number
+          format: double
+          maximum: 1000
+          minimum: -1000
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+          description: GPS coordinate in decimal format (xx.yyyyyy)
+        comments:
+          type: string
+        asns:
+          type: array
+          items:
+            type: integer
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    Tag:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          pattern: ^[-\w]+$
+          maxLength: 100
+        color:
+          type: string
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        description:
+          type: string
+          maxLength: 200
+        tagged_items:
+          type: integer
+          readOnly: true
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - slug
+      - tagged_items
+      - url
+    TagRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          pattern: ^[-\w]+$
+          maxLength: 100
+        color:
+          type: string
+          minLength: 1
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        description:
+          type: string
+          maxLength: 200
+      required:
+      - name
+      - slug
+    Tenant:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        group:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenantGroup'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        circuit_count:
+          type: integer
+          readOnly: true
+        device_count:
+          type: integer
+          readOnly: true
+        ipaddress_count:
+          type: integer
+          readOnly: true
+        prefix_count:
+          type: integer
+          readOnly: true
+        rack_count:
+          type: integer
+          readOnly: true
+        site_count:
+          type: integer
+          readOnly: true
+        virtualmachine_count:
+          type: integer
+          readOnly: true
+        vlan_count:
+          type: integer
+          readOnly: true
+        vrf_count:
+          type: integer
+          readOnly: true
+        cluster_count:
+          type: integer
+          readOnly: true
+      required:
+      - circuit_count
+      - cluster_count
+      - created
+      - device_count
+      - display
+      - id
+      - ipaddress_count
+      - last_updated
+      - name
+      - prefix_count
+      - rack_count
+      - site_count
+      - slug
+      - url
+      - virtualmachine_count
+      - vlan_count
+      - vrf_count
+    TenantGroup:
+      type: object
+      description: Extends PrimaryModelSerializer to include MPTT support.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        parent:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenantGroup'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        tenant_count:
+          type: integer
+          readOnly: true
+        _depth:
+          type: integer
+          readOnly: true
+          title: ' depth'
+      required:
+      - _depth
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - slug
+      - tenant_count
+      - url
+    TenantGroupRequest:
+      type: object
+      description: Extends PrimaryModelSerializer to include MPTT support.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        parent:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenantGroupRequest'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    TenantRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        group:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenantGroupRequest'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    Token:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        user:
+          $ref: '#/components/schemas/NestedUser'
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+        expires:
+          type: string
+          format: date-time
+          nullable: true
+        last_used:
+          type: string
+          format: date-time
+          nullable: true
+        key:
+          type: string
+          maxLength: 40
+          minLength: 40
+        write_enabled:
+          type: boolean
+          description: Permit create/update/delete operations using this key
+        description:
+          type: string
+          maxLength: 200
+      required:
+      - created
+      - display
+      - id
+      - url
+      - user
+    TokenRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        user:
+          $ref: '#/components/schemas/NestedUserRequest'
+        expires:
+          type: string
+          format: date-time
+          nullable: true
+        last_used:
+          type: string
+          format: date-time
+          nullable: true
+        key:
+          type: string
+          maxLength: 40
+          minLength: 40
+        write_enabled:
+          type: boolean
+          description: Permit create/update/delete operations using this key
+        description:
+          type: string
+          maxLength: 200
+      required:
+      - user
+    User:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        username:
+          type: string
+          description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_
+            only.
+          pattern: ^[\w.@+-]+$
+          maxLength: 150
+        first_name:
+          type: string
+          maxLength: 150
+        last_name:
+          type: string
+          maxLength: 150
+        email:
+          type: string
+          format: email
+          title: Email address
+          maxLength: 254
+        is_staff:
+          type: boolean
+          title: Staff status
+          description: Designates whether the user can log into this admin site.
+        is_active:
+          type: boolean
+          title: Active
+          description: Designates whether this user should be treated as active. Unselect
+            this instead of deleting accounts.
+        date_joined:
+          type: string
+          format: date-time
+        groups:
+          type: array
+          items:
+            type: integer
+      required:
+      - display
+      - id
+      - url
+      - username
+    UserRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        username:
+          type: string
+          minLength: 1
+          description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_
+            only.
+          pattern: ^[\w.@+-]+$
+          maxLength: 150
+        password:
+          type: string
+          writeOnly: true
+          minLength: 1
+          maxLength: 128
+        first_name:
+          type: string
+          maxLength: 150
+        last_name:
+          type: string
+          maxLength: 150
+        email:
+          type: string
+          format: email
+          title: Email address
+          maxLength: 254
+        is_staff:
+          type: boolean
+          title: Staff status
+          description: Designates whether the user can log into this admin site.
+        is_active:
+          type: boolean
+          title: Active
+          description: Designates whether this user should be treated as active. Unselect
+            this instead of deleting accounts.
+        date_joined:
+          type: string
+          format: date-time
+        groups:
+          type: array
+          items:
+            type: integer
+      required:
+      - password
+      - username
+    VLAN:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        site:
+          allOf:
+          - $ref: '#/components/schemas/NestedSite'
+          nullable: true
+        group:
+          allOf:
+          - $ref: '#/components/schemas/NestedVLANGroup'
+          nullable: true
+        vid:
+          type: integer
+          maximum: 4094
+          minimum: 1
+          title: ID
+          description: Numeric VLAN ID (1-4094)
+        name:
+          type: string
+          maxLength: 64
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenant'
+          nullable: true
+        status:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        role:
+          allOf:
+          - $ref: '#/components/schemas/NestedRole'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        l2vpn_termination:
+          allOf:
+          - $ref: '#/components/schemas/NestedL2VPNTermination'
+          readOnly: true
+          nullable: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        prefix_count:
+          type: integer
+          readOnly: true
+      required:
+      - created
+      - display
+      - id
+      - l2vpn_termination
+      - last_updated
+      - name
+      - prefix_count
+      - url
+      - vid
+    VLANGroup:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        scope_type:
+          type: string
+          nullable: true
+        scope_id:
+          type: integer
+          nullable: true
+        scope:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          readOnly: true
+        min_vid:
+          type: integer
+          maximum: 4094
+          minimum: 1
+          title: Minimum VLAN ID
+          description: Lowest permissible ID of a child VLAN
+        max_vid:
+          type: integer
+          maximum: 4094
+          minimum: 1
+          title: Maximum VLAN ID
+          description: Highest permissible ID of a child VLAN
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        vlan_count:
+          type: integer
+          readOnly: true
+      required:
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - scope
+      - slug
+      - url
+      - vlan_count
+    VLANGroupRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        scope_type:
+          type: string
+          nullable: true
+        scope_id:
+          type: integer
+          nullable: true
+        min_vid:
+          type: integer
+          maximum: 4094
+          minimum: 1
+          title: Minimum VLAN ID
+          description: Lowest permissible ID of a child VLAN
+        max_vid:
+          type: integer
+          maximum: 4094
+          minimum: 1
+          title: Maximum VLAN ID
+          description: Highest permissible ID of a child VLAN
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    VLANRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        site:
+          allOf:
+          - $ref: '#/components/schemas/NestedSiteRequest'
+          nullable: true
+        group:
+          allOf:
+          - $ref: '#/components/schemas/NestedVLANGroupRequest'
+          nullable: true
+        vid:
+          type: integer
+          maximum: 4094
+          minimum: 1
+          title: ID
+          description: Numeric VLAN ID (1-4094)
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenantRequest'
+          nullable: true
+        status:
+          enum:
+          - active
+          - reserved
+          - deprecated
+          type: string
+          description: |-
+            * `active` - Active
+            * `reserved` - Reserved
+            * `deprecated` - Deprecated
+        role:
+          allOf:
+          - $ref: '#/components/schemas/NestedRoleRequest'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - vid
+    VMInterface:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        virtual_machine:
+          $ref: '#/components/schemas/NestedVirtualMachine'
+        name:
+          type: string
+          maxLength: 64
+        enabled:
+          type: boolean
+        parent:
+          allOf:
+          - $ref: '#/components/schemas/NestedVMInterface'
+          nullable: true
+        bridge:
+          allOf:
+          - $ref: '#/components/schemas/NestedVMInterface'
+          nullable: true
+        mtu:
+          type: integer
+          maximum: 65536
+          minimum: 1
+          nullable: true
+        mac_address:
+          type: string
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        mode:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        untagged_vlan:
+          allOf:
+          - $ref: '#/components/schemas/NestedVLAN'
+          nullable: true
+        tagged_vlans:
+          type: array
+          items:
+            type: integer
+        vrf:
+          allOf:
+          - $ref: '#/components/schemas/NestedVRF'
+          nullable: true
+        l2vpn_termination:
+          allOf:
+          - $ref: '#/components/schemas/NestedL2VPNTermination'
+          readOnly: true
+          nullable: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        count_ipaddresses:
+          type: integer
+          readOnly: true
+        count_fhrp_groups:
+          type: integer
+          readOnly: true
+      required:
+      - count_fhrp_groups
+      - count_ipaddresses
+      - created
+      - display
+      - id
+      - l2vpn_termination
+      - last_updated
+      - name
+      - url
+      - virtual_machine
+    VMInterfaceRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        virtual_machine:
+          $ref: '#/components/schemas/NestedVirtualMachineRequest'
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        enabled:
+          type: boolean
+        parent:
+          allOf:
+          - $ref: '#/components/schemas/NestedVMInterfaceRequest'
+          nullable: true
+        bridge:
+          allOf:
+          - $ref: '#/components/schemas/NestedVMInterfaceRequest'
+          nullable: true
+        mtu:
+          type: integer
+          maximum: 65536
+          minimum: 1
+          nullable: true
+        mac_address:
+          type: string
+          nullable: true
+          minLength: 1
+        description:
+          type: string
+          maxLength: 200
+        mode:
+          enum:
+          - access
+          - tagged
+          - tagged-all
+          - ''
+          type: string
+          description: |-
+            * `access` - Access
+            * `tagged` - Tagged
+            * `tagged-all` - Tagged (All)
+        untagged_vlan:
+          allOf:
+          - $ref: '#/components/schemas/NestedVLANRequest'
+          nullable: true
+        tagged_vlans:
+          type: array
+          items:
+            type: integer
+        vrf:
+          allOf:
+          - $ref: '#/components/schemas/NestedVRFRequest'
+          nullable: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - virtual_machine
+    VRF:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        rd:
+          type: string
+          nullable: true
+          title: Route distinguisher
+          description: Unique route distinguisher (as defined in RFC 4364)
+          maxLength: 21
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenant'
+          nullable: true
+        enforce_unique:
+          type: boolean
+          title: Enforce unique space
+          description: Prevent duplicate prefixes/IP addresses within this VRF
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        import_targets:
+          type: array
+          items:
+            type: integer
+        export_targets:
+          type: array
+          items:
+            type: integer
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        ipaddress_count:
+          type: integer
+          readOnly: true
+        prefix_count:
+          type: integer
+          readOnly: true
+      required:
+      - created
+      - display
+      - id
+      - ipaddress_count
+      - last_updated
+      - name
+      - prefix_count
+      - url
+    VRFRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        rd:
+          type: string
+          nullable: true
+          title: Route distinguisher
+          description: Unique route distinguisher (as defined in RFC 4364)
+          maxLength: 21
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenantRequest'
+          nullable: true
+        enforce_unique:
+          type: boolean
+          title: Enforce unique space
+          description: Prevent duplicate prefixes/IP addresses within this VRF
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        import_targets:
+          type: array
+          items:
+            type: integer
+        export_targets:
+          type: array
+          items:
+            type: integer
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+    VirtualChassis:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 64
+        domain:
+          type: string
+          maxLength: 30
+        master:
+          allOf:
+          - $ref: '#/components/schemas/NestedDevice'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        member_count:
+          type: integer
+          readOnly: true
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - display
+      - id
+      - last_updated
+      - member_count
+      - name
+      - url
+    VirtualChassisRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        domain:
+          type: string
+          maxLength: 30
+        master:
+          allOf:
+          - $ref: '#/components/schemas/NestedDeviceRequest'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+    VirtualDeviceContext:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 64
+        device:
+          $ref: '#/components/schemas/NestedDevice'
+        identifier:
+          type: integer
+          maximum: 32767
+          minimum: 0
+          nullable: true
+          description: Numeric identifier unique to the parent device
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenant'
+          nullable: true
+        primary_ip:
+          allOf:
+          - $ref: '#/components/schemas/NestedIPAddress'
+          readOnly: true
+          nullable: true
+        primary_ip4:
+          allOf:
+          - $ref: '#/components/schemas/NestedIPAddress'
+          nullable: true
+        primary_ip6:
+          allOf:
+          - $ref: '#/components/schemas/NestedIPAddress'
+          nullable: true
+        status:
+          enum:
+          - active
+          - planned
+          - offline
+          type: string
+          description: |-
+            * `active` - Active
+            * `planned` - Planned
+            * `offline` - Offline
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        interface_count:
+          type: integer
+          readOnly: true
+      required:
+      - created
+      - device
+      - display
+      - id
+      - interface_count
+      - last_updated
+      - name
+      - primary_ip
+      - status
+      - url
+    VirtualDeviceContextRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        device:
+          $ref: '#/components/schemas/NestedDeviceRequest'
+        identifier:
+          type: integer
+          maximum: 32767
+          minimum: 0
+          nullable: true
+          description: Numeric identifier unique to the parent device
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenantRequest'
+          nullable: true
+        primary_ip4:
+          allOf:
+          - $ref: '#/components/schemas/NestedIPAddressRequest'
+          nullable: true
+        primary_ip6:
+          allOf:
+          - $ref: '#/components/schemas/NestedIPAddressRequest'
+          nullable: true
+        status:
+          enum:
+          - active
+          - planned
+          - offline
+          type: string
+          description: |-
+            * `active` - Active
+            * `planned` - Planned
+            * `offline` - Offline
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - device
+      - name
+      - status
+    VirtualMachineWithConfigContext:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 64
+        status:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        site:
+          allOf:
+          - $ref: '#/components/schemas/NestedSite'
+          nullable: true
+        cluster:
+          allOf:
+          - $ref: '#/components/schemas/NestedCluster'
+          nullable: true
+        device:
+          allOf:
+          - $ref: '#/components/schemas/NestedDevice'
+          nullable: true
+        role:
+          allOf:
+          - $ref: '#/components/schemas/NestedDeviceRole'
+          nullable: true
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenant'
+          nullable: true
+        platform:
+          allOf:
+          - $ref: '#/components/schemas/NestedPlatform'
+          nullable: true
+        primary_ip:
+          allOf:
+          - $ref: '#/components/schemas/NestedIPAddress'
+          readOnly: true
+        primary_ip4:
+          allOf:
+          - $ref: '#/components/schemas/NestedIPAddress'
+          nullable: true
+        primary_ip6:
+          allOf:
+          - $ref: '#/components/schemas/NestedIPAddress'
+          nullable: true
+        vcpus:
+          type: number
+          format: double
+          maximum: 10000
+          minimum: 0.01
+          exclusiveMaximum: true
+          nullable: true
+        memory:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          title: Memory (MB)
+        disk:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          title: Disk (GB)
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        local_context_data:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          description: Local config context data takes precedence over source contexts
+            in the final rendered config context
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        config_context:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          readOnly: true
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - config_context
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - primary_ip
+      - url
+    VirtualMachineWithConfigContextRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        status:
+          enum:
+          - offline
+          - active
+          - planned
+          - staged
+          - failed
+          - decommissioning
+          type: string
+          description: |-
+            * `offline` - Offline
+            * `active` - Active
+            * `planned` - Planned
+            * `staged` - Staged
+            * `failed` - Failed
+            * `decommissioning` - Decommissioning
+        site:
+          allOf:
+          - $ref: '#/components/schemas/NestedSiteRequest'
+          nullable: true
+        cluster:
+          allOf:
+          - $ref: '#/components/schemas/NestedClusterRequest'
+          nullable: true
+        device:
+          allOf:
+          - $ref: '#/components/schemas/NestedDeviceRequest'
+          nullable: true
+        role:
+          allOf:
+          - $ref: '#/components/schemas/NestedDeviceRoleRequest'
+          nullable: true
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenantRequest'
+          nullable: true
+        platform:
+          allOf:
+          - $ref: '#/components/schemas/NestedPlatformRequest'
+          nullable: true
+        primary_ip4:
+          allOf:
+          - $ref: '#/components/schemas/NestedIPAddressRequest'
+          nullable: true
+        primary_ip6:
+          allOf:
+          - $ref: '#/components/schemas/NestedIPAddressRequest'
+          nullable: true
+        vcpus:
+          type: number
+          format: double
+          maximum: 10000
+          minimum: 0.01
+          exclusiveMaximum: true
+          nullable: true
+        memory:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          title: Memory (MB)
+        disk:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          title: Disk (GB)
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        local_context_data:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          description: Local config context data takes precedence over source contexts
+            in the final rendered config context
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+    Webhook:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        content_types:
+          type: array
+          items:
+            type: string
+        name:
+          type: string
+          maxLength: 150
+        type_create:
+          type: boolean
+          description: Triggers when a matching object is created.
+        type_update:
+          type: boolean
+          description: Triggers when a matching object is updated.
+        type_delete:
+          type: boolean
+          description: Triggers when a matching object is deleted.
+        type_job_start:
+          type: boolean
+          description: Triggers when a job for a matching object is started.
+        type_job_end:
+          type: boolean
+          description: Triggers when a job for a matching object terminates.
+        payload_url:
+          type: string
+          title: URL
+          description: This URL will be called using the HTTP method defined when
+            the webhook is called. Jinja2 template processing is supported with the
+            same context as the request body.
+          maxLength: 500
+        enabled:
+          type: boolean
+        http_method:
+          enum:
+          - GET
+          - POST
+          - PUT
+          - PATCH
+          - DELETE
+          type: string
+          description: |-
+            * `GET` - GET
+            * `POST` - POST
+            * `PUT` - PUT
+            * `PATCH` - PATCH
+            * `DELETE` - DELETE
+        http_content_type:
+          type: string
+          description: The complete list of official content types is available <a
+            href="https://www.iana.org/assignments/media-types/media-types.xhtml">here</a>.
+          maxLength: 100
+        additional_headers:
+          type: string
+          description: 'User-supplied HTTP headers to be sent with the request in
+            addition to the HTTP content type. Headers should be defined in the format
+            <code>Name: Value</code>. Jinja2 template processing is supported with
+            the same context as the request body (below).'
+        body_template:
+          type: string
+          description: 'Jinja2 template for a custom request body. If blank, a JSON
+            object representing the change will be included. Available context data
+            includes: <code>event</code>, <code>model</code>, <code>timestamp</code>,
+            <code>username</code>, <code>request_id</code>, and <code>data</code>.'
+        secret:
+          type: string
+          description: When provided, the request will include a 'X-Hook-Signature'
+            header containing a HMAC hex digest of the payload body using the secret
+            as the key. The secret is not transmitted in the request.
+          maxLength: 255
+        conditions:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          description: A set of conditions which determine whether the webhook will
+            be generated.
+        ssl_verification:
+          type: boolean
+          description: Enable SSL certificate verification. Disable with caution!
+        ca_file_path:
+          type: string
+          nullable: true
+          description: The specific CA certificate file to use for SSL verification.
+            Leave blank to use the system defaults.
+          maxLength: 4096
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - content_types
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - payload_url
+      - url
+    WebhookRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        content_types:
+          type: array
+          items:
+            type: string
+        name:
+          type: string
+          minLength: 1
+          maxLength: 150
+        type_create:
+          type: boolean
+          description: Triggers when a matching object is created.
+        type_update:
+          type: boolean
+          description: Triggers when a matching object is updated.
+        type_delete:
+          type: boolean
+          description: Triggers when a matching object is deleted.
+        type_job_start:
+          type: boolean
+          description: Triggers when a job for a matching object is started.
+        type_job_end:
+          type: boolean
+          description: Triggers when a job for a matching object terminates.
+        payload_url:
+          type: string
+          minLength: 1
+          title: URL
+          description: This URL will be called using the HTTP method defined when
+            the webhook is called. Jinja2 template processing is supported with the
+            same context as the request body.
+          maxLength: 500
+        enabled:
+          type: boolean
+        http_method:
+          enum:
+          - GET
+          - POST
+          - PUT
+          - PATCH
+          - DELETE
+          type: string
+          description: |-
+            * `GET` - GET
+            * `POST` - POST
+            * `PUT` - PUT
+            * `PATCH` - PATCH
+            * `DELETE` - DELETE
+        http_content_type:
+          type: string
+          minLength: 1
+          description: The complete list of official content types is available <a
+            href="https://www.iana.org/assignments/media-types/media-types.xhtml">here</a>.
+          maxLength: 100
+        additional_headers:
+          type: string
+          description: 'User-supplied HTTP headers to be sent with the request in
+            addition to the HTTP content type. Headers should be defined in the format
+            <code>Name: Value</code>. Jinja2 template processing is supported with
+            the same context as the request body (below).'
+        body_template:
+          type: string
+          description: 'Jinja2 template for a custom request body. If blank, a JSON
+            object representing the change will be included. Available context data
+            includes: <code>event</code>, <code>model</code>, <code>timestamp</code>,
+            <code>username</code>, <code>request_id</code>, and <code>data</code>.'
+        secret:
+          type: string
+          description: When provided, the request will include a 'X-Hook-Signature'
+            header containing a HMAC hex digest of the payload body using the secret
+            as the key. The secret is not transmitted in the request.
+          maxLength: 255
+        conditions:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          description: A set of conditions which determine whether the webhook will
+            be generated.
+        ssl_verification:
+          type: boolean
+          description: Enable SSL certificate verification. Disable with caution!
+        ca_file_path:
+          type: string
+          nullable: true
+          description: The specific CA certificate file to use for SSL verification.
+            Leave blank to use the system defaults.
+          maxLength: 4096
+      required:
+      - content_types
+      - name
+      - payload_url
+    WirelessLAN:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        ssid:
+          type: string
+          maxLength: 32
+        description:
+          type: string
+          maxLength: 200
+        group:
+          allOf:
+          - $ref: '#/components/schemas/NestedWirelessLANGroup'
+          nullable: true
+        status:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        vlan:
+          allOf:
+          - $ref: '#/components/schemas/NestedVLAN'
+          nullable: true
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenant'
+          nullable: true
+        auth_type:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        auth_cipher:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        auth_psk:
+          type: string
+          title: Pre-shared key
+          maxLength: 64
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - display
+      - id
+      - last_updated
+      - ssid
+      - url
+    WirelessLANGroup:
+      type: object
+      description: Extends PrimaryModelSerializer to include MPTT support.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        slug:
+          type: string
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        parent:
+          allOf:
+          - $ref: '#/components/schemas/NestedWirelessLANGroup'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        wirelesslan_count:
+          type: integer
+          readOnly: true
+        _depth:
+          type: integer
+          readOnly: true
+          title: ' depth'
+      required:
+      - _depth
+      - created
+      - display
+      - id
+      - last_updated
+      - name
+      - slug
+      - url
+      - wirelesslan_count
+    WirelessLANGroupRequest:
+      type: object
+      description: Extends PrimaryModelSerializer to include MPTT support.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        parent:
+          allOf:
+          - $ref: '#/components/schemas/NestedWirelessLANGroupRequest'
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    WirelessLANRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        ssid:
+          type: string
+          minLength: 1
+          maxLength: 32
+        description:
+          type: string
+          maxLength: 200
+        group:
+          allOf:
+          - $ref: '#/components/schemas/NestedWirelessLANGroupRequest'
+          nullable: true
+        status:
+          enum:
+          - active
+          - reserved
+          - disabled
+          - deprecated
+          - ''
+          type: string
+          description: |-
+            * `active` - Active
+            * `reserved` - Reserved
+            * `disabled` - Disabled
+            * `deprecated` - Deprecated
+        vlan:
+          allOf:
+          - $ref: '#/components/schemas/NestedVLANRequest'
+          nullable: true
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenantRequest'
+          nullable: true
+        auth_type:
+          enum:
+          - open
+          - wep
+          - wpa-personal
+          - wpa-enterprise
+          - ''
+          type: string
+          description: |-
+            * `open` - Open
+            * `wep` - WEP
+            * `wpa-personal` - WPA Personal (PSK)
+            * `wpa-enterprise` - WPA Enterprise
+        auth_cipher:
+          enum:
+          - auto
+          - tkip
+          - aes
+          - ''
+          type: string
+          description: |-
+            * `auto` - Auto
+            * `tkip` - TKIP
+            * `aes` - AES
+        auth_psk:
+          type: string
+          title: Pre-shared key
+          maxLength: 64
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - ssid
+    WirelessLink:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        url:
+          type: string
+          format: uri
+          readOnly: true
+        display:
+          type: string
+          readOnly: true
+        interface_a:
+          $ref: '#/components/schemas/NestedInterface'
+        interface_b:
+          $ref: '#/components/schemas/NestedInterface'
+        ssid:
+          type: string
+          maxLength: 32
+        status:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenant'
+          nullable: true
+        auth_type:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        auth_cipher:
+          type: object
+          properties:
+            value:
+              type: string
+            label:
+              type: string
+        auth_psk:
+          type: string
+          title: Pre-shared key
+          maxLength: 64
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTag'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+      required:
+      - created
+      - display
+      - id
+      - interface_a
+      - interface_b
+      - last_updated
+      - url
+    WirelessLinkRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        interface_a:
+          $ref: '#/components/schemas/NestedInterfaceRequest'
+        interface_b:
+          $ref: '#/components/schemas/NestedInterfaceRequest'
+        ssid:
+          type: string
+          maxLength: 32
+        status:
+          enum:
+          - connected
+          - planned
+          - decommissioning
+          type: string
+          description: |-
+            * `connected` - Connected
+            * `planned` - Planned
+            * `decommissioning` - Decommissioning
+        tenant:
+          allOf:
+          - $ref: '#/components/schemas/NestedTenantRequest'
+          nullable: true
+        auth_type:
+          enum:
+          - open
+          - wep
+          - wpa-personal
+          - wpa-enterprise
+          - ''
+          type: string
+          description: |-
+            * `open` - Open
+            * `wep` - WEP
+            * `wpa-personal` - WPA Personal (PSK)
+            * `wpa-enterprise` - WPA Enterprise
+        auth_cipher:
+          enum:
+          - auto
+          - tkip
+          - aes
+          - ''
+          type: string
+          description: |-
+            * `auto` - Auto
+            * `tkip` - TKIP
+            * `aes` - AES
+        auth_psk:
+          type: string
+          title: Pre-shared key
+          maxLength: 64
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - interface_a
+      - interface_b
+    WritableASNRangeRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        rir:
+          type: integer
+        start:
+          type: integer
+          maximum: 4294967295
+          minimum: 1
+          format: int64
+        end:
+          type: integer
+          maximum: 4294967295
+          minimum: 1
+          format: int64
+        tenant:
+          type: integer
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - end
+      - name
+      - rir
+      - slug
+      - start
+    WritableASNRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        asn:
+          type: integer
+          maximum: 4294967295
+          minimum: 1
+          format: int64
+          description: 16- or 32-bit autonomous system number
+        rir:
+          type: integer
+          description: Regional Internet Registry responsible for this AS number space
+        tenant:
+          type: integer
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - asn
+      - rir
+    WritableAggregateRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        prefix:
+          type: string
+          minLength: 1
+        rir:
+          type: integer
+          description: Regional Internet Registry responsible for this IP space
+        tenant:
+          type: integer
+          nullable: true
+        date_added:
+          type: string
+          format: date
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - prefix
+      - rir
+    WritableCableRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        type:
+          enum:
+          - cat3
+          - cat5
+          - cat5e
+          - cat6
+          - cat6a
+          - cat7
+          - cat7a
+          - cat8
+          - dac-active
+          - dac-passive
+          - mrj21-trunk
+          - coaxial
+          - mmf
+          - mmf-om1
+          - mmf-om2
+          - mmf-om3
+          - mmf-om4
+          - mmf-om5
+          - smf
+          - smf-os1
+          - smf-os2
+          - aoc
+          - power
+          - ''
+          type: string
+          description: |-
+            * `cat3` - CAT3
+            * `cat5` - CAT5
+            * `cat5e` - CAT5e
+            * `cat6` - CAT6
+            * `cat6a` - CAT6a
+            * `cat7` - CAT7
+            * `cat7a` - CAT7a
+            * `cat8` - CAT8
+            * `dac-active` - Direct Attach Copper (Active)
+            * `dac-passive` - Direct Attach Copper (Passive)
+            * `mrj21-trunk` - MRJ21 Trunk
+            * `coaxial` - Coaxial
+            * `mmf` - Multimode Fiber
+            * `mmf-om1` - Multimode Fiber (OM1)
+            * `mmf-om2` - Multimode Fiber (OM2)
+            * `mmf-om3` - Multimode Fiber (OM3)
+            * `mmf-om4` - Multimode Fiber (OM4)
+            * `mmf-om5` - Multimode Fiber (OM5)
+            * `smf` - Singlemode Fiber
+            * `smf-os1` - Singlemode Fiber (OS1)
+            * `smf-os2` - Singlemode Fiber (OS2)
+            * `aoc` - Active Optical Cabling (AOC)
+            * `power` - Power
+        a_terminations:
+          type: array
+          items:
+            $ref: '#/components/schemas/GenericObjectRequest'
+        b_terminations:
+          type: array
+          items:
+            $ref: '#/components/schemas/GenericObjectRequest'
+        status:
+          enum:
+          - connected
+          - planned
+          - decommissioning
+          type: string
+          description: |-
+            * `connected` - Connected
+            * `planned` - Planned
+            * `decommissioning` - Decommissioning
+        tenant:
+          type: integer
+          nullable: true
+        label:
+          type: string
+          maxLength: 100
+        color:
+          type: string
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        length:
+          type: number
+          format: double
+          maximum: 1000000
+          minimum: -1000000
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+        length_unit:
+          enum:
+          - km
+          - m
+          - cm
+          - mi
+          - ft
+          - in
+          - ''
+          type: string
+          description: |-
+            * `km` - Kilometers
+            * `m` - Meters
+            * `cm` - Centimeters
+            * `mi` - Miles
+            * `ft` - Feet
+            * `in` - Inches
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+    WritableCircuitRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        cid:
+          type: string
+          minLength: 1
+          title: Circuit ID
+          description: Unique circuit ID
+          maxLength: 100
+        provider:
+          type: integer
+        provider_account:
+          type: integer
+          nullable: true
+        type:
+          type: integer
+        status:
+          enum:
+          - planned
+          - provisioning
+          - active
+          - offline
+          - deprovisioning
+          - decommissioned
+          type: string
+          description: |-
+            * `planned` - Planned
+            * `provisioning` - Provisioning
+            * `active` - Active
+            * `offline` - Offline
+            * `deprovisioning` - Deprovisioning
+            * `decommissioned` - Decommissioned
+        tenant:
+          type: integer
+          nullable: true
+        install_date:
+          type: string
+          format: date
+          nullable: true
+          title: Installed
+        termination_date:
+          type: string
+          format: date
+          nullable: true
+          title: Terminates
+        commit_rate:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          title: Commit rate (Kbps)
+          description: Committed rate
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - cid
+      - provider
+      - type
+    WritableCircuitTerminationRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        circuit:
+          type: integer
+        term_side:
+          enum:
+          - A
+          - Z
+          type: string
+          description: |-
+            * `A` - A
+            * `Z` - Z
+          title: Termination
+        site:
+          type: integer
+          nullable: true
+        provider_network:
+          type: integer
+          nullable: true
+        port_speed:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          title: Port speed (Kbps)
+          description: Physical circuit speed
+        upstream_speed:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          title: Upstream speed (Kbps)
+          description: Upstream speed, if different from port speed
+        xconnect_id:
+          type: string
+          title: Cross-connect ID
+          description: ID of the local cross-connect
+          maxLength: 50
+        pp_info:
+          type: string
+          title: Patch panel/port(s)
+          description: Patch panel ID and port number(s)
+          maxLength: 100
+        description:
+          type: string
+          maxLength: 200
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - circuit
+      - term_side
+    WritableClusterRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        type:
+          type: integer
+        group:
+          type: integer
+          nullable: true
+        status:
+          enum:
+          - planned
+          - staging
+          - active
+          - decommissioning
+          - offline
+          type: string
+          description: |-
+            * `planned` - Planned
+            * `staging` - Staging
+            * `active` - Active
+            * `decommissioning` - Decommissioning
+            * `offline` - Offline
+        tenant:
+          type: integer
+          nullable: true
+        site:
+          type: integer
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - type
+    WritableConfigContextRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        weight:
+          type: integer
+          maximum: 32767
+          minimum: 0
+        description:
+          type: string
+          maxLength: 200
+        is_active:
+          type: boolean
+        regions:
+          type: array
+          items:
+            type: integer
+        site_groups:
+          type: array
+          items:
+            type: integer
+        sites:
+          type: array
+          items:
+            type: integer
+        locations:
+          type: array
+          items:
+            type: integer
+        device_types:
+          type: array
+          items:
+            type: integer
+        roles:
+          type: array
+          items:
+            type: integer
+        platforms:
+          type: array
+          items:
+            type: integer
+        cluster_types:
+          type: array
+          items:
+            type: integer
+        cluster_groups:
+          type: array
+          items:
+            type: integer
+        clusters:
+          type: array
+          items:
+            type: integer
+        tenant_groups:
+          type: array
+          items:
+            type: integer
+        tenants:
+          type: array
+          items:
+            type: integer
+        tags:
+          type: array
+          items:
+            type: string
+            minLength: 1
+        data_source:
+          type: integer
+          nullable: true
+          description: Remote data source
+        data:
+          type: object
+          additionalProperties: {}
+      required:
+      - data
+      - name
+    WritableConfigTemplateRequest:
+      type: object
+      description: |-
+        Introduces support for Tag assignment. Adds `tags` serialization, and handles tag assignment
+        on create() and update().
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        description:
+          type: string
+          maxLength: 200
+        environment_params:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          description: Any <a href="https://jinja.palletsprojects.com/en/3.1.x/api/#jinja2.Environment">additional
+            parameters</a> to pass when constructing the Jinja2 environment.
+        template_code:
+          type: string
+          minLength: 1
+          description: Jinja2 template code.
+        data_source:
+          type: integer
+          nullable: true
+          description: Remote data source
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+      required:
+      - name
+      - template_code
+    WritableConsolePortRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          type: integer
+        module:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - de-9
+          - db-25
+          - rj-11
+          - rj-12
+          - rj-45
+          - mini-din-8
+          - usb-a
+          - usb-b
+          - usb-c
+          - usb-mini-a
+          - usb-mini-b
+          - usb-micro-a
+          - usb-micro-b
+          - usb-micro-ab
+          - other
+          - ''
+          type: string
+          description: |-
+            Physical port type
+
+            * `de-9` - DE-9
+            * `db-25` - DB-25
+            * `rj-11` - RJ-11
+            * `rj-12` - RJ-12
+            * `rj-45` - RJ-45
+            * `mini-din-8` - Mini-DIN 8
+            * `usb-a` - USB Type A
+            * `usb-b` - USB Type B
+            * `usb-c` - USB Type C
+            * `usb-mini-a` - USB Mini A
+            * `usb-mini-b` - USB Mini B
+            * `usb-micro-a` - USB Micro A
+            * `usb-micro-b` - USB Micro B
+            * `usb-micro-ab` - USB Micro AB
+            * `other` - Other
+        speed:
+          enum:
+          - 1200
+          - 2400
+          - 4800
+          - 9600
+          - 19200
+          - 38400
+          - 57600
+          - 115200
+          - null
+          type: integer
+          nullable: true
+          description: |-
+            Port speed in bits per second
+
+            * `1200` - 1200 bps
+            * `2400` - 2400 bps
+            * `4800` - 4800 bps
+            * `9600` - 9600 bps
+            * `19200` - 19.2 kbps
+            * `38400` - 38.4 kbps
+            * `57600` - 57.6 kbps
+            * `115200` - 115.2 kbps
+          minimum: 0
+          maximum: 2147483647
+        description:
+          type: string
+          maxLength: 200
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - device
+      - name
+    WritableConsolePortTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          type: integer
+          nullable: true
+        module_type:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - de-9
+          - db-25
+          - rj-11
+          - rj-12
+          - rj-45
+          - mini-din-8
+          - usb-a
+          - usb-b
+          - usb-c
+          - usb-mini-a
+          - usb-mini-b
+          - usb-micro-a
+          - usb-micro-b
+          - usb-micro-ab
+          - other
+          - ''
+          type: string
+          description: |-
+            * `de-9` - DE-9
+            * `db-25` - DB-25
+            * `rj-11` - RJ-11
+            * `rj-12` - RJ-12
+            * `rj-45` - RJ-45
+            * `mini-din-8` - Mini-DIN 8
+            * `usb-a` - USB Type A
+            * `usb-b` - USB Type B
+            * `usb-c` - USB Type C
+            * `usb-mini-a` - USB Mini A
+            * `usb-mini-b` - USB Mini B
+            * `usb-micro-a` - USB Micro A
+            * `usb-micro-b` - USB Micro B
+            * `usb-micro-ab` - USB Micro AB
+            * `other` - Other
+        description:
+          type: string
+          maxLength: 200
+      required:
+      - name
+    WritableConsoleServerPortRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          type: integer
+        module:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - de-9
+          - db-25
+          - rj-11
+          - rj-12
+          - rj-45
+          - mini-din-8
+          - usb-a
+          - usb-b
+          - usb-c
+          - usb-mini-a
+          - usb-mini-b
+          - usb-micro-a
+          - usb-micro-b
+          - usb-micro-ab
+          - other
+          - ''
+          type: string
+          description: |-
+            Physical port type
+
+            * `de-9` - DE-9
+            * `db-25` - DB-25
+            * `rj-11` - RJ-11
+            * `rj-12` - RJ-12
+            * `rj-45` - RJ-45
+            * `mini-din-8` - Mini-DIN 8
+            * `usb-a` - USB Type A
+            * `usb-b` - USB Type B
+            * `usb-c` - USB Type C
+            * `usb-mini-a` - USB Mini A
+            * `usb-mini-b` - USB Mini B
+            * `usb-micro-a` - USB Micro A
+            * `usb-micro-b` - USB Micro B
+            * `usb-micro-ab` - USB Micro AB
+            * `other` - Other
+        speed:
+          enum:
+          - 1200
+          - 2400
+          - 4800
+          - 9600
+          - 19200
+          - 38400
+          - 57600
+          - 115200
+          - null
+          type: integer
+          nullable: true
+          description: |-
+            Port speed in bits per second
+
+            * `1200` - 1200 bps
+            * `2400` - 2400 bps
+            * `4800` - 4800 bps
+            * `9600` - 9600 bps
+            * `19200` - 19.2 kbps
+            * `38400` - 38.4 kbps
+            * `57600` - 57.6 kbps
+            * `115200` - 115.2 kbps
+          minimum: 0
+          maximum: 2147483647
+        description:
+          type: string
+          maxLength: 200
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - device
+      - name
+    WritableConsoleServerPortTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          type: integer
+          nullable: true
+        module_type:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - de-9
+          - db-25
+          - rj-11
+          - rj-12
+          - rj-45
+          - mini-din-8
+          - usb-a
+          - usb-b
+          - usb-c
+          - usb-mini-a
+          - usb-mini-b
+          - usb-micro-a
+          - usb-micro-b
+          - usb-micro-ab
+          - other
+          - ''
+          type: string
+          description: |-
+            * `de-9` - DE-9
+            * `db-25` - DB-25
+            * `rj-11` - RJ-11
+            * `rj-12` - RJ-12
+            * `rj-45` - RJ-45
+            * `mini-din-8` - Mini-DIN 8
+            * `usb-a` - USB Type A
+            * `usb-b` - USB Type B
+            * `usb-c` - USB Type C
+            * `usb-mini-a` - USB Mini A
+            * `usb-mini-b` - USB Mini B
+            * `usb-micro-a` - USB Micro A
+            * `usb-micro-b` - USB Micro B
+            * `usb-micro-ab` - USB Micro AB
+            * `other` - Other
+        description:
+          type: string
+          maxLength: 200
+      required:
+      - name
+    WritableContactAssignmentRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        content_type:
+          type: string
+        object_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+        contact:
+          type: integer
+        role:
+          type: integer
+        priority:
+          enum:
+          - primary
+          - secondary
+          - tertiary
+          - inactive
+          - ''
+          type: string
+          description: |-
+            * `primary` - Primary
+            * `secondary` - Secondary
+            * `tertiary` - Tertiary
+            * `inactive` - Inactive
+      required:
+      - contact
+      - content_type
+      - object_id
+      - role
+    WritableContactGroupRequest:
+      type: object
+      description: Extends PrimaryModelSerializer to include MPTT support.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        parent:
+          type: integer
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    WritableContactRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        group:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        title:
+          type: string
+          maxLength: 100
+        phone:
+          type: string
+          maxLength: 50
+        email:
+          type: string
+          format: email
+          maxLength: 254
+        address:
+          type: string
+          maxLength: 200
+        link:
+          type: string
+          format: uri
+          maxLength: 200
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+    WritableCustomFieldRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        content_types:
+          type: array
+          items:
+            type: string
+        type:
+          enum:
+          - text
+          - longtext
+          - integer
+          - decimal
+          - boolean
+          - date
+          - datetime
+          - url
+          - json
+          - select
+          - multiselect
+          - object
+          - multiobject
+          type: string
+          description: |-
+            The type of data this custom field holds
+
+            * `text` - Text
+            * `longtext` - Text (long)
+            * `integer` - Integer
+            * `decimal` - Decimal
+            * `boolean` - Boolean (true/false)
+            * `date` - Date
+            * `datetime` - Date & time
+            * `url` - URL
+            * `json` - JSON
+            * `select` - Selection
+            * `multiselect` - Multiple selection
+            * `object` - Object
+            * `multiobject` - Multiple objects
+        object_type:
+          type: string
+        name:
+          type: string
+          minLength: 1
+          description: Internal field name
+          pattern: ^[a-z0-9_]+$
+          maxLength: 50
+        label:
+          type: string
+          description: Name of the field as displayed to users (if not provided, the
+            field's name will be used)
+          maxLength: 50
+        group_name:
+          type: string
+          description: Custom fields within the same group will be displayed together
+          maxLength: 50
+        description:
+          type: string
+          maxLength: 200
+        required:
+          type: boolean
+          description: If true, this field is required when creating new objects or
+            editing an existing object.
+        search_weight:
+          type: integer
+          maximum: 32767
+          minimum: 0
+          description: Weighting for search. Lower values are considered more important.
+            Fields with a search weight of zero will be ignored.
+        filter_logic:
+          enum:
+          - disabled
+          - loose
+          - exact
+          type: string
+          description: |-
+            Loose matches any instance of a given string; exact matches the entire field.
+
+            * `disabled` - Disabled
+            * `loose` - Loose
+            * `exact` - Exact
+        ui_visibility:
+          enum:
+          - read-write
+          - read-only
+          - hidden
+          type: string
+          description: |-
+            Specifies the visibility of custom field in the UI
+
+            * `read-write` - Read/Write
+            * `read-only` - Read-only
+            * `hidden` - Hidden
+        is_cloneable:
+          type: boolean
+          title: Cloneable
+          description: Replicate this value when cloning objects
+        default:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          description: Default value for the field (must be a JSON value). Encapsulate
+            strings with double quotes (e.g. "Foo").
+        weight:
+          type: integer
+          maximum: 32767
+          minimum: 0
+          title: Display weight
+          description: Fields with higher weights appear lower in a form.
+        validation_minimum:
+          type: integer
+          maximum: 2147483647
+          minimum: -2147483648
+          nullable: true
+          title: Minimum value
+          description: Minimum allowed value (for numeric fields)
+        validation_maximum:
+          type: integer
+          maximum: 2147483647
+          minimum: -2147483648
+          nullable: true
+          title: Maximum value
+          description: Maximum allowed value (for numeric fields)
+        validation_regex:
+          type: string
+          description: Regular expression to enforce on text field values. Use ^ and
+            $ to force matching of entire string. For example, <code>^[A-Z]{3}$</code>
+            will limit values to exactly three uppercase letters.
+          maxLength: 500
+        choices:
+          type: array
+          items:
+            type: string
+            minLength: 1
+            maxLength: 100
+          nullable: true
+          description: Comma-separated list of available choices (for selection fields)
+      required:
+      - content_types
+      - name
+    WritableDataSourceRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        type:
+          enum:
+          - local
+          - git
+          - amazon-s3
+          type: string
+          description: |-
+            * `local` - Local
+            * `git` - Git
+            * `amazon-s3` - Amazon S3
+        source_url:
+          type: string
+          minLength: 1
+          title: URL
+          maxLength: 200
+        enabled:
+          type: boolean
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        parameters:
+          type: object
+          additionalProperties: {}
+          nullable: true
+        ignore_rules:
+          type: string
+          description: Patterns (one per line) matching files to ignore when syncing
+      required:
+      - name
+      - source_url
+    WritableDeviceBayRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          type: integer
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        description:
+          type: string
+          maxLength: 200
+        installed_device:
+          type: integer
+          nullable: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - device
+      - name
+    WritableDeviceBayTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          type: integer
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        description:
+          type: string
+          maxLength: 200
+      required:
+      - device_type
+      - name
+    WritableDeviceRoleRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        color:
+          type: string
+          minLength: 1
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        vm_role:
+          type: boolean
+          description: Virtual machines may be assigned to this role
+        config_template:
+          type: integer
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    WritableDeviceTypeRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        manufacturer:
+          type: integer
+        default_platform:
+          type: integer
+          nullable: true
+        model:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        part_number:
+          type: string
+          description: Discrete part number (optional)
+          maxLength: 50
+        u_height:
+          type: number
+          format: double
+          maximum: 1000
+          minimum: 0
+          exclusiveMaximum: true
+          default: 1.0
+          title: Position (U)
+        is_full_depth:
+          type: boolean
+          description: Device consumes both front and rear rack faces
+        subdevice_role:
+          enum:
+          - parent
+          - child
+          - ''
+          type: string
+          title: Parent/child status
+          description: |-
+            Parent devices house child devices in device bays. Leave blank if this device type is neither a parent nor a child.
+
+            * `parent` - Parent
+            * `child` - Child
+        airflow:
+          enum:
+          - front-to-rear
+          - rear-to-front
+          - left-to-right
+          - right-to-left
+          - side-to-rear
+          - passive
+          - mixed
+          - ''
+          type: string
+          description: |-
+            * `front-to-rear` - Front to rear
+            * `rear-to-front` - Rear to front
+            * `left-to-right` - Left to right
+            * `right-to-left` - Right to left
+            * `side-to-rear` - Side to rear
+            * `passive` - Passive
+            * `mixed` - Mixed
+        weight:
+          type: number
+          format: double
+          maximum: 1000000
+          minimum: -1000000
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+        weight_unit:
+          enum:
+          - kg
+          - g
+          - lb
+          - oz
+          - ''
+          type: string
+          description: |-
+            * `kg` - Kilograms
+            * `g` - Grams
+            * `lb` - Pounds
+            * `oz` - Ounces
+        front_image:
+          type: string
+          format: binary
+        rear_image:
+          type: string
+          format: binary
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - manufacturer
+      - model
+      - slug
+    WritableDeviceWithConfigContextRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          nullable: true
+          maxLength: 64
+        device_type:
+          type: integer
+        device_role:
+          type: integer
+          description: The function this device serves
+        tenant:
+          type: integer
+          nullable: true
+        platform:
+          type: integer
+          nullable: true
+        serial:
+          type: string
+          title: Serial number
+          description: Chassis serial number, assigned by the manufacturer
+          maxLength: 50
+        asset_tag:
+          type: string
+          nullable: true
+          description: A unique tag used to identify this device
+          maxLength: 50
+        site:
+          type: integer
+        location:
+          type: integer
+          nullable: true
+        rack:
+          type: integer
+          nullable: true
+        position:
+          type: number
+          format: double
+          maximum: 1000
+          minimum: 0.5
+          exclusiveMaximum: true
+          nullable: true
+          title: Position (U)
+        face:
+          enum:
+          - front
+          - rear
+          - ''
+          type: string
+          description: |-
+            * `front` - Front
+            * `rear` - Rear
+          title: Rack face
+        status:
+          enum:
+          - offline
+          - active
+          - planned
+          - staged
+          - failed
+          - inventory
+          - decommissioning
+          type: string
+          description: |-
+            * `offline` - Offline
+            * `active` - Active
+            * `planned` - Planned
+            * `staged` - Staged
+            * `failed` - Failed
+            * `inventory` - Inventory
+            * `decommissioning` - Decommissioning
+        airflow:
+          enum:
+          - front-to-rear
+          - rear-to-front
+          - left-to-right
+          - right-to-left
+          - side-to-rear
+          - passive
+          - mixed
+          - ''
+          type: string
+          description: |-
+            * `front-to-rear` - Front to rear
+            * `rear-to-front` - Rear to front
+            * `left-to-right` - Left to right
+            * `right-to-left` - Right to left
+            * `side-to-rear` - Side to rear
+            * `passive` - Passive
+            * `mixed` - Mixed
+        primary_ip4:
+          type: integer
+          nullable: true
+          title: Primary IPv4
+        primary_ip6:
+          type: integer
+          nullable: true
+          title: Primary IPv6
+        cluster:
+          type: integer
+          nullable: true
+        virtual_chassis:
+          type: integer
+          nullable: true
+        vc_position:
+          type: integer
+          maximum: 255
+          minimum: 0
+          nullable: true
+        vc_priority:
+          type: integer
+          maximum: 255
+          minimum: 0
+          nullable: true
+          description: Virtual chassis master election priority
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        local_context_data:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          description: Local config context data takes precedence over source contexts
+            in the final rendered config context
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - device_role
+      - device_type
+      - site
+    WritableExportTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        content_types:
+          type: array
+          items:
+            type: string
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        description:
+          type: string
+          maxLength: 200
+        template_code:
+          type: string
+          minLength: 1
+          description: Jinja2 template code. The list of objects being exported is
+            passed as a context variable named <code>queryset</code>.
+        mime_type:
+          type: string
+          description: Defaults to <code>text/plain; charset=utf-8</code>
+          maxLength: 50
+        file_extension:
+          type: string
+          description: Extension to append to the rendered filename
+          maxLength: 15
+        as_attachment:
+          type: boolean
+          description: Download file as attachment
+        data_source:
+          type: integer
+          nullable: true
+          description: Remote data source
+      required:
+      - content_types
+      - name
+      - template_code
+    WritableFHRPGroupAssignmentRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        group:
+          type: integer
+        interface_type:
+          type: string
+        interface_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+        priority:
+          type: integer
+          maximum: 255
+          minimum: 0
+      required:
+      - group
+      - interface_id
+      - interface_type
+      - priority
+    WritableFrontPortRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          type: integer
+        module:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - 8p8c
+          - 8p6c
+          - 8p4c
+          - 8p2c
+          - 6p6c
+          - 6p4c
+          - 6p2c
+          - 4p4c
+          - 4p2c
+          - gg45
+          - tera-4p
+          - tera-2p
+          - tera-1p
+          - 110-punch
+          - bnc
+          - f
+          - n
+          - mrj21
+          - fc
+          - lc
+          - lc-pc
+          - lc-upc
+          - lc-apc
+          - lsh
+          - lsh-pc
+          - lsh-upc
+          - lsh-apc
+          - mpo
+          - mtrj
+          - sc
+          - sc-pc
+          - sc-upc
+          - sc-apc
+          - st
+          - cs
+          - sn
+          - sma-905
+          - sma-906
+          - urm-p2
+          - urm-p4
+          - urm-p8
+          - splice
+          - other
+          type: string
+          description: |-
+            * `8p8c` - 8P8C
+            * `8p6c` - 8P6C
+            * `8p4c` - 8P4C
+            * `8p2c` - 8P2C
+            * `6p6c` - 6P6C
+            * `6p4c` - 6P4C
+            * `6p2c` - 6P2C
+            * `4p4c` - 4P4C
+            * `4p2c` - 4P2C
+            * `gg45` - GG45
+            * `tera-4p` - TERA 4P
+            * `tera-2p` - TERA 2P
+            * `tera-1p` - TERA 1P
+            * `110-punch` - 110 Punch
+            * `bnc` - BNC
+            * `f` - F Connector
+            * `n` - N Connector
+            * `mrj21` - MRJ21
+            * `fc` - FC
+            * `lc` - LC
+            * `lc-pc` - LC/PC
+            * `lc-upc` - LC/UPC
+            * `lc-apc` - LC/APC
+            * `lsh` - LSH
+            * `lsh-pc` - LSH/PC
+            * `lsh-upc` - LSH/UPC
+            * `lsh-apc` - LSH/APC
+            * `mpo` - MPO
+            * `mtrj` - MTRJ
+            * `sc` - SC
+            * `sc-pc` - SC/PC
+            * `sc-upc` - SC/UPC
+            * `sc-apc` - SC/APC
+            * `st` - ST
+            * `cs` - CS
+            * `sn` - SN
+            * `sma-905` - SMA 905
+            * `sma-906` - SMA 906
+            * `urm-p2` - URM-P2
+            * `urm-p4` - URM-P4
+            * `urm-p8` - URM-P8
+            * `splice` - Splice
+            * `other` - Other
+        color:
+          type: string
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        rear_port:
+          type: integer
+        rear_port_position:
+          type: integer
+          maximum: 1024
+          minimum: 1
+          description: Mapped position on corresponding rear port
+        description:
+          type: string
+          maxLength: 200
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - device
+      - name
+      - rear_port
+      - type
+    WritableFrontPortTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          type: integer
+          nullable: true
+        module_type:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - 8p8c
+          - 8p6c
+          - 8p4c
+          - 8p2c
+          - 6p6c
+          - 6p4c
+          - 6p2c
+          - 4p4c
+          - 4p2c
+          - gg45
+          - tera-4p
+          - tera-2p
+          - tera-1p
+          - 110-punch
+          - bnc
+          - f
+          - n
+          - mrj21
+          - fc
+          - lc
+          - lc-pc
+          - lc-upc
+          - lc-apc
+          - lsh
+          - lsh-pc
+          - lsh-upc
+          - lsh-apc
+          - mpo
+          - mtrj
+          - sc
+          - sc-pc
+          - sc-upc
+          - sc-apc
+          - st
+          - cs
+          - sn
+          - sma-905
+          - sma-906
+          - urm-p2
+          - urm-p4
+          - urm-p8
+          - splice
+          - other
+          type: string
+          description: |-
+            * `8p8c` - 8P8C
+            * `8p6c` - 8P6C
+            * `8p4c` - 8P4C
+            * `8p2c` - 8P2C
+            * `6p6c` - 6P6C
+            * `6p4c` - 6P4C
+            * `6p2c` - 6P2C
+            * `4p4c` - 4P4C
+            * `4p2c` - 4P2C
+            * `gg45` - GG45
+            * `tera-4p` - TERA 4P
+            * `tera-2p` - TERA 2P
+            * `tera-1p` - TERA 1P
+            * `110-punch` - 110 Punch
+            * `bnc` - BNC
+            * `f` - F Connector
+            * `n` - N Connector
+            * `mrj21` - MRJ21
+            * `fc` - FC
+            * `lc` - LC
+            * `lc-pc` - LC/PC
+            * `lc-upc` - LC/UPC
+            * `lc-apc` - LC/APC
+            * `lsh` - LSH
+            * `lsh-pc` - LSH/PC
+            * `lsh-upc` - LSH/UPC
+            * `lsh-apc` - LSH/APC
+            * `mpo` - MPO
+            * `mtrj` - MTRJ
+            * `sc` - SC
+            * `sc-pc` - SC/PC
+            * `sc-upc` - SC/UPC
+            * `sc-apc` - SC/APC
+            * `st` - ST
+            * `cs` - CS
+            * `sn` - SN
+            * `sma-905` - SMA 905
+            * `sma-906` - SMA 906
+            * `urm-p2` - URM-P2
+            * `urm-p4` - URM-P4
+            * `urm-p8` - URM-P8
+            * `splice` - Splice
+            * `other` - Other
+        color:
+          type: string
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        rear_port:
+          type: integer
+        rear_port_position:
+          type: integer
+          maximum: 1024
+          minimum: 1
+        description:
+          type: string
+          maxLength: 200
+      required:
+      - name
+      - rear_port
+      - type
+    WritableIPAddressRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        address:
+          type: string
+          minLength: 1
+        vrf:
+          type: integer
+          nullable: true
+        tenant:
+          type: integer
+          nullable: true
+        status:
+          enum:
+          - active
+          - reserved
+          - deprecated
+          - dhcp
+          - slaac
+          type: string
+          description: |-
+            The operational status of this IP
+
+            * `active` - Active
+            * `reserved` - Reserved
+            * `deprecated` - Deprecated
+            * `dhcp` - DHCP
+            * `slaac` - SLAAC
+        role:
+          enum:
+          - loopback
+          - secondary
+          - anycast
+          - vip
+          - vrrp
+          - hsrp
+          - glbp
+          - carp
+          - ''
+          type: string
+          description: |-
+            The functional role of this IP
+
+            * `loopback` - Loopback
+            * `secondary` - Secondary
+            * `anycast` - Anycast
+            * `vip` - VIP
+            * `vrrp` - VRRP
+            * `hsrp` - HSRP
+            * `glbp` - GLBP
+            * `carp` - CARP
+        assigned_object_type:
+          type: string
+          nullable: true
+        assigned_object_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+          nullable: true
+        nat_inside:
+          type: integer
+          nullable: true
+          title: NAT (Inside)
+          description: The IP for which this address is the "outside" IP
+        dns_name:
+          type: string
+          description: Hostname or FQDN (not case-sensitive)
+          pattern: ^([0-9A-Za-z_-]+|\*)(\.[0-9A-Za-z_-]+)*\.?$
+          maxLength: 255
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - address
+    WritableIPRangeRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        start_address:
+          type: string
+          minLength: 1
+        end_address:
+          type: string
+          minLength: 1
+        vrf:
+          type: integer
+          nullable: true
+        tenant:
+          type: integer
+          nullable: true
+        status:
+          enum:
+          - active
+          - reserved
+          - deprecated
+          type: string
+          description: |-
+            Operational status of this range
+
+            * `active` - Active
+            * `reserved` - Reserved
+            * `deprecated` - Deprecated
+        role:
+          type: integer
+          nullable: true
+          description: The primary function of this range
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+        mark_utilized:
+          type: boolean
+          description: Treat as 100% utilized
+      required:
+      - end_address
+      - start_address
+    WritableInterfaceRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          type: integer
+        vdcs:
+          type: array
+          items:
+            type: integer
+        module:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - virtual
+          - bridge
+          - lag
+          - 100base-fx
+          - 100base-lfx
+          - 100base-tx
+          - 100base-t1
+          - 1000base-t
+          - 2.5gbase-t
+          - 5gbase-t
+          - 10gbase-t
+          - 10gbase-cx4
+          - 1000base-x-gbic
+          - 1000base-x-sfp
+          - 10gbase-x-sfpp
+          - 10gbase-x-xfp
+          - 10gbase-x-xenpak
+          - 10gbase-x-x2
+          - 25gbase-x-sfp28
+          - 50gbase-x-sfp56
+          - 40gbase-x-qsfpp
+          - 50gbase-x-sfp28
+          - 100gbase-x-cfp
+          - 100gbase-x-cfp2
+          - 200gbase-x-cfp2
+          - 100gbase-x-cfp4
+          - 100gbase-x-cpak
+          - 100gbase-x-qsfp28
+          - 200gbase-x-qsfp56
+          - 400gbase-x-qsfpdd
+          - 400gbase-x-osfp
+          - 800gbase-x-qsfpdd
+          - 800gbase-x-osfp
+          - 1000base-kx
+          - 10gbase-kr
+          - 10gbase-kx4
+          - 25gbase-kr
+          - 40gbase-kr4
+          - 50gbase-kr
+          - 100gbase-kp4
+          - 100gbase-kr2
+          - 100gbase-kr4
+          - ieee802.11a
+          - ieee802.11g
+          - ieee802.11n
+          - ieee802.11ac
+          - ieee802.11ad
+          - ieee802.11ax
+          - ieee802.11ay
+          - ieee802.15.1
+          - other-wireless
+          - gsm
+          - cdma
+          - lte
+          - sonet-oc3
+          - sonet-oc12
+          - sonet-oc48
+          - sonet-oc192
+          - sonet-oc768
+          - sonet-oc1920
+          - sonet-oc3840
+          - 1gfc-sfp
+          - 2gfc-sfp
+          - 4gfc-sfp
+          - 8gfc-sfpp
+          - 16gfc-sfpp
+          - 32gfc-sfp28
+          - 64gfc-qsfpp
+          - 128gfc-qsfp28
+          - infiniband-sdr
+          - infiniband-ddr
+          - infiniband-qdr
+          - infiniband-fdr10
+          - infiniband-fdr
+          - infiniband-edr
+          - infiniband-hdr
+          - infiniband-ndr
+          - infiniband-xdr
+          - t1
+          - e1
+          - t3
+          - e3
+          - xdsl
+          - docsis
+          - gpon
+          - xg-pon
+          - xgs-pon
+          - ng-pon2
+          - epon
+          - 10g-epon
+          - cisco-stackwise
+          - cisco-stackwise-plus
+          - cisco-flexstack
+          - cisco-flexstack-plus
+          - cisco-stackwise-80
+          - cisco-stackwise-160
+          - cisco-stackwise-320
+          - cisco-stackwise-480
+          - cisco-stackwise-1t
+          - juniper-vcp
+          - extreme-summitstack
+          - extreme-summitstack-128
+          - extreme-summitstack-256
+          - extreme-summitstack-512
+          - other
+          type: string
+          description: |-
+            * `virtual` - Virtual
+            * `bridge` - Bridge
+            * `lag` - Link Aggregation Group (LAG)
+            * `100base-fx` - 100BASE-FX (10/100ME FIBER)
+            * `100base-lfx` - 100BASE-LFX (10/100ME FIBER)
+            * `100base-tx` - 100BASE-TX (10/100ME)
+            * `100base-t1` - 100BASE-T1 (10/100ME Single Pair)
+            * `1000base-t` - 1000BASE-T (1GE)
+            * `2.5gbase-t` - 2.5GBASE-T (2.5GE)
+            * `5gbase-t` - 5GBASE-T (5GE)
+            * `10gbase-t` - 10GBASE-T (10GE)
+            * `10gbase-cx4` - 10GBASE-CX4 (10GE)
+            * `1000base-x-gbic` - GBIC (1GE)
+            * `1000base-x-sfp` - SFP (1GE)
+            * `10gbase-x-sfpp` - SFP+ (10GE)
+            * `10gbase-x-xfp` - XFP (10GE)
+            * `10gbase-x-xenpak` - XENPAK (10GE)
+            * `10gbase-x-x2` - X2 (10GE)
+            * `25gbase-x-sfp28` - SFP28 (25GE)
+            * `50gbase-x-sfp56` - SFP56 (50GE)
+            * `40gbase-x-qsfpp` - QSFP+ (40GE)
+            * `50gbase-x-sfp28` - QSFP28 (50GE)
+            * `100gbase-x-cfp` - CFP (100GE)
+            * `100gbase-x-cfp2` - CFP2 (100GE)
+            * `200gbase-x-cfp2` - CFP2 (200GE)
+            * `100gbase-x-cfp4` - CFP4 (100GE)
+            * `100gbase-x-cpak` - Cisco CPAK (100GE)
+            * `100gbase-x-qsfp28` - QSFP28 (100GE)
+            * `200gbase-x-qsfp56` - QSFP56 (200GE)
+            * `400gbase-x-qsfpdd` - QSFP-DD (400GE)
+            * `400gbase-x-osfp` - OSFP (400GE)
+            * `800gbase-x-qsfpdd` - QSFP-DD (800GE)
+            * `800gbase-x-osfp` - OSFP (800GE)
+            * `1000base-kx` - 1000BASE-KX (1GE)
+            * `10gbase-kr` - 10GBASE-KR (10GE)
+            * `10gbase-kx4` - 10GBASE-KX4 (10GE)
+            * `25gbase-kr` - 25GBASE-KR (25GE)
+            * `40gbase-kr4` - 40GBASE-KR4 (40GE)
+            * `50gbase-kr` - 50GBASE-KR (50GE)
+            * `100gbase-kp4` - 100GBASE-KP4 (100GE)
+            * `100gbase-kr2` - 100GBASE-KR2 (100GE)
+            * `100gbase-kr4` - 100GBASE-KR4 (100GE)
+            * `ieee802.11a` - IEEE 802.11a
+            * `ieee802.11g` - IEEE 802.11b/g
+            * `ieee802.11n` - IEEE 802.11n
+            * `ieee802.11ac` - IEEE 802.11ac
+            * `ieee802.11ad` - IEEE 802.11ad
+            * `ieee802.11ax` - IEEE 802.11ax
+            * `ieee802.11ay` - IEEE 802.11ay
+            * `ieee802.15.1` - IEEE 802.15.1 (Bluetooth)
+            * `other-wireless` - Other (Wireless)
+            * `gsm` - GSM
+            * `cdma` - CDMA
+            * `lte` - LTE
+            * `sonet-oc3` - OC-3/STM-1
+            * `sonet-oc12` - OC-12/STM-4
+            * `sonet-oc48` - OC-48/STM-16
+            * `sonet-oc192` - OC-192/STM-64
+            * `sonet-oc768` - OC-768/STM-256
+            * `sonet-oc1920` - OC-1920/STM-640
+            * `sonet-oc3840` - OC-3840/STM-1234
+            * `1gfc-sfp` - SFP (1GFC)
+            * `2gfc-sfp` - SFP (2GFC)
+            * `4gfc-sfp` - SFP (4GFC)
+            * `8gfc-sfpp` - SFP+ (8GFC)
+            * `16gfc-sfpp` - SFP+ (16GFC)
+            * `32gfc-sfp28` - SFP28 (32GFC)
+            * `64gfc-qsfpp` - QSFP+ (64GFC)
+            * `128gfc-qsfp28` - QSFP28 (128GFC)
+            * `infiniband-sdr` - SDR (2 Gbps)
+            * `infiniband-ddr` - DDR (4 Gbps)
+            * `infiniband-qdr` - QDR (8 Gbps)
+            * `infiniband-fdr10` - FDR10 (10 Gbps)
+            * `infiniband-fdr` - FDR (13.5 Gbps)
+            * `infiniband-edr` - EDR (25 Gbps)
+            * `infiniband-hdr` - HDR (50 Gbps)
+            * `infiniband-ndr` - NDR (100 Gbps)
+            * `infiniband-xdr` - XDR (250 Gbps)
+            * `t1` - T1 (1.544 Mbps)
+            * `e1` - E1 (2.048 Mbps)
+            * `t3` - T3 (45 Mbps)
+            * `e3` - E3 (34 Mbps)
+            * `xdsl` - xDSL
+            * `docsis` - DOCSIS
+            * `gpon` - GPON (2.5 Gbps / 1.25 Gps)
+            * `xg-pon` - XG-PON (10 Gbps / 2.5 Gbps)
+            * `xgs-pon` - XGS-PON (10 Gbps)
+            * `ng-pon2` - NG-PON2 (TWDM-PON) (4x10 Gbps)
+            * `epon` - EPON (1 Gbps)
+            * `10g-epon` - 10G-EPON (10 Gbps)
+            * `cisco-stackwise` - Cisco StackWise
+            * `cisco-stackwise-plus` - Cisco StackWise Plus
+            * `cisco-flexstack` - Cisco FlexStack
+            * `cisco-flexstack-plus` - Cisco FlexStack Plus
+            * `cisco-stackwise-80` - Cisco StackWise-80
+            * `cisco-stackwise-160` - Cisco StackWise-160
+            * `cisco-stackwise-320` - Cisco StackWise-320
+            * `cisco-stackwise-480` - Cisco StackWise-480
+            * `cisco-stackwise-1t` - Cisco StackWise-1T
+            * `juniper-vcp` - Juniper VCP
+            * `extreme-summitstack` - Extreme SummitStack
+            * `extreme-summitstack-128` - Extreme SummitStack-128
+            * `extreme-summitstack-256` - Extreme SummitStack-256
+            * `extreme-summitstack-512` - Extreme SummitStack-512
+            * `other` - Other
+        enabled:
+          type: boolean
+        parent:
+          type: integer
+          nullable: true
+          title: Parent interface
+        bridge:
+          type: integer
+          nullable: true
+          title: Bridge interface
+        lag:
+          type: integer
+          nullable: true
+          title: Parent LAG
+        mtu:
+          type: integer
+          maximum: 65536
+          minimum: 1
+          nullable: true
+        mac_address:
+          type: string
+          nullable: true
+          minLength: 1
+        speed:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          title: Speed (Kbps)
+        duplex:
+          enum:
+          - half
+          - full
+          - auto
+          - ''
+          - null
+          type: string
+          description: |-
+            * `half` - Half
+            * `full` - Full
+            * `auto` - Auto
+          nullable: true
+        wwn:
+          type: string
+          minLength: 1
+        mgmt_only:
+          type: boolean
+          title: Management only
+          description: This interface is used only for out-of-band management
+        description:
+          type: string
+          maxLength: 200
+        mode:
+          enum:
+          - access
+          - tagged
+          - tagged-all
+          - ''
+          type: string
+          description: |-
+            IEEE 802.1Q tagging strategy
+
+            * `access` - Access
+            * `tagged` - Tagged
+            * `tagged-all` - Tagged (All)
+        rf_role:
+          enum:
+          - ap
+          - station
+          - ''
+          type: string
+          description: |-
+            * `ap` - Access point
+            * `station` - Station
+          title: Wireless role
+        rf_channel:
+          enum:
+          - 2.4g-1-2412-22
+          - 2.4g-2-2417-22
+          - 2.4g-3-2422-22
+          - 2.4g-4-2427-22
+          - 2.4g-5-2432-22
+          - 2.4g-6-2437-22
+          - 2.4g-7-2442-22
+          - 2.4g-8-2447-22
+          - 2.4g-9-2452-22
+          - 2.4g-10-2457-22
+          - 2.4g-11-2462-22
+          - 2.4g-12-2467-22
+          - 2.4g-13-2472-22
+          - 5g-32-5160-20
+          - 5g-34-5170-40
+          - 5g-36-5180-20
+          - 5g-38-5190-40
+          - 5g-40-5200-20
+          - 5g-42-5210-80
+          - 5g-44-5220-20
+          - 5g-46-5230-40
+          - 5g-48-5240-20
+          - 5g-50-5250-160
+          - 5g-52-5260-20
+          - 5g-54-5270-40
+          - 5g-56-5280-20
+          - 5g-58-5290-80
+          - 5g-60-5300-20
+          - 5g-62-5310-40
+          - 5g-64-5320-20
+          - 5g-100-5500-20
+          - 5g-102-5510-40
+          - 5g-104-5520-20
+          - 5g-106-5530-80
+          - 5g-108-5540-20
+          - 5g-110-5550-40
+          - 5g-112-5560-20
+          - 5g-114-5570-160
+          - 5g-116-5580-20
+          - 5g-118-5590-40
+          - 5g-120-5600-20
+          - 5g-122-5610-80
+          - 5g-124-5620-20
+          - 5g-126-5630-40
+          - 5g-128-5640-20
+          - 5g-132-5660-20
+          - 5g-134-5670-40
+          - 5g-136-5680-20
+          - 5g-138-5690-80
+          - 5g-140-5700-20
+          - 5g-142-5710-40
+          - 5g-144-5720-20
+          - 5g-149-5745-20
+          - 5g-151-5755-40
+          - 5g-153-5765-20
+          - 5g-155-5775-80
+          - 5g-157-5785-20
+          - 5g-159-5795-40
+          - 5g-161-5805-20
+          - 5g-163-5815-160
+          - 5g-165-5825-20
+          - 5g-167-5835-40
+          - 5g-169-5845-20
+          - 5g-171-5855-80
+          - 5g-173-5865-20
+          - 5g-175-5875-40
+          - 5g-177-5885-20
+          - 6g-1-5955-20
+          - 6g-3-5965-40
+          - 6g-5-5975-20
+          - 6g-7-5985-80
+          - 6g-9-5995-20
+          - 6g-11-6005-40
+          - 6g-13-6015-20
+          - 6g-15-6025-160
+          - 6g-17-6035-20
+          - 6g-19-6045-40
+          - 6g-21-6055-20
+          - 6g-23-6065-80
+          - 6g-25-6075-20
+          - 6g-27-6085-40
+          - 6g-29-6095-20
+          - 6g-31-6105-320
+          - 6g-33-6115-20
+          - 6g-35-6125-40
+          - 6g-37-6135-20
+          - 6g-39-6145-80
+          - 6g-41-6155-20
+          - 6g-43-6165-40
+          - 6g-45-6175-20
+          - 6g-47-6185-160
+          - 6g-49-6195-20
+          - 6g-51-6205-40
+          - 6g-53-6215-20
+          - 6g-55-6225-80
+          - 6g-57-6235-20
+          - 6g-59-6245-40
+          - 6g-61-6255-20
+          - 6g-65-6275-20
+          - 6g-67-6285-40
+          - 6g-69-6295-20
+          - 6g-71-6305-80
+          - 6g-73-6315-20
+          - 6g-75-6325-40
+          - 6g-77-6335-20
+          - 6g-79-6345-160
+          - 6g-81-6355-20
+          - 6g-83-6365-40
+          - 6g-85-6375-20
+          - 6g-87-6385-80
+          - 6g-89-6395-20
+          - 6g-91-6405-40
+          - 6g-93-6415-20
+          - 6g-95-6425-320
+          - 6g-97-6435-20
+          - 6g-99-6445-40
+          - 6g-101-6455-20
+          - 6g-103-6465-80
+          - 6g-105-6475-20
+          - 6g-107-6485-40
+          - 6g-109-6495-20
+          - 6g-111-6505-160
+          - 6g-113-6515-20
+          - 6g-115-6525-40
+          - 6g-117-6535-20
+          - 6g-119-6545-80
+          - 6g-121-6555-20
+          - 6g-123-6565-40
+          - 6g-125-6575-20
+          - 6g-129-6595-20
+          - 6g-131-6605-40
+          - 6g-133-6615-20
+          - 6g-135-6625-80
+          - 6g-137-6635-20
+          - 6g-139-6645-40
+          - 6g-141-6655-20
+          - 6g-143-6665-160
+          - 6g-145-6675-20
+          - 6g-147-6685-40
+          - 6g-149-6695-20
+          - 6g-151-6705-80
+          - 6g-153-6715-20
+          - 6g-155-6725-40
+          - 6g-157-6735-20
+          - 6g-159-6745-320
+          - 6g-161-6755-20
+          - 6g-163-6765-40
+          - 6g-165-6775-20
+          - 6g-167-6785-80
+          - 6g-169-6795-20
+          - 6g-171-6805-40
+          - 6g-173-6815-20
+          - 6g-175-6825-160
+          - 6g-177-6835-20
+          - 6g-179-6845-40
+          - 6g-181-6855-20
+          - 6g-183-6865-80
+          - 6g-185-6875-20
+          - 6g-187-6885-40
+          - 6g-189-6895-20
+          - 6g-193-6915-20
+          - 6g-195-6925-40
+          - 6g-197-6935-20
+          - 6g-199-6945-80
+          - 6g-201-6955-20
+          - 6g-203-6965-40
+          - 6g-205-6975-20
+          - 6g-207-6985-160
+          - 6g-209-6995-20
+          - 6g-211-7005-40
+          - 6g-213-7015-20
+          - 6g-215-7025-80
+          - 6g-217-7035-20
+          - 6g-219-7045-40
+          - 6g-221-7055-20
+          - 6g-225-7075-20
+          - 6g-227-7085-40
+          - 6g-229-7095-20
+          - 6g-233-7115-20
+          - 60g-1-58320-2160
+          - 60g-2-60480-2160
+          - 60g-3-62640-2160
+          - 60g-4-64800-2160
+          - 60g-5-66960-2160
+          - 60g-6-69120-2160
+          - 60g-9-59400-4320
+          - 60g-10-61560-4320
+          - 60g-11-63720-4320
+          - 60g-12-65880-4320
+          - 60g-13-68040-4320
+          - 60g-17-60480-6480
+          - 60g-18-62640-6480
+          - 60g-19-64800-6480
+          - 60g-20-66960-6480
+          - 60g-25-61560-6480
+          - 60g-26-63720-6480
+          - 60g-27-65880-6480
+          - ''
+          type: string
+          description: |-
+            * `2.4g-1-2412-22` - 1 (2412 MHz)
+            * `2.4g-2-2417-22` - 2 (2417 MHz)
+            * `2.4g-3-2422-22` - 3 (2422 MHz)
+            * `2.4g-4-2427-22` - 4 (2427 MHz)
+            * `2.4g-5-2432-22` - 5 (2432 MHz)
+            * `2.4g-6-2437-22` - 6 (2437 MHz)
+            * `2.4g-7-2442-22` - 7 (2442 MHz)
+            * `2.4g-8-2447-22` - 8 (2447 MHz)
+            * `2.4g-9-2452-22` - 9 (2452 MHz)
+            * `2.4g-10-2457-22` - 10 (2457 MHz)
+            * `2.4g-11-2462-22` - 11 (2462 MHz)
+            * `2.4g-12-2467-22` - 12 (2467 MHz)
+            * `2.4g-13-2472-22` - 13 (2472 MHz)
+            * `5g-32-5160-20` - 32 (5160/20 MHz)
+            * `5g-34-5170-40` - 34 (5170/40 MHz)
+            * `5g-36-5180-20` - 36 (5180/20 MHz)
+            * `5g-38-5190-40` - 38 (5190/40 MHz)
+            * `5g-40-5200-20` - 40 (5200/20 MHz)
+            * `5g-42-5210-80` - 42 (5210/80 MHz)
+            * `5g-44-5220-20` - 44 (5220/20 MHz)
+            * `5g-46-5230-40` - 46 (5230/40 MHz)
+            * `5g-48-5240-20` - 48 (5240/20 MHz)
+            * `5g-50-5250-160` - 50 (5250/160 MHz)
+            * `5g-52-5260-20` - 52 (5260/20 MHz)
+            * `5g-54-5270-40` - 54 (5270/40 MHz)
+            * `5g-56-5280-20` - 56 (5280/20 MHz)
+            * `5g-58-5290-80` - 58 (5290/80 MHz)
+            * `5g-60-5300-20` - 60 (5300/20 MHz)
+            * `5g-62-5310-40` - 62 (5310/40 MHz)
+            * `5g-64-5320-20` - 64 (5320/20 MHz)
+            * `5g-100-5500-20` - 100 (5500/20 MHz)
+            * `5g-102-5510-40` - 102 (5510/40 MHz)
+            * `5g-104-5520-20` - 104 (5520/20 MHz)
+            * `5g-106-5530-80` - 106 (5530/80 MHz)
+            * `5g-108-5540-20` - 108 (5540/20 MHz)
+            * `5g-110-5550-40` - 110 (5550/40 MHz)
+            * `5g-112-5560-20` - 112 (5560/20 MHz)
+            * `5g-114-5570-160` - 114 (5570/160 MHz)
+            * `5g-116-5580-20` - 116 (5580/20 MHz)
+            * `5g-118-5590-40` - 118 (5590/40 MHz)
+            * `5g-120-5600-20` - 120 (5600/20 MHz)
+            * `5g-122-5610-80` - 122 (5610/80 MHz)
+            * `5g-124-5620-20` - 124 (5620/20 MHz)
+            * `5g-126-5630-40` - 126 (5630/40 MHz)
+            * `5g-128-5640-20` - 128 (5640/20 MHz)
+            * `5g-132-5660-20` - 132 (5660/20 MHz)
+            * `5g-134-5670-40` - 134 (5670/40 MHz)
+            * `5g-136-5680-20` - 136 (5680/20 MHz)
+            * `5g-138-5690-80` - 138 (5690/80 MHz)
+            * `5g-140-5700-20` - 140 (5700/20 MHz)
+            * `5g-142-5710-40` - 142 (5710/40 MHz)
+            * `5g-144-5720-20` - 144 (5720/20 MHz)
+            * `5g-149-5745-20` - 149 (5745/20 MHz)
+            * `5g-151-5755-40` - 151 (5755/40 MHz)
+            * `5g-153-5765-20` - 153 (5765/20 MHz)
+            * `5g-155-5775-80` - 155 (5775/80 MHz)
+            * `5g-157-5785-20` - 157 (5785/20 MHz)
+            * `5g-159-5795-40` - 159 (5795/40 MHz)
+            * `5g-161-5805-20` - 161 (5805/20 MHz)
+            * `5g-163-5815-160` - 163 (5815/160 MHz)
+            * `5g-165-5825-20` - 165 (5825/20 MHz)
+            * `5g-167-5835-40` - 167 (5835/40 MHz)
+            * `5g-169-5845-20` - 169 (5845/20 MHz)
+            * `5g-171-5855-80` - 171 (5855/80 MHz)
+            * `5g-173-5865-20` - 173 (5865/20 MHz)
+            * `5g-175-5875-40` - 175 (5875/40 MHz)
+            * `5g-177-5885-20` - 177 (5885/20 MHz)
+            * `6g-1-5955-20` - 1 (5955/20 MHz)
+            * `6g-3-5965-40` - 3 (5965/40 MHz)
+            * `6g-5-5975-20` - 5 (5975/20 MHz)
+            * `6g-7-5985-80` - 7 (5985/80 MHz)
+            * `6g-9-5995-20` - 9 (5995/20 MHz)
+            * `6g-11-6005-40` - 11 (6005/40 MHz)
+            * `6g-13-6015-20` - 13 (6015/20 MHz)
+            * `6g-15-6025-160` - 15 (6025/160 MHz)
+            * `6g-17-6035-20` - 17 (6035/20 MHz)
+            * `6g-19-6045-40` - 19 (6045/40 MHz)
+            * `6g-21-6055-20` - 21 (6055/20 MHz)
+            * `6g-23-6065-80` - 23 (6065/80 MHz)
+            * `6g-25-6075-20` - 25 (6075/20 MHz)
+            * `6g-27-6085-40` - 27 (6085/40 MHz)
+            * `6g-29-6095-20` - 29 (6095/20 MHz)
+            * `6g-31-6105-320` - 31 (6105/320 MHz)
+            * `6g-33-6115-20` - 33 (6115/20 MHz)
+            * `6g-35-6125-40` - 35 (6125/40 MHz)
+            * `6g-37-6135-20` - 37 (6135/20 MHz)
+            * `6g-39-6145-80` - 39 (6145/80 MHz)
+            * `6g-41-6155-20` - 41 (6155/20 MHz)
+            * `6g-43-6165-40` - 43 (6165/40 MHz)
+            * `6g-45-6175-20` - 45 (6175/20 MHz)
+            * `6g-47-6185-160` - 47 (6185/160 MHz)
+            * `6g-49-6195-20` - 49 (6195/20 MHz)
+            * `6g-51-6205-40` - 51 (6205/40 MHz)
+            * `6g-53-6215-20` - 53 (6215/20 MHz)
+            * `6g-55-6225-80` - 55 (6225/80 MHz)
+            * `6g-57-6235-20` - 57 (6235/20 MHz)
+            * `6g-59-6245-40` - 59 (6245/40 MHz)
+            * `6g-61-6255-20` - 61 (6255/20 MHz)
+            * `6g-65-6275-20` - 65 (6275/20 MHz)
+            * `6g-67-6285-40` - 67 (6285/40 MHz)
+            * `6g-69-6295-20` - 69 (6295/20 MHz)
+            * `6g-71-6305-80` - 71 (6305/80 MHz)
+            * `6g-73-6315-20` - 73 (6315/20 MHz)
+            * `6g-75-6325-40` - 75 (6325/40 MHz)
+            * `6g-77-6335-20` - 77 (6335/20 MHz)
+            * `6g-79-6345-160` - 79 (6345/160 MHz)
+            * `6g-81-6355-20` - 81 (6355/20 MHz)
+            * `6g-83-6365-40` - 83 (6365/40 MHz)
+            * `6g-85-6375-20` - 85 (6375/20 MHz)
+            * `6g-87-6385-80` - 87 (6385/80 MHz)
+            * `6g-89-6395-20` - 89 (6395/20 MHz)
+            * `6g-91-6405-40` - 91 (6405/40 MHz)
+            * `6g-93-6415-20` - 93 (6415/20 MHz)
+            * `6g-95-6425-320` - 95 (6425/320 MHz)
+            * `6g-97-6435-20` - 97 (6435/20 MHz)
+            * `6g-99-6445-40` - 99 (6445/40 MHz)
+            * `6g-101-6455-20` - 101 (6455/20 MHz)
+            * `6g-103-6465-80` - 103 (6465/80 MHz)
+            * `6g-105-6475-20` - 105 (6475/20 MHz)
+            * `6g-107-6485-40` - 107 (6485/40 MHz)
+            * `6g-109-6495-20` - 109 (6495/20 MHz)
+            * `6g-111-6505-160` - 111 (6505/160 MHz)
+            * `6g-113-6515-20` - 113 (6515/20 MHz)
+            * `6g-115-6525-40` - 115 (6525/40 MHz)
+            * `6g-117-6535-20` - 117 (6535/20 MHz)
+            * `6g-119-6545-80` - 119 (6545/80 MHz)
+            * `6g-121-6555-20` - 121 (6555/20 MHz)
+            * `6g-123-6565-40` - 123 (6565/40 MHz)
+            * `6g-125-6575-20` - 125 (6575/20 MHz)
+            * `6g-129-6595-20` - 129 (6595/20 MHz)
+            * `6g-131-6605-40` - 131 (6605/40 MHz)
+            * `6g-133-6615-20` - 133 (6615/20 MHz)
+            * `6g-135-6625-80` - 135 (6625/80 MHz)
+            * `6g-137-6635-20` - 137 (6635/20 MHz)
+            * `6g-139-6645-40` - 139 (6645/40 MHz)
+            * `6g-141-6655-20` - 141 (6655/20 MHz)
+            * `6g-143-6665-160` - 143 (6665/160 MHz)
+            * `6g-145-6675-20` - 145 (6675/20 MHz)
+            * `6g-147-6685-40` - 147 (6685/40 MHz)
+            * `6g-149-6695-20` - 149 (6695/20 MHz)
+            * `6g-151-6705-80` - 151 (6705/80 MHz)
+            * `6g-153-6715-20` - 153 (6715/20 MHz)
+            * `6g-155-6725-40` - 155 (6725/40 MHz)
+            * `6g-157-6735-20` - 157 (6735/20 MHz)
+            * `6g-159-6745-320` - 159 (6745/320 MHz)
+            * `6g-161-6755-20` - 161 (6755/20 MHz)
+            * `6g-163-6765-40` - 163 (6765/40 MHz)
+            * `6g-165-6775-20` - 165 (6775/20 MHz)
+            * `6g-167-6785-80` - 167 (6785/80 MHz)
+            * `6g-169-6795-20` - 169 (6795/20 MHz)
+            * `6g-171-6805-40` - 171 (6805/40 MHz)
+            * `6g-173-6815-20` - 173 (6815/20 MHz)
+            * `6g-175-6825-160` - 175 (6825/160 MHz)
+            * `6g-177-6835-20` - 177 (6835/20 MHz)
+            * `6g-179-6845-40` - 179 (6845/40 MHz)
+            * `6g-181-6855-20` - 181 (6855/20 MHz)
+            * `6g-183-6865-80` - 183 (6865/80 MHz)
+            * `6g-185-6875-20` - 185 (6875/20 MHz)
+            * `6g-187-6885-40` - 187 (6885/40 MHz)
+            * `6g-189-6895-20` - 189 (6895/20 MHz)
+            * `6g-193-6915-20` - 193 (6915/20 MHz)
+            * `6g-195-6925-40` - 195 (6925/40 MHz)
+            * `6g-197-6935-20` - 197 (6935/20 MHz)
+            * `6g-199-6945-80` - 199 (6945/80 MHz)
+            * `6g-201-6955-20` - 201 (6955/20 MHz)
+            * `6g-203-6965-40` - 203 (6965/40 MHz)
+            * `6g-205-6975-20` - 205 (6975/20 MHz)
+            * `6g-207-6985-160` - 207 (6985/160 MHz)
+            * `6g-209-6995-20` - 209 (6995/20 MHz)
+            * `6g-211-7005-40` - 211 (7005/40 MHz)
+            * `6g-213-7015-20` - 213 (7015/20 MHz)
+            * `6g-215-7025-80` - 215 (7025/80 MHz)
+            * `6g-217-7035-20` - 217 (7035/20 MHz)
+            * `6g-219-7045-40` - 219 (7045/40 MHz)
+            * `6g-221-7055-20` - 221 (7055/20 MHz)
+            * `6g-225-7075-20` - 225 (7075/20 MHz)
+            * `6g-227-7085-40` - 227 (7085/40 MHz)
+            * `6g-229-7095-20` - 229 (7095/20 MHz)
+            * `6g-233-7115-20` - 233 (7115/20 MHz)
+            * `60g-1-58320-2160` - 1 (58.32/2.16 GHz)
+            * `60g-2-60480-2160` - 2 (60.48/2.16 GHz)
+            * `60g-3-62640-2160` - 3 (62.64/2.16 GHz)
+            * `60g-4-64800-2160` - 4 (64.80/2.16 GHz)
+            * `60g-5-66960-2160` - 5 (66.96/2.16 GHz)
+            * `60g-6-69120-2160` - 6 (69.12/2.16 GHz)
+            * `60g-9-59400-4320` - 9 (59.40/4.32 GHz)
+            * `60g-10-61560-4320` - 10 (61.56/4.32 GHz)
+            * `60g-11-63720-4320` - 11 (63.72/4.32 GHz)
+            * `60g-12-65880-4320` - 12 (65.88/4.32 GHz)
+            * `60g-13-68040-4320` - 13 (68.04/4.32 GHz)
+            * `60g-17-60480-6480` - 17 (60.48/6.48 GHz)
+            * `60g-18-62640-6480` - 18 (62.64/6.48 GHz)
+            * `60g-19-64800-6480` - 19 (64.80/6.48 GHz)
+            * `60g-20-66960-6480` - 20 (66.96/6.48 GHz)
+            * `60g-25-61560-6480` - 25 (61.56/8.64 GHz)
+            * `60g-26-63720-6480` - 26 (63.72/8.64 GHz)
+            * `60g-27-65880-6480` - 27 (65.88/8.64 GHz)
+          title: Wireless channel
+        poe_mode:
+          enum:
+          - pd
+          - pse
+          - ''
+          type: string
+          description: |-
+            * `pd` - PD
+            * `pse` - PSE
+        poe_type:
+          enum:
+          - type1-ieee802.3af
+          - type2-ieee802.3at
+          - type3-ieee802.3bt
+          - type4-ieee802.3bt
+          - passive-24v-2pair
+          - passive-24v-4pair
+          - passive-48v-2pair
+          - passive-48v-4pair
+          - ''
+          type: string
+          description: |-
+            * `type1-ieee802.3af` - 802.3af (Type 1)
+            * `type2-ieee802.3at` - 802.3at (Type 2)
+            * `type3-ieee802.3bt` - 802.3bt (Type 3)
+            * `type4-ieee802.3bt` - 802.3bt (Type 4)
+            * `passive-24v-2pair` - Passive 24V (2-pair)
+            * `passive-24v-4pair` - Passive 24V (4-pair)
+            * `passive-48v-2pair` - Passive 48V (2-pair)
+            * `passive-48v-4pair` - Passive 48V (4-pair)
+        rf_channel_frequency:
+          type: number
+          format: double
+          maximum: 100000
+          minimum: -100000
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+          title: Channel frequency (MHz)
+          description: Populated by selected channel (if set)
+        rf_channel_width:
+          type: number
+          format: double
+          maximum: 10000
+          minimum: -10000
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+          title: Channel width (MHz)
+          description: Populated by selected channel (if set)
+        tx_power:
+          type: integer
+          maximum: 127
+          minimum: 0
+          nullable: true
+          title: Transmit power (dBm)
+        untagged_vlan:
+          type: integer
+          nullable: true
+        tagged_vlans:
+          type: array
+          items:
+            type: integer
+            title: Tagged VLANs
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        wireless_lans:
+          type: array
+          items:
+            type: integer
+            title: Wireless LANs
+        vrf:
+          type: integer
+          nullable: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - device
+      - name
+      - type
+      - vdcs
+    WritableInterfaceTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          type: integer
+          nullable: true
+        module_type:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - virtual
+          - bridge
+          - lag
+          - 100base-fx
+          - 100base-lfx
+          - 100base-tx
+          - 100base-t1
+          - 1000base-t
+          - 2.5gbase-t
+          - 5gbase-t
+          - 10gbase-t
+          - 10gbase-cx4
+          - 1000base-x-gbic
+          - 1000base-x-sfp
+          - 10gbase-x-sfpp
+          - 10gbase-x-xfp
+          - 10gbase-x-xenpak
+          - 10gbase-x-x2
+          - 25gbase-x-sfp28
+          - 50gbase-x-sfp56
+          - 40gbase-x-qsfpp
+          - 50gbase-x-sfp28
+          - 100gbase-x-cfp
+          - 100gbase-x-cfp2
+          - 200gbase-x-cfp2
+          - 100gbase-x-cfp4
+          - 100gbase-x-cpak
+          - 100gbase-x-qsfp28
+          - 200gbase-x-qsfp56
+          - 400gbase-x-qsfpdd
+          - 400gbase-x-osfp
+          - 800gbase-x-qsfpdd
+          - 800gbase-x-osfp
+          - 1000base-kx
+          - 10gbase-kr
+          - 10gbase-kx4
+          - 25gbase-kr
+          - 40gbase-kr4
+          - 50gbase-kr
+          - 100gbase-kp4
+          - 100gbase-kr2
+          - 100gbase-kr4
+          - ieee802.11a
+          - ieee802.11g
+          - ieee802.11n
+          - ieee802.11ac
+          - ieee802.11ad
+          - ieee802.11ax
+          - ieee802.11ay
+          - ieee802.15.1
+          - other-wireless
+          - gsm
+          - cdma
+          - lte
+          - sonet-oc3
+          - sonet-oc12
+          - sonet-oc48
+          - sonet-oc192
+          - sonet-oc768
+          - sonet-oc1920
+          - sonet-oc3840
+          - 1gfc-sfp
+          - 2gfc-sfp
+          - 4gfc-sfp
+          - 8gfc-sfpp
+          - 16gfc-sfpp
+          - 32gfc-sfp28
+          - 64gfc-qsfpp
+          - 128gfc-qsfp28
+          - infiniband-sdr
+          - infiniband-ddr
+          - infiniband-qdr
+          - infiniband-fdr10
+          - infiniband-fdr
+          - infiniband-edr
+          - infiniband-hdr
+          - infiniband-ndr
+          - infiniband-xdr
+          - t1
+          - e1
+          - t3
+          - e3
+          - xdsl
+          - docsis
+          - gpon
+          - xg-pon
+          - xgs-pon
+          - ng-pon2
+          - epon
+          - 10g-epon
+          - cisco-stackwise
+          - cisco-stackwise-plus
+          - cisco-flexstack
+          - cisco-flexstack-plus
+          - cisco-stackwise-80
+          - cisco-stackwise-160
+          - cisco-stackwise-320
+          - cisco-stackwise-480
+          - cisco-stackwise-1t
+          - juniper-vcp
+          - extreme-summitstack
+          - extreme-summitstack-128
+          - extreme-summitstack-256
+          - extreme-summitstack-512
+          - other
+          type: string
+          description: |-
+            * `virtual` - Virtual
+            * `bridge` - Bridge
+            * `lag` - Link Aggregation Group (LAG)
+            * `100base-fx` - 100BASE-FX (10/100ME FIBER)
+            * `100base-lfx` - 100BASE-LFX (10/100ME FIBER)
+            * `100base-tx` - 100BASE-TX (10/100ME)
+            * `100base-t1` - 100BASE-T1 (10/100ME Single Pair)
+            * `1000base-t` - 1000BASE-T (1GE)
+            * `2.5gbase-t` - 2.5GBASE-T (2.5GE)
+            * `5gbase-t` - 5GBASE-T (5GE)
+            * `10gbase-t` - 10GBASE-T (10GE)
+            * `10gbase-cx4` - 10GBASE-CX4 (10GE)
+            * `1000base-x-gbic` - GBIC (1GE)
+            * `1000base-x-sfp` - SFP (1GE)
+            * `10gbase-x-sfpp` - SFP+ (10GE)
+            * `10gbase-x-xfp` - XFP (10GE)
+            * `10gbase-x-xenpak` - XENPAK (10GE)
+            * `10gbase-x-x2` - X2 (10GE)
+            * `25gbase-x-sfp28` - SFP28 (25GE)
+            * `50gbase-x-sfp56` - SFP56 (50GE)
+            * `40gbase-x-qsfpp` - QSFP+ (40GE)
+            * `50gbase-x-sfp28` - QSFP28 (50GE)
+            * `100gbase-x-cfp` - CFP (100GE)
+            * `100gbase-x-cfp2` - CFP2 (100GE)
+            * `200gbase-x-cfp2` - CFP2 (200GE)
+            * `100gbase-x-cfp4` - CFP4 (100GE)
+            * `100gbase-x-cpak` - Cisco CPAK (100GE)
+            * `100gbase-x-qsfp28` - QSFP28 (100GE)
+            * `200gbase-x-qsfp56` - QSFP56 (200GE)
+            * `400gbase-x-qsfpdd` - QSFP-DD (400GE)
+            * `400gbase-x-osfp` - OSFP (400GE)
+            * `800gbase-x-qsfpdd` - QSFP-DD (800GE)
+            * `800gbase-x-osfp` - OSFP (800GE)
+            * `1000base-kx` - 1000BASE-KX (1GE)
+            * `10gbase-kr` - 10GBASE-KR (10GE)
+            * `10gbase-kx4` - 10GBASE-KX4 (10GE)
+            * `25gbase-kr` - 25GBASE-KR (25GE)
+            * `40gbase-kr4` - 40GBASE-KR4 (40GE)
+            * `50gbase-kr` - 50GBASE-KR (50GE)
+            * `100gbase-kp4` - 100GBASE-KP4 (100GE)
+            * `100gbase-kr2` - 100GBASE-KR2 (100GE)
+            * `100gbase-kr4` - 100GBASE-KR4 (100GE)
+            * `ieee802.11a` - IEEE 802.11a
+            * `ieee802.11g` - IEEE 802.11b/g
+            * `ieee802.11n` - IEEE 802.11n
+            * `ieee802.11ac` - IEEE 802.11ac
+            * `ieee802.11ad` - IEEE 802.11ad
+            * `ieee802.11ax` - IEEE 802.11ax
+            * `ieee802.11ay` - IEEE 802.11ay
+            * `ieee802.15.1` - IEEE 802.15.1 (Bluetooth)
+            * `other-wireless` - Other (Wireless)
+            * `gsm` - GSM
+            * `cdma` - CDMA
+            * `lte` - LTE
+            * `sonet-oc3` - OC-3/STM-1
+            * `sonet-oc12` - OC-12/STM-4
+            * `sonet-oc48` - OC-48/STM-16
+            * `sonet-oc192` - OC-192/STM-64
+            * `sonet-oc768` - OC-768/STM-256
+            * `sonet-oc1920` - OC-1920/STM-640
+            * `sonet-oc3840` - OC-3840/STM-1234
+            * `1gfc-sfp` - SFP (1GFC)
+            * `2gfc-sfp` - SFP (2GFC)
+            * `4gfc-sfp` - SFP (4GFC)
+            * `8gfc-sfpp` - SFP+ (8GFC)
+            * `16gfc-sfpp` - SFP+ (16GFC)
+            * `32gfc-sfp28` - SFP28 (32GFC)
+            * `64gfc-qsfpp` - QSFP+ (64GFC)
+            * `128gfc-qsfp28` - QSFP28 (128GFC)
+            * `infiniband-sdr` - SDR (2 Gbps)
+            * `infiniband-ddr` - DDR (4 Gbps)
+            * `infiniband-qdr` - QDR (8 Gbps)
+            * `infiniband-fdr10` - FDR10 (10 Gbps)
+            * `infiniband-fdr` - FDR (13.5 Gbps)
+            * `infiniband-edr` - EDR (25 Gbps)
+            * `infiniband-hdr` - HDR (50 Gbps)
+            * `infiniband-ndr` - NDR (100 Gbps)
+            * `infiniband-xdr` - XDR (250 Gbps)
+            * `t1` - T1 (1.544 Mbps)
+            * `e1` - E1 (2.048 Mbps)
+            * `t3` - T3 (45 Mbps)
+            * `e3` - E3 (34 Mbps)
+            * `xdsl` - xDSL
+            * `docsis` - DOCSIS
+            * `gpon` - GPON (2.5 Gbps / 1.25 Gps)
+            * `xg-pon` - XG-PON (10 Gbps / 2.5 Gbps)
+            * `xgs-pon` - XGS-PON (10 Gbps)
+            * `ng-pon2` - NG-PON2 (TWDM-PON) (4x10 Gbps)
+            * `epon` - EPON (1 Gbps)
+            * `10g-epon` - 10G-EPON (10 Gbps)
+            * `cisco-stackwise` - Cisco StackWise
+            * `cisco-stackwise-plus` - Cisco StackWise Plus
+            * `cisco-flexstack` - Cisco FlexStack
+            * `cisco-flexstack-plus` - Cisco FlexStack Plus
+            * `cisco-stackwise-80` - Cisco StackWise-80
+            * `cisco-stackwise-160` - Cisco StackWise-160
+            * `cisco-stackwise-320` - Cisco StackWise-320
+            * `cisco-stackwise-480` - Cisco StackWise-480
+            * `cisco-stackwise-1t` - Cisco StackWise-1T
+            * `juniper-vcp` - Juniper VCP
+            * `extreme-summitstack` - Extreme SummitStack
+            * `extreme-summitstack-128` - Extreme SummitStack-128
+            * `extreme-summitstack-256` - Extreme SummitStack-256
+            * `extreme-summitstack-512` - Extreme SummitStack-512
+            * `other` - Other
+        enabled:
+          type: boolean
+        mgmt_only:
+          type: boolean
+          title: Management only
+        description:
+          type: string
+          maxLength: 200
+        bridge:
+          type: integer
+          nullable: true
+          title: Bridge interface
+        poe_mode:
+          enum:
+          - pd
+          - pse
+          - ''
+          type: string
+          description: |-
+            * `pd` - PD
+            * `pse` - PSE
+        poe_type:
+          enum:
+          - type1-ieee802.3af
+          - type2-ieee802.3at
+          - type3-ieee802.3bt
+          - type4-ieee802.3bt
+          - passive-24v-2pair
+          - passive-24v-4pair
+          - passive-48v-2pair
+          - passive-48v-4pair
+          - ''
+          type: string
+          description: |-
+            * `type1-ieee802.3af` - 802.3af (Type 1)
+            * `type2-ieee802.3at` - 802.3at (Type 2)
+            * `type3-ieee802.3bt` - 802.3bt (Type 3)
+            * `type4-ieee802.3bt` - 802.3bt (Type 4)
+            * `passive-24v-2pair` - Passive 24V (2-pair)
+            * `passive-24v-4pair` - Passive 24V (4-pair)
+            * `passive-48v-2pair` - Passive 48V (2-pair)
+            * `passive-48v-4pair` - Passive 48V (4-pair)
+      required:
+      - name
+      - type
+    WritableInventoryItemRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          type: integer
+        parent:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        role:
+          type: integer
+          nullable: true
+        manufacturer:
+          type: integer
+          nullable: true
+        part_id:
+          type: string
+          description: Manufacturer-assigned part identifier
+          maxLength: 50
+        serial:
+          type: string
+          title: Serial number
+          maxLength: 50
+        asset_tag:
+          type: string
+          nullable: true
+          description: A unique tag used to identify this item
+          maxLength: 50
+        discovered:
+          type: boolean
+          description: This item was automatically discovered
+        description:
+          type: string
+          maxLength: 200
+        component_type:
+          type: string
+          nullable: true
+        component_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+          nullable: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - device
+      - name
+    WritableInventoryItemTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          type: integer
+        parent:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        role:
+          type: integer
+          nullable: true
+        manufacturer:
+          type: integer
+          nullable: true
+        part_id:
+          type: string
+          description: Manufacturer-assigned part identifier
+          maxLength: 50
+        description:
+          type: string
+          maxLength: 200
+        component_type:
+          type: string
+          nullable: true
+        component_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+          nullable: true
+      required:
+      - device_type
+      - name
+    WritableJournalEntryRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        assigned_object_type:
+          type: string
+        assigned_object_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+        created_by:
+          type: integer
+          nullable: true
+        kind:
+          enum:
+          - info
+          - success
+          - warning
+          - danger
+          type: string
+          description: |-
+            * `info` - Info
+            * `success` - Success
+            * `warning` - Warning
+            * `danger` - Danger
+        comments:
+          type: string
+          minLength: 1
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - assigned_object_id
+      - assigned_object_type
+      - comments
+    WritableL2VPNRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        identifier:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: -9223372036854775808
+          format: int64
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        type:
+          enum:
+          - vpws
+          - vpls
+          - vxlan
+          - vxlan-evpn
+          - mpls-evpn
+          - pbb-evpn
+          - epl
+          - evpl
+          - ep-lan
+          - evp-lan
+          - ep-tree
+          - evp-tree
+          type: string
+          description: |-
+            * `vpws` - VPWS
+            * `vpls` - VPLS
+            * `vxlan` - VXLAN
+            * `vxlan-evpn` - VXLAN-EVPN
+            * `mpls-evpn` - MPLS EVPN
+            * `pbb-evpn` - PBB EVPN
+            * `epl` - EPL
+            * `evpl` - EVPL
+            * `ep-lan` - Ethernet Private LAN
+            * `evp-lan` - Ethernet Virtual Private LAN
+            * `ep-tree` - Ethernet Private Tree
+            * `evp-tree` - Ethernet Virtual Private Tree
+        import_targets:
+          type: array
+          items:
+            type: integer
+        export_targets:
+          type: array
+          items:
+            type: integer
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tenant:
+          type: integer
+          nullable: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+      - type
+    WritableL2VPNTerminationRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        l2vpn:
+          type: integer
+        assigned_object_type:
+          type: string
+        assigned_object_id:
+          type: integer
+          maximum: 9223372036854775807
+          minimum: 0
+          format: int64
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - assigned_object_id
+      - assigned_object_type
+      - l2vpn
+    WritableLocationRequest:
+      type: object
+      description: Extends PrimaryModelSerializer to include MPTT support.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        site:
+          type: integer
+        parent:
+          type: integer
+          nullable: true
+        status:
+          enum:
+          - planned
+          - staging
+          - active
+          - decommissioning
+          - retired
+          type: string
+          description: |-
+            * `planned` - Planned
+            * `staging` - Staging
+            * `active` - Active
+            * `decommissioning` - Decommissioning
+            * `retired` - Retired
+        tenant:
+          type: integer
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - site
+      - slug
+    WritableModuleBayRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          type: integer
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        installed_module:
+          type: integer
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        position:
+          type: string
+          description: Identifier to reference when renaming installed components
+          maxLength: 30
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - device
+      - installed_module
+      - name
+    WritableModuleBayTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          type: integer
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        position:
+          type: string
+          description: Identifier to reference when renaming installed components
+          maxLength: 30
+        description:
+          type: string
+          maxLength: 200
+      required:
+      - device_type
+      - name
+    WritableModuleRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          type: integer
+        module_bay:
+          type: integer
+        module_type:
+          type: integer
+        status:
+          enum:
+          - offline
+          - active
+          - planned
+          - staged
+          - failed
+          - decommissioning
+          type: string
+          description: |-
+            * `offline` - Offline
+            * `active` - Active
+            * `planned` - Planned
+            * `staged` - Staged
+            * `failed` - Failed
+            * `decommissioning` - Decommissioning
+        serial:
+          type: string
+          title: Serial number
+          maxLength: 50
+        asset_tag:
+          type: string
+          nullable: true
+          description: A unique tag used to identify this device
+          maxLength: 50
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - device
+      - module_bay
+      - module_type
+    WritableModuleTypeRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        manufacturer:
+          type: integer
+        model:
+          type: string
+          minLength: 1
+          maxLength: 100
+        part_number:
+          type: string
+          description: Discrete part number (optional)
+          maxLength: 50
+        weight:
+          type: number
+          format: double
+          maximum: 1000000
+          minimum: -1000000
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+        weight_unit:
+          enum:
+          - kg
+          - g
+          - lb
+          - oz
+          - ''
+          type: string
+          description: |-
+            * `kg` - Kilograms
+            * `g` - Grams
+            * `lb` - Pounds
+            * `oz` - Ounces
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - manufacturer
+      - model
+    WritableObjectPermissionRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        description:
+          type: string
+          maxLength: 200
+        enabled:
+          type: boolean
+        object_types:
+          type: array
+          items:
+            type: string
+        groups:
+          type: array
+          items:
+            type: integer
+        users:
+          type: array
+          items:
+            type: integer
+        actions:
+          type: array
+          items:
+            type: string
+            minLength: 1
+            maxLength: 30
+          description: The list of actions granted by this permission
+        constraints:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          description: Queryset filter matching the applicable objects of the selected
+            type(s)
+      required:
+      - actions
+      - name
+      - object_types
+    WritablePlatformRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        manufacturer:
+          type: integer
+          nullable: true
+          description: Optionally limit this platform to devices of a certain manufacturer
+        config_template:
+          type: integer
+          nullable: true
+        napalm_driver:
+          type: string
+          description: The name of the NAPALM driver to use when interacting with
+            devices
+          maxLength: 50
+        napalm_args:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          title: NAPALM arguments
+          description: Additional arguments to pass when initiating the NAPALM driver
+            (JSON format)
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    WritablePowerFeedRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        power_panel:
+          type: integer
+        rack:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        status:
+          enum:
+          - offline
+          - active
+          - planned
+          - failed
+          type: string
+          description: |-
+            * `offline` - Offline
+            * `active` - Active
+            * `planned` - Planned
+            * `failed` - Failed
+        type:
+          enum:
+          - primary
+          - redundant
+          type: string
+          description: |-
+            * `primary` - Primary
+            * `redundant` - Redundant
+        supply:
+          enum:
+          - ac
+          - dc
+          type: string
+          description: |-
+            * `ac` - AC
+            * `dc` - DC
+        phase:
+          enum:
+          - single-phase
+          - three-phase
+          type: string
+          description: |-
+            * `single-phase` - Single phase
+            * `three-phase` - Three-phase
+        voltage:
+          type: integer
+          maximum: 32767
+          minimum: -32768
+        amperage:
+          type: integer
+          maximum: 32767
+          minimum: 1
+        max_utilization:
+          type: integer
+          maximum: 100
+          minimum: 1
+          description: Maximum permissible draw (percentage)
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - power_panel
+    WritablePowerOutletRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          type: integer
+        module:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - iec-60320-c5
+          - iec-60320-c7
+          - iec-60320-c13
+          - iec-60320-c15
+          - iec-60320-c19
+          - iec-60320-c21
+          - iec-60309-p-n-e-4h
+          - iec-60309-p-n-e-6h
+          - iec-60309-p-n-e-9h
+          - iec-60309-2p-e-4h
+          - iec-60309-2p-e-6h
+          - iec-60309-2p-e-9h
+          - iec-60309-3p-e-4h
+          - iec-60309-3p-e-6h
+          - iec-60309-3p-e-9h
+          - iec-60309-3p-n-e-4h
+          - iec-60309-3p-n-e-6h
+          - iec-60309-3p-n-e-9h
+          - nema-1-15r
+          - nema-5-15r
+          - nema-5-20r
+          - nema-5-30r
+          - nema-5-50r
+          - nema-6-15r
+          - nema-6-20r
+          - nema-6-30r
+          - nema-6-50r
+          - nema-10-30r
+          - nema-10-50r
+          - nema-14-20r
+          - nema-14-30r
+          - nema-14-50r
+          - nema-14-60r
+          - nema-15-15r
+          - nema-15-20r
+          - nema-15-30r
+          - nema-15-50r
+          - nema-15-60r
+          - nema-l1-15r
+          - nema-l5-15r
+          - nema-l5-20r
+          - nema-l5-30r
+          - nema-l5-50r
+          - nema-l6-15r
+          - nema-l6-20r
+          - nema-l6-30r
+          - nema-l6-50r
+          - nema-l10-30r
+          - nema-l14-20r
+          - nema-l14-30r
+          - nema-l14-50r
+          - nema-l14-60r
+          - nema-l15-20r
+          - nema-l15-30r
+          - nema-l15-50r
+          - nema-l15-60r
+          - nema-l21-20r
+          - nema-l21-30r
+          - nema-l22-30r
+          - CS6360C
+          - CS6364C
+          - CS8164C
+          - CS8264C
+          - CS8364C
+          - CS8464C
+          - ita-e
+          - ita-f
+          - ita-g
+          - ita-h
+          - ita-i
+          - ita-j
+          - ita-k
+          - ita-l
+          - ita-m
+          - ita-n
+          - ita-o
+          - ita-multistandard
+          - usb-a
+          - usb-micro-b
+          - usb-c
+          - dc-terminal
+          - hdot-cx
+          - saf-d-grid
+          - neutrik-powercon-20a
+          - neutrik-powercon-32a
+          - neutrik-powercon-true1
+          - neutrik-powercon-true1-top
+          - ubiquiti-smartpower
+          - hardwired
+          - other
+          - ''
+          type: string
+          description: |-
+            Physical port type
+
+            * `iec-60320-c5` - C5
+            * `iec-60320-c7` - C7
+            * `iec-60320-c13` - C13
+            * `iec-60320-c15` - C15
+            * `iec-60320-c19` - C19
+            * `iec-60320-c21` - C21
+            * `iec-60309-p-n-e-4h` - P+N+E 4H
+            * `iec-60309-p-n-e-6h` - P+N+E 6H
+            * `iec-60309-p-n-e-9h` - P+N+E 9H
+            * `iec-60309-2p-e-4h` - 2P+E 4H
+            * `iec-60309-2p-e-6h` - 2P+E 6H
+            * `iec-60309-2p-e-9h` - 2P+E 9H
+            * `iec-60309-3p-e-4h` - 3P+E 4H
+            * `iec-60309-3p-e-6h` - 3P+E 6H
+            * `iec-60309-3p-e-9h` - 3P+E 9H
+            * `iec-60309-3p-n-e-4h` - 3P+N+E 4H
+            * `iec-60309-3p-n-e-6h` - 3P+N+E 6H
+            * `iec-60309-3p-n-e-9h` - 3P+N+E 9H
+            * `nema-1-15r` - NEMA 1-15R
+            * `nema-5-15r` - NEMA 5-15R
+            * `nema-5-20r` - NEMA 5-20R
+            * `nema-5-30r` - NEMA 5-30R
+            * `nema-5-50r` - NEMA 5-50R
+            * `nema-6-15r` - NEMA 6-15R
+            * `nema-6-20r` - NEMA 6-20R
+            * `nema-6-30r` - NEMA 6-30R
+            * `nema-6-50r` - NEMA 6-50R
+            * `nema-10-30r` - NEMA 10-30R
+            * `nema-10-50r` - NEMA 10-50R
+            * `nema-14-20r` - NEMA 14-20R
+            * `nema-14-30r` - NEMA 14-30R
+            * `nema-14-50r` - NEMA 14-50R
+            * `nema-14-60r` - NEMA 14-60R
+            * `nema-15-15r` - NEMA 15-15R
+            * `nema-15-20r` - NEMA 15-20R
+            * `nema-15-30r` - NEMA 15-30R
+            * `nema-15-50r` - NEMA 15-50R
+            * `nema-15-60r` - NEMA 15-60R
+            * `nema-l1-15r` - NEMA L1-15R
+            * `nema-l5-15r` - NEMA L5-15R
+            * `nema-l5-20r` - NEMA L5-20R
+            * `nema-l5-30r` - NEMA L5-30R
+            * `nema-l5-50r` - NEMA L5-50R
+            * `nema-l6-15r` - NEMA L6-15R
+            * `nema-l6-20r` - NEMA L6-20R
+            * `nema-l6-30r` - NEMA L6-30R
+            * `nema-l6-50r` - NEMA L6-50R
+            * `nema-l10-30r` - NEMA L10-30R
+            * `nema-l14-20r` - NEMA L14-20R
+            * `nema-l14-30r` - NEMA L14-30R
+            * `nema-l14-50r` - NEMA L14-50R
+            * `nema-l14-60r` - NEMA L14-60R
+            * `nema-l15-20r` - NEMA L15-20R
+            * `nema-l15-30r` - NEMA L15-30R
+            * `nema-l15-50r` - NEMA L15-50R
+            * `nema-l15-60r` - NEMA L15-60R
+            * `nema-l21-20r` - NEMA L21-20R
+            * `nema-l21-30r` - NEMA L21-30R
+            * `nema-l22-30r` - NEMA L22-30R
+            * `CS6360C` - CS6360C
+            * `CS6364C` - CS6364C
+            * `CS8164C` - CS8164C
+            * `CS8264C` - CS8264C
+            * `CS8364C` - CS8364C
+            * `CS8464C` - CS8464C
+            * `ita-e` - ITA Type E (CEE 7/5)
+            * `ita-f` - ITA Type F (CEE 7/3)
+            * `ita-g` - ITA Type G (BS 1363)
+            * `ita-h` - ITA Type H
+            * `ita-i` - ITA Type I
+            * `ita-j` - ITA Type J
+            * `ita-k` - ITA Type K
+            * `ita-l` - ITA Type L (CEI 23-50)
+            * `ita-m` - ITA Type M (BS 546)
+            * `ita-n` - ITA Type N
+            * `ita-o` - ITA Type O
+            * `ita-multistandard` - ITA Multistandard
+            * `usb-a` - USB Type A
+            * `usb-micro-b` - USB Micro B
+            * `usb-c` - USB Type C
+            * `dc-terminal` - DC Terminal
+            * `hdot-cx` - HDOT Cx
+            * `saf-d-grid` - Saf-D-Grid
+            * `neutrik-powercon-20a` - Neutrik powerCON (20A)
+            * `neutrik-powercon-32a` - Neutrik powerCON (32A)
+            * `neutrik-powercon-true1` - Neutrik powerCON TRUE1
+            * `neutrik-powercon-true1-top` - Neutrik powerCON TRUE1 TOP
+            * `ubiquiti-smartpower` - Ubiquiti SmartPower
+            * `hardwired` - Hardwired
+            * `other` - Other
+        power_port:
+          type: integer
+          nullable: true
+        feed_leg:
+          enum:
+          - A
+          - B
+          - C
+          - ''
+          type: string
+          description: |-
+            Phase (for three-phase feeds)
+
+            * `A` - A
+            * `B` - B
+            * `C` - C
+        description:
+          type: string
+          maxLength: 200
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - device
+      - name
+    WritablePowerOutletTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          type: integer
+          nullable: true
+        module_type:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - iec-60320-c5
+          - iec-60320-c7
+          - iec-60320-c13
+          - iec-60320-c15
+          - iec-60320-c19
+          - iec-60320-c21
+          - iec-60309-p-n-e-4h
+          - iec-60309-p-n-e-6h
+          - iec-60309-p-n-e-9h
+          - iec-60309-2p-e-4h
+          - iec-60309-2p-e-6h
+          - iec-60309-2p-e-9h
+          - iec-60309-3p-e-4h
+          - iec-60309-3p-e-6h
+          - iec-60309-3p-e-9h
+          - iec-60309-3p-n-e-4h
+          - iec-60309-3p-n-e-6h
+          - iec-60309-3p-n-e-9h
+          - nema-1-15r
+          - nema-5-15r
+          - nema-5-20r
+          - nema-5-30r
+          - nema-5-50r
+          - nema-6-15r
+          - nema-6-20r
+          - nema-6-30r
+          - nema-6-50r
+          - nema-10-30r
+          - nema-10-50r
+          - nema-14-20r
+          - nema-14-30r
+          - nema-14-50r
+          - nema-14-60r
+          - nema-15-15r
+          - nema-15-20r
+          - nema-15-30r
+          - nema-15-50r
+          - nema-15-60r
+          - nema-l1-15r
+          - nema-l5-15r
+          - nema-l5-20r
+          - nema-l5-30r
+          - nema-l5-50r
+          - nema-l6-15r
+          - nema-l6-20r
+          - nema-l6-30r
+          - nema-l6-50r
+          - nema-l10-30r
+          - nema-l14-20r
+          - nema-l14-30r
+          - nema-l14-50r
+          - nema-l14-60r
+          - nema-l15-20r
+          - nema-l15-30r
+          - nema-l15-50r
+          - nema-l15-60r
+          - nema-l21-20r
+          - nema-l21-30r
+          - nema-l22-30r
+          - CS6360C
+          - CS6364C
+          - CS8164C
+          - CS8264C
+          - CS8364C
+          - CS8464C
+          - ita-e
+          - ita-f
+          - ita-g
+          - ita-h
+          - ita-i
+          - ita-j
+          - ita-k
+          - ita-l
+          - ita-m
+          - ita-n
+          - ita-o
+          - ita-multistandard
+          - usb-a
+          - usb-micro-b
+          - usb-c
+          - dc-terminal
+          - hdot-cx
+          - saf-d-grid
+          - neutrik-powercon-20a
+          - neutrik-powercon-32a
+          - neutrik-powercon-true1
+          - neutrik-powercon-true1-top
+          - ubiquiti-smartpower
+          - hardwired
+          - other
+          - ''
+          type: string
+          description: |-
+            * `iec-60320-c5` - C5
+            * `iec-60320-c7` - C7
+            * `iec-60320-c13` - C13
+            * `iec-60320-c15` - C15
+            * `iec-60320-c19` - C19
+            * `iec-60320-c21` - C21
+            * `iec-60309-p-n-e-4h` - P+N+E 4H
+            * `iec-60309-p-n-e-6h` - P+N+E 6H
+            * `iec-60309-p-n-e-9h` - P+N+E 9H
+            * `iec-60309-2p-e-4h` - 2P+E 4H
+            * `iec-60309-2p-e-6h` - 2P+E 6H
+            * `iec-60309-2p-e-9h` - 2P+E 9H
+            * `iec-60309-3p-e-4h` - 3P+E 4H
+            * `iec-60309-3p-e-6h` - 3P+E 6H
+            * `iec-60309-3p-e-9h` - 3P+E 9H
+            * `iec-60309-3p-n-e-4h` - 3P+N+E 4H
+            * `iec-60309-3p-n-e-6h` - 3P+N+E 6H
+            * `iec-60309-3p-n-e-9h` - 3P+N+E 9H
+            * `nema-1-15r` - NEMA 1-15R
+            * `nema-5-15r` - NEMA 5-15R
+            * `nema-5-20r` - NEMA 5-20R
+            * `nema-5-30r` - NEMA 5-30R
+            * `nema-5-50r` - NEMA 5-50R
+            * `nema-6-15r` - NEMA 6-15R
+            * `nema-6-20r` - NEMA 6-20R
+            * `nema-6-30r` - NEMA 6-30R
+            * `nema-6-50r` - NEMA 6-50R
+            * `nema-10-30r` - NEMA 10-30R
+            * `nema-10-50r` - NEMA 10-50R
+            * `nema-14-20r` - NEMA 14-20R
+            * `nema-14-30r` - NEMA 14-30R
+            * `nema-14-50r` - NEMA 14-50R
+            * `nema-14-60r` - NEMA 14-60R
+            * `nema-15-15r` - NEMA 15-15R
+            * `nema-15-20r` - NEMA 15-20R
+            * `nema-15-30r` - NEMA 15-30R
+            * `nema-15-50r` - NEMA 15-50R
+            * `nema-15-60r` - NEMA 15-60R
+            * `nema-l1-15r` - NEMA L1-15R
+            * `nema-l5-15r` - NEMA L5-15R
+            * `nema-l5-20r` - NEMA L5-20R
+            * `nema-l5-30r` - NEMA L5-30R
+            * `nema-l5-50r` - NEMA L5-50R
+            * `nema-l6-15r` - NEMA L6-15R
+            * `nema-l6-20r` - NEMA L6-20R
+            * `nema-l6-30r` - NEMA L6-30R
+            * `nema-l6-50r` - NEMA L6-50R
+            * `nema-l10-30r` - NEMA L10-30R
+            * `nema-l14-20r` - NEMA L14-20R
+            * `nema-l14-30r` - NEMA L14-30R
+            * `nema-l14-50r` - NEMA L14-50R
+            * `nema-l14-60r` - NEMA L14-60R
+            * `nema-l15-20r` - NEMA L15-20R
+            * `nema-l15-30r` - NEMA L15-30R
+            * `nema-l15-50r` - NEMA L15-50R
+            * `nema-l15-60r` - NEMA L15-60R
+            * `nema-l21-20r` - NEMA L21-20R
+            * `nema-l21-30r` - NEMA L21-30R
+            * `nema-l22-30r` - NEMA L22-30R
+            * `CS6360C` - CS6360C
+            * `CS6364C` - CS6364C
+            * `CS8164C` - CS8164C
+            * `CS8264C` - CS8264C
+            * `CS8364C` - CS8364C
+            * `CS8464C` - CS8464C
+            * `ita-e` - ITA Type E (CEE 7/5)
+            * `ita-f` - ITA Type F (CEE 7/3)
+            * `ita-g` - ITA Type G (BS 1363)
+            * `ita-h` - ITA Type H
+            * `ita-i` - ITA Type I
+            * `ita-j` - ITA Type J
+            * `ita-k` - ITA Type K
+            * `ita-l` - ITA Type L (CEI 23-50)
+            * `ita-m` - ITA Type M (BS 546)
+            * `ita-n` - ITA Type N
+            * `ita-o` - ITA Type O
+            * `ita-multistandard` - ITA Multistandard
+            * `usb-a` - USB Type A
+            * `usb-micro-b` - USB Micro B
+            * `usb-c` - USB Type C
+            * `dc-terminal` - DC Terminal
+            * `hdot-cx` - HDOT Cx
+            * `saf-d-grid` - Saf-D-Grid
+            * `neutrik-powercon-20a` - Neutrik powerCON (20A)
+            * `neutrik-powercon-32a` - Neutrik powerCON (32A)
+            * `neutrik-powercon-true1` - Neutrik powerCON TRUE1
+            * `neutrik-powercon-true1-top` - Neutrik powerCON TRUE1 TOP
+            * `ubiquiti-smartpower` - Ubiquiti SmartPower
+            * `hardwired` - Hardwired
+            * `other` - Other
+        power_port:
+          type: integer
+          nullable: true
+        feed_leg:
+          enum:
+          - A
+          - B
+          - C
+          - ''
+          type: string
+          description: |-
+            Phase (for three-phase feeds)
+
+            * `A` - A
+            * `B` - B
+            * `C` - C
+        description:
+          type: string
+          maxLength: 200
+      required:
+      - name
+    WritablePowerPanelRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        site:
+          type: integer
+        location:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - site
+    WritablePowerPortRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          type: integer
+        module:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - iec-60320-c6
+          - iec-60320-c8
+          - iec-60320-c14
+          - iec-60320-c16
+          - iec-60320-c20
+          - iec-60320-c22
+          - iec-60309-p-n-e-4h
+          - iec-60309-p-n-e-6h
+          - iec-60309-p-n-e-9h
+          - iec-60309-2p-e-4h
+          - iec-60309-2p-e-6h
+          - iec-60309-2p-e-9h
+          - iec-60309-3p-e-4h
+          - iec-60309-3p-e-6h
+          - iec-60309-3p-e-9h
+          - iec-60309-3p-n-e-4h
+          - iec-60309-3p-n-e-6h
+          - iec-60309-3p-n-e-9h
+          - nema-1-15p
+          - nema-5-15p
+          - nema-5-20p
+          - nema-5-30p
+          - nema-5-50p
+          - nema-6-15p
+          - nema-6-20p
+          - nema-6-30p
+          - nema-6-50p
+          - nema-10-30p
+          - nema-10-50p
+          - nema-14-20p
+          - nema-14-30p
+          - nema-14-50p
+          - nema-14-60p
+          - nema-15-15p
+          - nema-15-20p
+          - nema-15-30p
+          - nema-15-50p
+          - nema-15-60p
+          - nema-l1-15p
+          - nema-l5-15p
+          - nema-l5-20p
+          - nema-l5-30p
+          - nema-l5-50p
+          - nema-l6-15p
+          - nema-l6-20p
+          - nema-l6-30p
+          - nema-l6-50p
+          - nema-l10-30p
+          - nema-l14-20p
+          - nema-l14-30p
+          - nema-l14-50p
+          - nema-l14-60p
+          - nema-l15-20p
+          - nema-l15-30p
+          - nema-l15-50p
+          - nema-l15-60p
+          - nema-l21-20p
+          - nema-l21-30p
+          - nema-l22-30p
+          - cs6361c
+          - cs6365c
+          - cs8165c
+          - cs8265c
+          - cs8365c
+          - cs8465c
+          - ita-c
+          - ita-e
+          - ita-f
+          - ita-ef
+          - ita-g
+          - ita-h
+          - ita-i
+          - ita-j
+          - ita-k
+          - ita-l
+          - ita-m
+          - ita-n
+          - ita-o
+          - usb-a
+          - usb-b
+          - usb-c
+          - usb-mini-a
+          - usb-mini-b
+          - usb-micro-a
+          - usb-micro-b
+          - usb-micro-ab
+          - usb-3-b
+          - usb-3-micro-b
+          - dc-terminal
+          - saf-d-grid
+          - neutrik-powercon-20
+          - neutrik-powercon-32
+          - neutrik-powercon-true1
+          - neutrik-powercon-true1-top
+          - ubiquiti-smartpower
+          - hardwired
+          - other
+          - ''
+          type: string
+          description: |-
+            Physical port type
+
+            * `iec-60320-c6` - C6
+            * `iec-60320-c8` - C8
+            * `iec-60320-c14` - C14
+            * `iec-60320-c16` - C16
+            * `iec-60320-c20` - C20
+            * `iec-60320-c22` - C22
+            * `iec-60309-p-n-e-4h` - P+N+E 4H
+            * `iec-60309-p-n-e-6h` - P+N+E 6H
+            * `iec-60309-p-n-e-9h` - P+N+E 9H
+            * `iec-60309-2p-e-4h` - 2P+E 4H
+            * `iec-60309-2p-e-6h` - 2P+E 6H
+            * `iec-60309-2p-e-9h` - 2P+E 9H
+            * `iec-60309-3p-e-4h` - 3P+E 4H
+            * `iec-60309-3p-e-6h` - 3P+E 6H
+            * `iec-60309-3p-e-9h` - 3P+E 9H
+            * `iec-60309-3p-n-e-4h` - 3P+N+E 4H
+            * `iec-60309-3p-n-e-6h` - 3P+N+E 6H
+            * `iec-60309-3p-n-e-9h` - 3P+N+E 9H
+            * `nema-1-15p` - NEMA 1-15P
+            * `nema-5-15p` - NEMA 5-15P
+            * `nema-5-20p` - NEMA 5-20P
+            * `nema-5-30p` - NEMA 5-30P
+            * `nema-5-50p` - NEMA 5-50P
+            * `nema-6-15p` - NEMA 6-15P
+            * `nema-6-20p` - NEMA 6-20P
+            * `nema-6-30p` - NEMA 6-30P
+            * `nema-6-50p` - NEMA 6-50P
+            * `nema-10-30p` - NEMA 10-30P
+            * `nema-10-50p` - NEMA 10-50P
+            * `nema-14-20p` - NEMA 14-20P
+            * `nema-14-30p` - NEMA 14-30P
+            * `nema-14-50p` - NEMA 14-50P
+            * `nema-14-60p` - NEMA 14-60P
+            * `nema-15-15p` - NEMA 15-15P
+            * `nema-15-20p` - NEMA 15-20P
+            * `nema-15-30p` - NEMA 15-30P
+            * `nema-15-50p` - NEMA 15-50P
+            * `nema-15-60p` - NEMA 15-60P
+            * `nema-l1-15p` - NEMA L1-15P
+            * `nema-l5-15p` - NEMA L5-15P
+            * `nema-l5-20p` - NEMA L5-20P
+            * `nema-l5-30p` - NEMA L5-30P
+            * `nema-l5-50p` - NEMA L5-50P
+            * `nema-l6-15p` - NEMA L6-15P
+            * `nema-l6-20p` - NEMA L6-20P
+            * `nema-l6-30p` - NEMA L6-30P
+            * `nema-l6-50p` - NEMA L6-50P
+            * `nema-l10-30p` - NEMA L10-30P
+            * `nema-l14-20p` - NEMA L14-20P
+            * `nema-l14-30p` - NEMA L14-30P
+            * `nema-l14-50p` - NEMA L14-50P
+            * `nema-l14-60p` - NEMA L14-60P
+            * `nema-l15-20p` - NEMA L15-20P
+            * `nema-l15-30p` - NEMA L15-30P
+            * `nema-l15-50p` - NEMA L15-50P
+            * `nema-l15-60p` - NEMA L15-60P
+            * `nema-l21-20p` - NEMA L21-20P
+            * `nema-l21-30p` - NEMA L21-30P
+            * `nema-l22-30p` - NEMA L22-30P
+            * `cs6361c` - CS6361C
+            * `cs6365c` - CS6365C
+            * `cs8165c` - CS8165C
+            * `cs8265c` - CS8265C
+            * `cs8365c` - CS8365C
+            * `cs8465c` - CS8465C
+            * `ita-c` - ITA Type C (CEE 7/16)
+            * `ita-e` - ITA Type E (CEE 7/6)
+            * `ita-f` - ITA Type F (CEE 7/4)
+            * `ita-ef` - ITA Type E/F (CEE 7/7)
+            * `ita-g` - ITA Type G (BS 1363)
+            * `ita-h` - ITA Type H
+            * `ita-i` - ITA Type I
+            * `ita-j` - ITA Type J
+            * `ita-k` - ITA Type K
+            * `ita-l` - ITA Type L (CEI 23-50)
+            * `ita-m` - ITA Type M (BS 546)
+            * `ita-n` - ITA Type N
+            * `ita-o` - ITA Type O
+            * `usb-a` - USB Type A
+            * `usb-b` - USB Type B
+            * `usb-c` - USB Type C
+            * `usb-mini-a` - USB Mini A
+            * `usb-mini-b` - USB Mini B
+            * `usb-micro-a` - USB Micro A
+            * `usb-micro-b` - USB Micro B
+            * `usb-micro-ab` - USB Micro AB
+            * `usb-3-b` - USB 3.0 Type B
+            * `usb-3-micro-b` - USB 3.0 Micro B
+            * `dc-terminal` - DC Terminal
+            * `saf-d-grid` - Saf-D-Grid
+            * `neutrik-powercon-20` - Neutrik powerCON (20A)
+            * `neutrik-powercon-32` - Neutrik powerCON (32A)
+            * `neutrik-powercon-true1` - Neutrik powerCON TRUE1
+            * `neutrik-powercon-true1-top` - Neutrik powerCON TRUE1 TOP
+            * `ubiquiti-smartpower` - Ubiquiti SmartPower
+            * `hardwired` - Hardwired
+            * `other` - Other
+        maximum_draw:
+          type: integer
+          maximum: 32767
+          minimum: 1
+          nullable: true
+          description: Maximum power draw (watts)
+        allocated_draw:
+          type: integer
+          maximum: 32767
+          minimum: 1
+          nullable: true
+          description: Allocated power draw (watts)
+        description:
+          type: string
+          maxLength: 200
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - device
+      - name
+    WritablePowerPortTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          type: integer
+          nullable: true
+        module_type:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - iec-60320-c6
+          - iec-60320-c8
+          - iec-60320-c14
+          - iec-60320-c16
+          - iec-60320-c20
+          - iec-60320-c22
+          - iec-60309-p-n-e-4h
+          - iec-60309-p-n-e-6h
+          - iec-60309-p-n-e-9h
+          - iec-60309-2p-e-4h
+          - iec-60309-2p-e-6h
+          - iec-60309-2p-e-9h
+          - iec-60309-3p-e-4h
+          - iec-60309-3p-e-6h
+          - iec-60309-3p-e-9h
+          - iec-60309-3p-n-e-4h
+          - iec-60309-3p-n-e-6h
+          - iec-60309-3p-n-e-9h
+          - nema-1-15p
+          - nema-5-15p
+          - nema-5-20p
+          - nema-5-30p
+          - nema-5-50p
+          - nema-6-15p
+          - nema-6-20p
+          - nema-6-30p
+          - nema-6-50p
+          - nema-10-30p
+          - nema-10-50p
+          - nema-14-20p
+          - nema-14-30p
+          - nema-14-50p
+          - nema-14-60p
+          - nema-15-15p
+          - nema-15-20p
+          - nema-15-30p
+          - nema-15-50p
+          - nema-15-60p
+          - nema-l1-15p
+          - nema-l5-15p
+          - nema-l5-20p
+          - nema-l5-30p
+          - nema-l5-50p
+          - nema-l6-15p
+          - nema-l6-20p
+          - nema-l6-30p
+          - nema-l6-50p
+          - nema-l10-30p
+          - nema-l14-20p
+          - nema-l14-30p
+          - nema-l14-50p
+          - nema-l14-60p
+          - nema-l15-20p
+          - nema-l15-30p
+          - nema-l15-50p
+          - nema-l15-60p
+          - nema-l21-20p
+          - nema-l21-30p
+          - nema-l22-30p
+          - cs6361c
+          - cs6365c
+          - cs8165c
+          - cs8265c
+          - cs8365c
+          - cs8465c
+          - ita-c
+          - ita-e
+          - ita-f
+          - ita-ef
+          - ita-g
+          - ita-h
+          - ita-i
+          - ita-j
+          - ita-k
+          - ita-l
+          - ita-m
+          - ita-n
+          - ita-o
+          - usb-a
+          - usb-b
+          - usb-c
+          - usb-mini-a
+          - usb-mini-b
+          - usb-micro-a
+          - usb-micro-b
+          - usb-micro-ab
+          - usb-3-b
+          - usb-3-micro-b
+          - dc-terminal
+          - saf-d-grid
+          - neutrik-powercon-20
+          - neutrik-powercon-32
+          - neutrik-powercon-true1
+          - neutrik-powercon-true1-top
+          - ubiquiti-smartpower
+          - hardwired
+          - other
+          - ''
+          type: string
+          description: |-
+            * `iec-60320-c6` - C6
+            * `iec-60320-c8` - C8
+            * `iec-60320-c14` - C14
+            * `iec-60320-c16` - C16
+            * `iec-60320-c20` - C20
+            * `iec-60320-c22` - C22
+            * `iec-60309-p-n-e-4h` - P+N+E 4H
+            * `iec-60309-p-n-e-6h` - P+N+E 6H
+            * `iec-60309-p-n-e-9h` - P+N+E 9H
+            * `iec-60309-2p-e-4h` - 2P+E 4H
+            * `iec-60309-2p-e-6h` - 2P+E 6H
+            * `iec-60309-2p-e-9h` - 2P+E 9H
+            * `iec-60309-3p-e-4h` - 3P+E 4H
+            * `iec-60309-3p-e-6h` - 3P+E 6H
+            * `iec-60309-3p-e-9h` - 3P+E 9H
+            * `iec-60309-3p-n-e-4h` - 3P+N+E 4H
+            * `iec-60309-3p-n-e-6h` - 3P+N+E 6H
+            * `iec-60309-3p-n-e-9h` - 3P+N+E 9H
+            * `nema-1-15p` - NEMA 1-15P
+            * `nema-5-15p` - NEMA 5-15P
+            * `nema-5-20p` - NEMA 5-20P
+            * `nema-5-30p` - NEMA 5-30P
+            * `nema-5-50p` - NEMA 5-50P
+            * `nema-6-15p` - NEMA 6-15P
+            * `nema-6-20p` - NEMA 6-20P
+            * `nema-6-30p` - NEMA 6-30P
+            * `nema-6-50p` - NEMA 6-50P
+            * `nema-10-30p` - NEMA 10-30P
+            * `nema-10-50p` - NEMA 10-50P
+            * `nema-14-20p` - NEMA 14-20P
+            * `nema-14-30p` - NEMA 14-30P
+            * `nema-14-50p` - NEMA 14-50P
+            * `nema-14-60p` - NEMA 14-60P
+            * `nema-15-15p` - NEMA 15-15P
+            * `nema-15-20p` - NEMA 15-20P
+            * `nema-15-30p` - NEMA 15-30P
+            * `nema-15-50p` - NEMA 15-50P
+            * `nema-15-60p` - NEMA 15-60P
+            * `nema-l1-15p` - NEMA L1-15P
+            * `nema-l5-15p` - NEMA L5-15P
+            * `nema-l5-20p` - NEMA L5-20P
+            * `nema-l5-30p` - NEMA L5-30P
+            * `nema-l5-50p` - NEMA L5-50P
+            * `nema-l6-15p` - NEMA L6-15P
+            * `nema-l6-20p` - NEMA L6-20P
+            * `nema-l6-30p` - NEMA L6-30P
+            * `nema-l6-50p` - NEMA L6-50P
+            * `nema-l10-30p` - NEMA L10-30P
+            * `nema-l14-20p` - NEMA L14-20P
+            * `nema-l14-30p` - NEMA L14-30P
+            * `nema-l14-50p` - NEMA L14-50P
+            * `nema-l14-60p` - NEMA L14-60P
+            * `nema-l15-20p` - NEMA L15-20P
+            * `nema-l15-30p` - NEMA L15-30P
+            * `nema-l15-50p` - NEMA L15-50P
+            * `nema-l15-60p` - NEMA L15-60P
+            * `nema-l21-20p` - NEMA L21-20P
+            * `nema-l21-30p` - NEMA L21-30P
+            * `nema-l22-30p` - NEMA L22-30P
+            * `cs6361c` - CS6361C
+            * `cs6365c` - CS6365C
+            * `cs8165c` - CS8165C
+            * `cs8265c` - CS8265C
+            * `cs8365c` - CS8365C
+            * `cs8465c` - CS8465C
+            * `ita-c` - ITA Type C (CEE 7/16)
+            * `ita-e` - ITA Type E (CEE 7/6)
+            * `ita-f` - ITA Type F (CEE 7/4)
+            * `ita-ef` - ITA Type E/F (CEE 7/7)
+            * `ita-g` - ITA Type G (BS 1363)
+            * `ita-h` - ITA Type H
+            * `ita-i` - ITA Type I
+            * `ita-j` - ITA Type J
+            * `ita-k` - ITA Type K
+            * `ita-l` - ITA Type L (CEI 23-50)
+            * `ita-m` - ITA Type M (BS 546)
+            * `ita-n` - ITA Type N
+            * `ita-o` - ITA Type O
+            * `usb-a` - USB Type A
+            * `usb-b` - USB Type B
+            * `usb-c` - USB Type C
+            * `usb-mini-a` - USB Mini A
+            * `usb-mini-b` - USB Mini B
+            * `usb-micro-a` - USB Micro A
+            * `usb-micro-b` - USB Micro B
+            * `usb-micro-ab` - USB Micro AB
+            * `usb-3-b` - USB 3.0 Type B
+            * `usb-3-micro-b` - USB 3.0 Micro B
+            * `dc-terminal` - DC Terminal
+            * `saf-d-grid` - Saf-D-Grid
+            * `neutrik-powercon-20` - Neutrik powerCON (20A)
+            * `neutrik-powercon-32` - Neutrik powerCON (32A)
+            * `neutrik-powercon-true1` - Neutrik powerCON TRUE1
+            * `neutrik-powercon-true1-top` - Neutrik powerCON TRUE1 TOP
+            * `ubiquiti-smartpower` - Ubiquiti SmartPower
+            * `hardwired` - Hardwired
+            * `other` - Other
+        maximum_draw:
+          type: integer
+          maximum: 32767
+          minimum: 1
+          nullable: true
+          description: Maximum power draw (watts)
+        allocated_draw:
+          type: integer
+          maximum: 32767
+          minimum: 1
+          nullable: true
+          description: Allocated power draw (watts)
+        description:
+          type: string
+          maxLength: 200
+      required:
+      - name
+    WritablePrefixRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        prefix:
+          type: string
+          minLength: 1
+        site:
+          type: integer
+          nullable: true
+        vrf:
+          type: integer
+          nullable: true
+        tenant:
+          type: integer
+          nullable: true
+        vlan:
+          type: integer
+          nullable: true
+        status:
+          enum:
+          - container
+          - active
+          - reserved
+          - deprecated
+          type: string
+          description: |-
+            Operational status of this prefix
+
+            * `container` - Container
+            * `active` - Active
+            * `reserved` - Reserved
+            * `deprecated` - Deprecated
+        role:
+          type: integer
+          nullable: true
+          description: The primary function of this prefix
+        is_pool:
+          type: boolean
+          title: Is a pool
+          description: All IP addresses within this prefix are considered usable
+        mark_utilized:
+          type: boolean
+          description: Treat as 100% utilized
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - prefix
+    WritableProviderAccountRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        provider:
+          type: integer
+        name:
+          type: string
+          maxLength: 100
+        account:
+          type: string
+          minLength: 1
+          title: Account ID
+          maxLength: 100
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - account
+      - provider
+    WritableProviderNetworkRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        provider:
+          type: integer
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        service_id:
+          type: string
+          maxLength: 100
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - provider
+    WritableProviderRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          description: Full name of the provider
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        accounts:
+          type: array
+          items:
+            type: integer
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        asns:
+          type: array
+          items:
+            type: integer
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - accounts
+      - name
+      - slug
+    WritableRackRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        facility_id:
+          type: string
+          nullable: true
+          maxLength: 50
+        site:
+          type: integer
+        location:
+          type: integer
+          nullable: true
+        tenant:
+          type: integer
+          nullable: true
+        status:
+          enum:
+          - reserved
+          - available
+          - planned
+          - active
+          - deprecated
+          type: string
+          description: |-
+            * `reserved` - Reserved
+            * `available` - Available
+            * `planned` - Planned
+            * `active` - Active
+            * `deprecated` - Deprecated
+        role:
+          type: integer
+          nullable: true
+          description: Functional role
+        serial:
+          type: string
+          title: Serial number
+          maxLength: 50
+        asset_tag:
+          type: string
+          nullable: true
+          description: A unique tag used to identify this rack
+          maxLength: 50
+        type:
+          enum:
+          - 2-post-frame
+          - 4-post-frame
+          - 4-post-cabinet
+          - wall-frame
+          - wall-frame-vertical
+          - wall-cabinet
+          - wall-cabinet-vertical
+          - ''
+          type: string
+          description: |-
+            * `2-post-frame` - 2-post frame
+            * `4-post-frame` - 4-post frame
+            * `4-post-cabinet` - 4-post cabinet
+            * `wall-frame` - Wall-mounted frame
+            * `wall-frame-vertical` - Wall-mounted frame (vertical)
+            * `wall-cabinet` - Wall-mounted cabinet
+            * `wall-cabinet-vertical` - Wall-mounted cabinet (vertical)
+        width:
+          enum:
+          - 10
+          - 19
+          - 21
+          - 23
+          type: integer
+          description: |-
+            Rail-to-rail width
+
+            * `10` - 10 inches
+            * `19` - 19 inches
+            * `21` - 21 inches
+            * `23` - 23 inches
+          minimum: 0
+          maximum: 32767
+        u_height:
+          type: integer
+          maximum: 100
+          minimum: 1
+          title: Height (U)
+          description: Height in rack units
+        weight:
+          type: number
+          format: double
+          maximum: 1000000
+          minimum: -1000000
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+        max_weight:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          description: Maximum load capacity for the rack
+        weight_unit:
+          enum:
+          - kg
+          - g
+          - lb
+          - oz
+          - ''
+          type: string
+          description: |-
+            * `kg` - Kilograms
+            * `g` - Grams
+            * `lb` - Pounds
+            * `oz` - Ounces
+        desc_units:
+          type: boolean
+          title: Descending units
+          description: Units are numbered top-to-bottom
+        outer_width:
+          type: integer
+          maximum: 32767
+          minimum: 0
+          nullable: true
+          description: Outer dimension of rack (width)
+        outer_depth:
+          type: integer
+          maximum: 32767
+          minimum: 0
+          nullable: true
+          description: Outer dimension of rack (depth)
+        outer_unit:
+          enum:
+          - mm
+          - in
+          - ''
+          type: string
+          description: |-
+            * `mm` - Millimeters
+            * `in` - Inches
+        mounting_depth:
+          type: integer
+          maximum: 32767
+          minimum: 0
+          nullable: true
+          description: Maximum depth of a mounted device, in millimeters. For four-post
+            racks, this is the distance between the front and rear rails.
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - site
+    WritableRackReservationRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        rack:
+          type: integer
+        units:
+          type: array
+          items:
+            type: integer
+            maximum: 32767
+            minimum: 0
+        user:
+          type: integer
+        tenant:
+          type: integer
+          nullable: true
+        description:
+          type: string
+          minLength: 1
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - description
+      - rack
+      - units
+      - user
+    WritableRearPortRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          type: integer
+        module:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - 8p8c
+          - 8p6c
+          - 8p4c
+          - 8p2c
+          - 6p6c
+          - 6p4c
+          - 6p2c
+          - 4p4c
+          - 4p2c
+          - gg45
+          - tera-4p
+          - tera-2p
+          - tera-1p
+          - 110-punch
+          - bnc
+          - f
+          - n
+          - mrj21
+          - fc
+          - lc
+          - lc-pc
+          - lc-upc
+          - lc-apc
+          - lsh
+          - lsh-pc
+          - lsh-upc
+          - lsh-apc
+          - mpo
+          - mtrj
+          - sc
+          - sc-pc
+          - sc-upc
+          - sc-apc
+          - st
+          - cs
+          - sn
+          - sma-905
+          - sma-906
+          - urm-p2
+          - urm-p4
+          - urm-p8
+          - splice
+          - other
+          type: string
+          description: |-
+            * `8p8c` - 8P8C
+            * `8p6c` - 8P6C
+            * `8p4c` - 8P4C
+            * `8p2c` - 8P2C
+            * `6p6c` - 6P6C
+            * `6p4c` - 6P4C
+            * `6p2c` - 6P2C
+            * `4p4c` - 4P4C
+            * `4p2c` - 4P2C
+            * `gg45` - GG45
+            * `tera-4p` - TERA 4P
+            * `tera-2p` - TERA 2P
+            * `tera-1p` - TERA 1P
+            * `110-punch` - 110 Punch
+            * `bnc` - BNC
+            * `f` - F Connector
+            * `n` - N Connector
+            * `mrj21` - MRJ21
+            * `fc` - FC
+            * `lc` - LC
+            * `lc-pc` - LC/PC
+            * `lc-upc` - LC/UPC
+            * `lc-apc` - LC/APC
+            * `lsh` - LSH
+            * `lsh-pc` - LSH/PC
+            * `lsh-upc` - LSH/UPC
+            * `lsh-apc` - LSH/APC
+            * `mpo` - MPO
+            * `mtrj` - MTRJ
+            * `sc` - SC
+            * `sc-pc` - SC/PC
+            * `sc-upc` - SC/UPC
+            * `sc-apc` - SC/APC
+            * `st` - ST
+            * `cs` - CS
+            * `sn` - SN
+            * `sma-905` - SMA 905
+            * `sma-906` - SMA 906
+            * `urm-p2` - URM-P2
+            * `urm-p4` - URM-P4
+            * `urm-p8` - URM-P8
+            * `splice` - Splice
+            * `other` - Other
+        color:
+          type: string
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        positions:
+          type: integer
+          maximum: 1024
+          minimum: 1
+          description: Number of front ports which may be mapped
+        description:
+          type: string
+          maxLength: 200
+        mark_connected:
+          type: boolean
+          description: Treat as if a cable is connected
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - device
+      - name
+      - type
+    WritableRearPortTemplateRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        device_type:
+          type: integer
+          nullable: true
+        module_type:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          description: "\n        {module} is accepted as a substitution for the module\
+            \ bay position when attached to a module type.\n        "
+          maxLength: 64
+        label:
+          type: string
+          description: Physical label
+          maxLength: 64
+        type:
+          enum:
+          - 8p8c
+          - 8p6c
+          - 8p4c
+          - 8p2c
+          - 6p6c
+          - 6p4c
+          - 6p2c
+          - 4p4c
+          - 4p2c
+          - gg45
+          - tera-4p
+          - tera-2p
+          - tera-1p
+          - 110-punch
+          - bnc
+          - f
+          - n
+          - mrj21
+          - fc
+          - lc
+          - lc-pc
+          - lc-upc
+          - lc-apc
+          - lsh
+          - lsh-pc
+          - lsh-upc
+          - lsh-apc
+          - mpo
+          - mtrj
+          - sc
+          - sc-pc
+          - sc-upc
+          - sc-apc
+          - st
+          - cs
+          - sn
+          - sma-905
+          - sma-906
+          - urm-p2
+          - urm-p4
+          - urm-p8
+          - splice
+          - other
+          type: string
+          description: |-
+            * `8p8c` - 8P8C
+            * `8p6c` - 8P6C
+            * `8p4c` - 8P4C
+            * `8p2c` - 8P2C
+            * `6p6c` - 6P6C
+            * `6p4c` - 6P4C
+            * `6p2c` - 6P2C
+            * `4p4c` - 4P4C
+            * `4p2c` - 4P2C
+            * `gg45` - GG45
+            * `tera-4p` - TERA 4P
+            * `tera-2p` - TERA 2P
+            * `tera-1p` - TERA 1P
+            * `110-punch` - 110 Punch
+            * `bnc` - BNC
+            * `f` - F Connector
+            * `n` - N Connector
+            * `mrj21` - MRJ21
+            * `fc` - FC
+            * `lc` - LC
+            * `lc-pc` - LC/PC
+            * `lc-upc` - LC/UPC
+            * `lc-apc` - LC/APC
+            * `lsh` - LSH
+            * `lsh-pc` - LSH/PC
+            * `lsh-upc` - LSH/UPC
+            * `lsh-apc` - LSH/APC
+            * `mpo` - MPO
+            * `mtrj` - MTRJ
+            * `sc` - SC
+            * `sc-pc` - SC/PC
+            * `sc-upc` - SC/UPC
+            * `sc-apc` - SC/APC
+            * `st` - ST
+            * `cs` - CS
+            * `sn` - SN
+            * `sma-905` - SMA 905
+            * `sma-906` - SMA 906
+            * `urm-p2` - URM-P2
+            * `urm-p4` - URM-P4
+            * `urm-p8` - URM-P8
+            * `splice` - Splice
+            * `other` - Other
+        color:
+          type: string
+          pattern: ^[0-9a-f]{6}$
+          maxLength: 6
+        positions:
+          type: integer
+          maximum: 1024
+          minimum: 1
+        description:
+          type: string
+          maxLength: 200
+      required:
+      - name
+      - type
+    WritableRegionRequest:
+      type: object
+      description: Extends PrimaryModelSerializer to include MPTT support.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        parent:
+          type: integer
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    WritableRouteTargetRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          description: Route target value (formatted in accordance with RFC 4360)
+          maxLength: 21
+        tenant:
+          type: integer
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+    WritableServiceRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        device:
+          type: integer
+          nullable: true
+        virtual_machine:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        ports:
+          type: array
+          items:
+            type: integer
+            maximum: 65535
+            minimum: 1
+          title: Port numbers
+        protocol:
+          enum:
+          - tcp
+          - udp
+          - sctp
+          type: string
+          description: |-
+            * `tcp` - TCP
+            * `udp` - UDP
+            * `sctp` - SCTP
+        ipaddresses:
+          type: array
+          items:
+            type: integer
+            title: IP addresses
+          title: IP addresses
+          description: The specific IP addresses (if any) to which this service is
+            bound
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - ports
+      - protocol
+    WritableServiceTemplateRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        ports:
+          type: array
+          items:
+            type: integer
+            maximum: 65535
+            minimum: 1
+          title: Port numbers
+        protocol:
+          enum:
+          - tcp
+          - udp
+          - sctp
+          type: string
+          description: |-
+            * `tcp` - TCP
+            * `udp` - UDP
+            * `sctp` - SCTP
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - ports
+      - protocol
+    WritableSiteGroupRequest:
+      type: object
+      description: Extends PrimaryModelSerializer to include MPTT support.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        parent:
+          type: integer
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    WritableSiteRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          description: Full name of the site
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        status:
+          enum:
+          - planned
+          - staging
+          - active
+          - decommissioning
+          - retired
+          type: string
+          description: |-
+            * `planned` - Planned
+            * `staging` - Staging
+            * `active` - Active
+            * `decommissioning` - Decommissioning
+            * `retired` - Retired
+        region:
+          type: integer
+          nullable: true
+        group:
+          type: integer
+          nullable: true
+        tenant:
+          type: integer
+          nullable: true
+        facility:
+          type: string
+          description: Local facility ID or description
+          maxLength: 50
+        time_zone:
+          type: string
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        physical_address:
+          type: string
+          description: Physical location of the building
+          maxLength: 200
+        shipping_address:
+          type: string
+          description: If different from the physical address
+          maxLength: 200
+        latitude:
+          type: number
+          format: double
+          maximum: 100
+          minimum: -100
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+          description: GPS coordinate in decimal format (xx.yyyyyy)
+        longitude:
+          type: number
+          format: double
+          maximum: 1000
+          minimum: -1000
+          exclusiveMaximum: true
+          exclusiveMinimum: true
+          nullable: true
+          description: GPS coordinate in decimal format (xx.yyyyyy)
+        comments:
+          type: string
+        asns:
+          type: array
+          items:
+            type: integer
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    WritableTenantGroupRequest:
+      type: object
+      description: Extends PrimaryModelSerializer to include MPTT support.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        parent:
+          type: integer
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    WritableTenantRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        group:
+          type: integer
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    WritableTokenRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        user:
+          type: integer
+        expires:
+          type: string
+          format: date-time
+          nullable: true
+        last_used:
+          type: string
+          format: date-time
+          nullable: true
+        key:
+          type: string
+          maxLength: 40
+          minLength: 40
+        write_enabled:
+          type: boolean
+          description: Permit create/update/delete operations using this key
+        description:
+          type: string
+          maxLength: 200
+      required:
+      - user
+    WritableUserRequest:
+      type: object
+      description: |-
+        Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
+        validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)
+      properties:
+        username:
+          type: string
+          minLength: 1
+          description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_
+            only.
+          pattern: ^[\w.@+-]+$
+          maxLength: 150
+        password:
+          type: string
+          writeOnly: true
+          minLength: 1
+          maxLength: 128
+        first_name:
+          type: string
+          maxLength: 150
+        last_name:
+          type: string
+          maxLength: 150
+        email:
+          type: string
+          format: email
+          title: Email address
+          maxLength: 254
+        is_staff:
+          type: boolean
+          title: Staff status
+          description: Designates whether the user can log into this admin site.
+        is_active:
+          type: boolean
+          title: Active
+          description: Designates whether this user should be treated as active. Unselect
+            this instead of deleting accounts.
+        date_joined:
+          type: string
+          format: date-time
+        groups:
+          type: array
+          items:
+            type: integer
+          description: The groups this user belongs to. A user will get all permissions
+            granted to each of their groups.
+      required:
+      - password
+      - username
+    WritableVLANRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        site:
+          type: integer
+          nullable: true
+          description: The specific site to which this VLAN is assigned (if any)
+        group:
+          type: integer
+          nullable: true
+          description: VLAN group (optional)
+        vid:
+          type: integer
+          maximum: 4094
+          minimum: 1
+          title: ID
+          description: Numeric VLAN ID (1-4094)
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        tenant:
+          type: integer
+          nullable: true
+        status:
+          enum:
+          - active
+          - reserved
+          - deprecated
+          type: string
+          description: |-
+            Operational status of this VLAN
+
+            * `active` - Active
+            * `reserved` - Reserved
+            * `deprecated` - Deprecated
+        role:
+          type: integer
+          nullable: true
+          description: The primary function of this VLAN
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - vid
+    WritableVMInterfaceRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        virtual_machine:
+          type: integer
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        enabled:
+          type: boolean
+        parent:
+          type: integer
+          nullable: true
+          title: Parent interface
+        bridge:
+          type: integer
+          nullable: true
+          title: Bridge interface
+        mtu:
+          type: integer
+          maximum: 65536
+          minimum: 1
+          nullable: true
+        mac_address:
+          type: string
+          nullable: true
+          minLength: 1
+        description:
+          type: string
+          maxLength: 200
+        mode:
+          enum:
+          - access
+          - tagged
+          - tagged-all
+          - ''
+          type: string
+          description: |-
+            IEEE 802.1Q tagging strategy
+
+            * `access` - Access
+            * `tagged` - Tagged
+            * `tagged-all` - Tagged (All)
+        untagged_vlan:
+          type: integer
+          nullable: true
+        tagged_vlans:
+          type: array
+          items:
+            type: integer
+            title: Tagged VLANs
+        vrf:
+          type: integer
+          nullable: true
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - virtual_machine
+    WritableVRFRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        rd:
+          type: string
+          nullable: true
+          title: Route distinguisher
+          description: Unique route distinguisher (as defined in RFC 4364)
+          maxLength: 21
+        tenant:
+          type: integer
+          nullable: true
+        enforce_unique:
+          type: boolean
+          title: Enforce unique space
+          description: Prevent duplicate prefixes/IP addresses within this VRF
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        import_targets:
+          type: array
+          items:
+            type: integer
+        export_targets:
+          type: array
+          items:
+            type: integer
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+    WritableVirtualChassisRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        domain:
+          type: string
+          maxLength: 30
+        master:
+          type: integer
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+    WritableVirtualDeviceContextRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        device:
+          type: integer
+          nullable: true
+        identifier:
+          type: integer
+          maximum: 32767
+          minimum: 0
+          nullable: true
+          description: Numeric identifier unique to the parent device
+        tenant:
+          type: integer
+          nullable: true
+        primary_ip4:
+          type: integer
+          nullable: true
+          title: Primary IPv4
+        primary_ip6:
+          type: integer
+          nullable: true
+          title: Primary IPv6
+        status:
+          enum:
+          - active
+          - planned
+          - offline
+          type: string
+          description: |-
+            * `active` - Active
+            * `planned` - Planned
+            * `offline` - Offline
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - status
+    WritableVirtualMachineWithConfigContextRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 64
+        status:
+          enum:
+          - offline
+          - active
+          - planned
+          - staged
+          - failed
+          - decommissioning
+          type: string
+          description: |-
+            * `offline` - Offline
+            * `active` - Active
+            * `planned` - Planned
+            * `staged` - Staged
+            * `failed` - Failed
+            * `decommissioning` - Decommissioning
+        site:
+          type: integer
+          nullable: true
+        cluster:
+          type: integer
+          nullable: true
+        device:
+          type: integer
+          nullable: true
+        role:
+          type: integer
+          nullable: true
+        tenant:
+          type: integer
+          nullable: true
+        platform:
+          type: integer
+          nullable: true
+        primary_ip4:
+          type: integer
+          nullable: true
+          title: Primary IPv4
+        primary_ip6:
+          type: integer
+          nullable: true
+          title: Primary IPv6
+        vcpus:
+          type: number
+          format: double
+          maximum: 10000
+          minimum: 0.01
+          exclusiveMaximum: true
+          nullable: true
+        memory:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          title: Memory (MB)
+        disk:
+          type: integer
+          maximum: 2147483647
+          minimum: 0
+          nullable: true
+          title: Disk (GB)
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        local_context_data:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          description: Local config context data takes precedence over source contexts
+            in the final rendered config context
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+    WritableWirelessLANGroupRequest:
+      type: object
+      description: Extends PrimaryModelSerializer to include MPTT support.
+      properties:
+        name:
+          type: string
+          minLength: 1
+          maxLength: 100
+        slug:
+          type: string
+          minLength: 1
+          maxLength: 100
+          pattern: ^[-a-zA-Z0-9_]+$
+        parent:
+          type: integer
+          nullable: true
+        description:
+          type: string
+          maxLength: 200
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - name
+      - slug
+    WritableWirelessLANRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        ssid:
+          type: string
+          minLength: 1
+          maxLength: 32
+        description:
+          type: string
+          maxLength: 200
+        group:
+          type: integer
+          nullable: true
+        status:
+          enum:
+          - active
+          - reserved
+          - disabled
+          - deprecated
+          type: string
+          description: |-
+            * `active` - Active
+            * `reserved` - Reserved
+            * `disabled` - Disabled
+            * `deprecated` - Deprecated
+        vlan:
+          type: integer
+          nullable: true
+        tenant:
+          type: integer
+          nullable: true
+        auth_type:
+          enum:
+          - open
+          - wep
+          - wpa-personal
+          - wpa-enterprise
+          - ''
+          type: string
+          description: |-
+            * `open` - Open
+            * `wep` - WEP
+            * `wpa-personal` - WPA Personal (PSK)
+            * `wpa-enterprise` - WPA Enterprise
+        auth_cipher:
+          enum:
+          - auto
+          - tkip
+          - aes
+          - ''
+          type: string
+          description: |-
+            * `auto` - Auto
+            * `tkip` - TKIP
+            * `aes` - AES
+        auth_psk:
+          type: string
+          title: Pre-shared key
+          maxLength: 64
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - ssid
+    WritableWirelessLinkRequest:
+      type: object
+      description: Adds support for custom fields and tags.
+      properties:
+        interface_a:
+          type: integer
+        interface_b:
+          type: integer
+        ssid:
+          type: string
+          maxLength: 32
+        status:
+          enum:
+          - connected
+          - planned
+          - decommissioning
+          type: string
+          description: |-
+            * `connected` - Connected
+            * `planned` - Planned
+            * `decommissioning` - Decommissioning
+        tenant:
+          type: integer
+          nullable: true
+        auth_type:
+          enum:
+          - open
+          - wep
+          - wpa-personal
+          - wpa-enterprise
+          - ''
+          type: string
+          description: |-
+            * `open` - Open
+            * `wep` - WEP
+            * `wpa-personal` - WPA Personal (PSK)
+            * `wpa-enterprise` - WPA Enterprise
+        auth_cipher:
+          enum:
+          - auto
+          - tkip
+          - aes
+          - ''
+          type: string
+          description: |-
+            * `auto` - Auto
+            * `tkip` - TKIP
+            * `aes` - AES
+        auth_psk:
+          type: string
+          title: Pre-shared key
+          maxLength: 64
+        description:
+          type: string
+          maxLength: 200
+        comments:
+          type: string
+        tags:
+          type: array
+          items:
+            $ref: '#/components/schemas/NestedTagRequest'
+        custom_fields:
+          type: object
+          additionalProperties: {}
+      required:
+      - interface_a
+      - interface_b
+  securitySchemes:
+    cookieAuth:
+      type: apiKey
+      in: cookie
+      name: sessionid
+    tokenAuth:
+      type: apiKey
+      in: header
+      name: Authorization
+      description: Token-based authentication with required prefix "Token"
+servers:
+- url: ''
+  description: NetBox
diff --git a/setup.py b/setup.py
index 0d11376..996ee72 100644
--- a/setup.py
+++ b/setup.py
@@ -3,7 +3,7 @@ from setuptools import find_packages, setup
 setup(
     name='netbox-rps-plugin',
     version='0.1.0',
-    description='An example NetBox plugin',
+    description='A Netbox plugin to add RPS resources',
     install_requires=[],
     packages=find_packages('./src'),
     include_package_data=True,
diff --git a/src/netbox_rps_plugin/navigation.py b/src/netbox_rps_plugin/navigation.py
index d0894f8..ed91ca5 100644
--- a/src/netbox_rps_plugin/navigation.py
+++ b/src/netbox_rps_plugin/navigation.py
@@ -19,7 +19,8 @@ mapping_butons = [
 mappingItem = PluginMenuItem(
         link='plugins:netbox_rps_plugin:mapping_list',
         link_text='Mappings',
-        buttons=mapping_butons
+        buttons=mapping_butons,
+        permissions=['netbox_rps_plugin.view_mapping'],
     ),
 
 menu = (
diff --git a/src/netbox_rps_plugin/tables.py b/src/netbox_rps_plugin/tables.py
index 98cf82d..7c3cb0d 100644
--- a/src/netbox_rps_plugin/tables.py
+++ b/src/netbox_rps_plugin/tables.py
@@ -6,7 +6,8 @@ from .models import Mapping
 
 class MappingTable(NetBoxTable):
     authentication = ChoiceFieldColumn()
-
+    source = tables.Column(linkify=True)
+    
     class Meta(NetBoxTable.Meta):
         model = Mapping
         fields = (
diff --git a/src/netbox_rps_plugin/templates/netbox_rps_plugin/mapping.html b/src/netbox_rps_plugin/templates/netbox_rps_plugin/mapping.html
index e90dd64..190a175 100644
--- a/src/netbox_rps_plugin/templates/netbox_rps_plugin/mapping.html
+++ b/src/netbox_rps_plugin/templates/netbox_rps_plugin/mapping.html
@@ -13,7 +13,13 @@
             </tr>
             <tr>
               <th scope="row">Comment</th>
-              <td>{{ object.Comment|placeholder }}</td>
+              <td>
+                {% if object.Comment %}
+                {{ object.Comment }}
+              {% else %}
+                {{ ''|placeholder }}
+              {% endif %}
+            </td>
             </tr>
           </table>
         </div>
@@ -27,41 +33,35 @@
         <div class="card-body">
           <table class="table table-hover attr-table">
             <tr>
-              <th scope="row">Protocol</th>
-              <td>{{ object.get_protocol_display }}</td>
+              <th scope="row">Source</th>
+              <td>{{ object.source }}</td>
             </tr>
             <tr>
-              <th scope="row">Source Prefix</th>
-              <td>
-                {% if object.source_prefix %}
-                  <a href="{{ object.source_prefix.get_absolute_url }}">{{ object.source_prefix }}</a>
-                {% else %}
-                  {{ ''|placeholder }}
-                {% endif %}
-              </td>
+              <th scope="row">Target</th>
+              <td>{{ object.target }}</td>
+            </tr>
+            <tr>
+              <th scope="row">Authentication</th>
+              <td>{{ object.authentication }}</td>
+            </tr>
+            <tr>
+              <th scope="row">Testing page</th>
+              <td>{{ object.testingpage }}</td>
             </tr>
             <tr>
-              <th scope="row">Source Ports</th>
-              <td>{{ object.source_ports|join:", "|placeholder }}</td>
+              <th scope="row">Webdav</th>
+              <td>{{ object.webdav }}</td>
             </tr>
             <tr>
-              <th scope="row">Destination Prefix</th>
+              <th scope="row">Comment</th>
               <td>
-                {% if object.destination_prefix %}
-                  <a href="{{ object.destination_prefix.get_absolute_url }}">{{ object.destination_prefix }}</a>
+                {% if object.Comment %}
+                  {{ object.Comment }}
                 {% else %}
                   {{ ''|placeholder }}
                 {% endif %}
               </td>
             </tr>
-            <tr>
-              <th scope="row">Destination Ports</th>
-              <td>{{ object.destination_ports|join:", "|placeholder }}</td>
-            </tr>
-            <tr>
-              <th scope="row">Action</th>
-              <td>{{ object.get_action_display }}</td>
-            </tr>
           </table>
         </div>
       </div>
-- 
GitLab