diff --git a/export/267/api.yaml b/export/267/api.yaml
new file mode 100644
index 0000000..2cfd29c
--- /dev/null
+++ b/export/267/api.yaml
@@ -0,0 +1,33392 @@
+openapi: 3.0.3
+info:
+  title: InvenTree API
+  version: '267'
+  description: API for InvenTree - the intuitive open source inventory management
+    system
+  license:
+    name: MIT
+    url: https://github.com/inventree/InvenTree/blob/master/LICENSE
+paths:
+  /api/action/:
+    post:
+      operationId: action_create
+      description: This function checks if all required info was submitted and then
+        performs a plugin_action or returns an error.
+      tags:
+      - action
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ActionPlugin'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/ActionPlugin'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ActionPlugin'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ActionPlugin'
+          description: ''
+  /api/admin/config/:
+    get:
+      operationId: admin_config_list
+      description: List view for all accessed configurations.
+      parameters:
+      - 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
+      tags:
+      - admin
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          description: No response body
+  /api/admin/config/{key}/:
+    get:
+      operationId: admin_config_retrieve
+      description: Detail view for an individual configuration.
+      parameters:
+      - in: path
+        name: key
+        schema:
+          type: string
+        required: true
+      tags:
+      - admin
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          description: No response body
+  /api/attachment/:
+    get:
+      operationId: attachment_list
+      description: List API endpoint for Attachment objects.
+      parameters:
+      - in: query
+        name: is_file
+        schema:
+          type: boolean
+        description: Is File
+      - in: query
+        name: is_link
+        schema:
+          type: boolean
+        description: Is Link
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: model_id
+        schema:
+          type: integer
+      - in: query
+        name: model_type
+        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
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      - in: query
+        name: upload_user
+        schema:
+          type: integer
+      tags:
+      - attachment
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedAttachmentList'
+          description: ''
+    post:
+      operationId: attachment_create
+      description: List API endpoint for Attachment objects.
+      tags:
+      - attachment
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Attachment'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Attachment'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Attachment'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Attachment'
+          description: ''
+    delete:
+      operationId: attachment_destroy
+      description: |-
+        Perform a DELETE operation against this list endpoint.
+
+        We expect a list of primary-key (ID) values to be supplied as a JSON object, e.g.
+        {
+            items: [4, 8, 15, 16, 23, 42]
+        }
+      tags:
+      - attachment
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/attachment/{id}/:
+    get:
+      operationId: attachment_retrieve
+      description: Detail API endpoint for Attachment objects.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - attachment
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Attachment'
+          description: ''
+    put:
+      operationId: attachment_update
+      description: Detail API endpoint for Attachment objects.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - attachment
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Attachment'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Attachment'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Attachment'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Attachment'
+          description: ''
+    patch:
+      operationId: attachment_partial_update
+      description: Detail API endpoint for Attachment objects.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - attachment
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedAttachment'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedAttachment'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedAttachment'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Attachment'
+          description: ''
+    delete:
+      operationId: attachment_destroy_2
+      description: Detail API endpoint for Attachment objects.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - attachment
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/attachment/{id}/metadata/:
+    get:
+      operationId: attachment_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - attachment
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: attachment_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - attachment
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: attachment_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - attachment
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/auth/emails/:
+    get:
+      operationId: auth_emails_list
+      description: List of registered email addresses for current users.
+      parameters:
+      - 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
+      tags:
+      - auth
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedEmailAddressList'
+          description: ''
+    post:
+      operationId: auth_emails_create
+      description: List of registered email addresses for current users.
+      tags:
+      - auth
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/EmailAddress'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/EmailAddress'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/EmailAddress'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/EmailAddress'
+          description: ''
+  /api/auth/emails/{id}/primary/:
+    post:
+      operationId: auth_emails_primary_create
+      description: Filter item, run action and return data.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - auth
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/EmailAddress'
+          description: ''
+  /api/auth/emails/{id}/remove/:
+    post:
+      operationId: auth_emails_remove_create
+      description: Filter item, run action and return data.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - auth
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/EmailAddress'
+          description: ''
+  /api/auth/emails/{id}/verify/:
+    post:
+      operationId: auth_emails_verify_create
+      description: Filter item, run action and return data.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - auth
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/EmailAddress'
+          description: ''
+  /api/auth/login/:
+    post:
+      operationId: auth_login_create
+      description: API view for logging in via API.
+      tags:
+      - auth
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Login'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Login'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Login'
+        required: true
+      security:
+      - basicAuth: []
+      - {}
+      responses:
+        '200':
+          description: User successfully logged in
+  /api/auth/logout/:
+    get:
+      operationId: auth_logout_retrieve
+      description: API view for logging out via API.
+      tags:
+      - auth
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      - {}
+      responses:
+        '200':
+          description: No response body
+    post:
+      operationId: auth_logout_create
+      description: |-
+        Logout the current user.
+
+        Deletes user token associated with request.
+      tags:
+      - auth
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      - {}
+      responses:
+        '200':
+          description: User successfully logged out
+  /api/auth/password/change/:
+    post:
+      operationId: auth_password_change_create
+      description: |-
+        Calls Django Auth SetPasswordForm save method.
+
+        Accepts the following POST parameters: new_password1, new_password2
+        Returns the success/fail message.
+      tags:
+      - auth
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PasswordChange'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PasswordChange'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PasswordChange'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RestAuthDetail'
+          description: ''
+  /api/auth/password/reset/:
+    post:
+      operationId: auth_password_reset_create
+      description: |-
+        Calls Django Auth PasswordResetForm save method.
+
+        Accepts the following POST parameters: email
+        Returns the success/fail message.
+      tags:
+      - auth
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PasswordReset'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PasswordReset'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PasswordReset'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      - {}
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RestAuthDetail'
+          description: ''
+  /api/auth/password/reset/confirm/:
+    post:
+      operationId: auth_password_reset_confirm_create
+      description: |-
+        Password reset e-mail link is confirmed, therefore
+        this resets the user's password.
+
+        Accepts the following POST parameters: token, uid,
+            new_password1, new_password2
+        Returns the success/fail message.
+      tags:
+      - auth
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PasswordResetConfirm'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PasswordResetConfirm'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PasswordResetConfirm'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      - {}
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RestAuthDetail'
+          description: ''
+  /api/auth/providers/:
+    get:
+      operationId: auth_providers_list
+      description: Get the list of providers.
+      parameters:
+      - 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
+      tags:
+      - auth
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      - {}
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedSocialProviderListResponseList'
+          description: ''
+  /api/auth/registration/:
+    post:
+      operationId: auth_registration_create
+      tags:
+      - auth
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Register'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Register'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Register'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      - {}
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Token'
+          description: ''
+  /api/auth/registration/resend-email/:
+    post:
+      operationId: auth_registration_resend_email_create
+      tags:
+      - auth
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ResendEmailVerification'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/ResendEmailVerification'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ResendEmailVerification'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      - {}
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RestAuthDetail'
+          description: ''
+  /api/auth/registration/verify-email/:
+    post:
+      operationId: auth_registration_verify_email_create
+      tags:
+      - auth
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/VerifyEmail'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/VerifyEmail'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/VerifyEmail'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      - {}
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RestAuthDetail'
+          description: ''
+  /api/auth/social/:
+    get:
+      operationId: auth_social_list
+      description: List SocialAccounts for the currently logged in user
+      parameters:
+      - 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
+      tags:
+      - auth
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedSocialAccountList'
+          description: ''
+  /api/auth/social/{id}/disconnect/:
+    post:
+      operationId: auth_social_disconnect_create
+      description: |-
+        Disconnect SocialAccount from remote service for
+        the currently logged in user
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - auth
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/SocialConnect'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/SocialConnect'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/SocialConnect'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SocialConnect'
+          description: ''
+  /api/auth/user/:
+    get:
+      operationId: auth_user_retrieve
+      description: |-
+        Reads and updates UserModel fields
+        Accepts GET, PUT, PATCH methods.
+
+        Default accepted fields: username, first_name, last_name
+        Default display fields: pk, username, email, first_name, last_name
+        Read-only fields: pk, email
+
+        Returns UserModel fields.
+      tags:
+      - auth
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserDetails'
+          description: ''
+    put:
+      operationId: auth_user_update
+      description: |-
+        Reads and updates UserModel fields
+        Accepts GET, PUT, PATCH methods.
+
+        Default accepted fields: username, first_name, last_name
+        Default display fields: pk, username, email, first_name, last_name
+        Read-only fields: pk, email
+
+        Returns UserModel fields.
+      tags:
+      - auth
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/UserDetails'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/UserDetails'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/UserDetails'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserDetails'
+          description: ''
+    patch:
+      operationId: auth_user_partial_update
+      description: |-
+        Reads and updates UserModel fields
+        Accepts GET, PUT, PATCH methods.
+
+        Default accepted fields: username, first_name, last_name
+        Default display fields: pk, username, email, first_name, last_name
+        Read-only fields: pk, email
+
+        Returns UserModel fields.
+      tags:
+      - auth
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedUserDetails'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedUserDetails'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedUserDetails'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserDetails'
+          description: ''
+  /api/background-task/:
+    get:
+      operationId: background_task_retrieve
+      description: Return information about the current status of the background task
+        queue.
+      tags:
+      - background-task
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          description: No response body
+  /api/background-task/failed/:
+    get:
+      operationId: background_task_failed_list
+      description: Provides a read-only list of currently failed tasks.
+      parameters:
+      - 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
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - background-task
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedFailedTaskList'
+          description: ''
+    delete:
+      operationId: background_task_failed_destroy
+      description: |-
+        Perform a DELETE operation against this list endpoint.
+
+        We expect a list of primary-key (ID) values to be supplied as a JSON object, e.g.
+        {
+            items: [4, 8, 15, 16, 23, 42]
+        }
+      tags:
+      - background-task
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/background-task/pending/:
+    get:
+      operationId: background_task_pending_list
+      description: Provides a read-only list of currently pending tasks.
+      parameters:
+      - 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
+      tags:
+      - background-task
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedPendingTaskList'
+          description: ''
+    delete:
+      operationId: background_task_pending_destroy
+      description: |-
+        Perform a DELETE operation against this list endpoint.
+
+        We expect a list of primary-key (ID) values to be supplied as a JSON object, e.g.
+        {
+            items: [4, 8, 15, 16, 23, 42]
+        }
+      tags:
+      - background-task
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/background-task/scheduled/:
+    get:
+      operationId: background_task_scheduled_list
+      description: Provides a read-only list of currently scheduled tasks.
+      parameters:
+      - 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
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - background-task
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedScheduledTaskList'
+          description: ''
+  /api/barcode/:
+    post:
+      operationId: barcode_create
+      description: |-
+        Endpoint for handling generic barcode scan requests.
+
+        Barcode data are decoded by the client application,
+        and sent to this endpoint (as a JSON object) for validation.
+
+        A barcode could follow the internal InvenTree barcode format,
+        or it could match to a third-party barcode format (e.g. Digikey).
+      tags:
+      - barcode
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Barcode'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Barcode'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Barcode'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Barcode'
+          description: ''
+  /api/barcode/generate/:
+    post:
+      operationId: barcode_generate_create
+      description: |-
+        Endpoint for generating a barcode for a database object.
+
+        The barcode is generated by the selected barcode plugin.
+      tags:
+      - barcode
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/BarcodeGenerate'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/BarcodeGenerate'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/BarcodeGenerate'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Barcode'
+          description: ''
+  /api/barcode/history/:
+    get:
+      operationId: barcode_history_list
+      description: List API endpoint for BarcodeScan objects.
+      parameters:
+      - 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: result
+        schema:
+          type: boolean
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      - in: query
+        name: user
+        schema:
+          type: integer
+      tags:
+      - barcode
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedBarcodeScanResultList'
+          description: ''
+    delete:
+      operationId: barcode_history_destroy
+      description: |-
+        Perform a DELETE operation against this list endpoint.
+
+        We expect a list of primary-key (ID) values to be supplied as a JSON object, e.g.
+        {
+            items: [4, 8, 15, 16, 23, 42]
+        }
+      tags:
+      - barcode
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/barcode/history/{id}/:
+    get:
+      operationId: barcode_history_retrieve
+      description: Detail endpoint for a BarcodeScan object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - barcode
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BarcodeScanResult'
+          description: ''
+    delete:
+      operationId: barcode_history_destroy_2
+      description: Detail endpoint for a BarcodeScan object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - barcode
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/barcode/link/:
+    post:
+      operationId: barcode_link_create
+      description: |-
+        Endpoint for assigning a barcode to a stock item.
+
+        - This only works if the barcode is not already associated with an object in the database
+        - If the barcode does not match an object, then the barcode hash is assigned to the StockItem
+      tags:
+      - barcode
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/BarcodeAssign'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/BarcodeAssign'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/BarcodeAssign'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BarcodeAssign'
+          description: ''
+  /api/barcode/po-allocate/:
+    post:
+      operationId: barcode_po_allocate_create
+      description: |-
+        Endpoint for allocating parts to a purchase order by scanning their barcode.
+
+        Note that the scanned barcode may point to:
+
+        - A Part object
+        - A ManufacturerPart object
+        - A SupplierPart object
+      tags:
+      - barcode
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/BarcodePOAllocate'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/BarcodePOAllocate'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/BarcodePOAllocate'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BarcodePOAllocate'
+          description: ''
+  /api/barcode/po-receive/:
+    post:
+      operationId: barcode_po_receive_create
+      description: |-
+        Endpoint for handling receiving parts by scanning their barcode.
+
+        Barcode data are decoded by the client application,
+        and sent to this endpoint (as a JSON object) for validation.
+
+        The barcode should follow a third-party barcode format (e.g. Digikey)
+        and ideally contain order_number and quantity information.
+
+        The following parameters are available:
+
+        - barcode: The raw barcode data (required)
+        - purchase_order: The purchase order containing the item to receive (optional)
+        - location: The destination location for the received item (optional)
+      tags:
+      - barcode
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/BarcodePOReceive'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/BarcodePOReceive'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/BarcodePOReceive'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BarcodePOReceive'
+          description: ''
+  /api/barcode/so-allocate/:
+    post:
+      operationId: barcode_so_allocate_create
+      description: |-
+        Endpoint for allocating stock to a sales order, by scanning barcode.
+
+        The scanned barcode should map to a StockItem object.
+
+        Additional fields can be passed to the endpoint:
+
+        - SalesOrder (Required)
+        - Line Item
+        - Shipment
+        - Quantity
+      tags:
+      - barcode
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/BarcodeSOAllocate'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/BarcodeSOAllocate'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/BarcodeSOAllocate'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BarcodeSOAllocate'
+          description: ''
+  /api/barcode/unlink/:
+    post:
+      operationId: barcode_unlink_create
+      description: Endpoint for unlinking / unassigning a custom barcode from a database
+        object.
+      tags:
+      - barcode
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/BarcodeUnassign'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/BarcodeUnassign'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/BarcodeUnassign'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BarcodeUnassign'
+          description: ''
+  /api/bom/:
+    get:
+      operationId: bom_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - in: query
+        name: allow_variants
+        schema:
+          type: boolean
+      - in: query
+        name: available_stock
+        schema:
+          type: boolean
+        description: Has available stock
+      - in: query
+        name: consumable
+        schema:
+          type: boolean
+      - in: query
+        name: has_pricing
+        schema:
+          type: boolean
+        description: Has Pricing
+      - in: query
+        name: inherited
+        schema:
+          type: boolean
+      - 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
+      - in: query
+        name: on_order
+        schema:
+          type: boolean
+        description: On order
+      - in: query
+        name: optional
+        schema:
+          type: boolean
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: part
+        schema:
+          type: integer
+        description: Part
+      - in: query
+        name: part_active
+        schema:
+          type: boolean
+        description: Assembly part is active
+      - in: query
+        name: part_testable
+        schema:
+          type: boolean
+        description: Assembly part is testable
+      - in: query
+        name: part_trackable
+        schema:
+          type: boolean
+        description: Assembly part is trackable
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      - in: query
+        name: sub_part_assembly
+        schema:
+          type: boolean
+        description: Component part is an assembly
+      - in: query
+        name: sub_part_testable
+        schema:
+          type: boolean
+        description: Component part is testable
+      - in: query
+        name: sub_part_trackable
+        schema:
+          type: boolean
+        description: Component part is trackable
+      - in: query
+        name: uses
+        schema:
+          type: integer
+      - in: query
+        name: validated
+        schema:
+          type: boolean
+      tags:
+      - bom
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedBomItemList'
+          description: ''
+    post:
+      operationId: bom_create
+      description: |-
+        API endpoint for accessing a list of BomItem objects.
+
+        - GET: Return list of BomItem objects
+        - POST: Create a new BomItem object
+      tags:
+      - bom
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/BomItem'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/BomItem'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/BomItem'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BomItem'
+          description: ''
+    delete:
+      operationId: bom_destroy
+      description: |-
+        Perform a DELETE operation against this list endpoint.
+
+        We expect a list of primary-key (ID) values to be supplied as a JSON object, e.g.
+        {
+            items: [4, 8, 15, 16, 23, 42]
+        }
+      tags:
+      - bom
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/bom/{id}/:
+    get:
+      operationId: bom_retrieve
+      description: API endpoint for detail view of a single BomItem object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - bom
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BomItem'
+          description: ''
+    put:
+      operationId: bom_update
+      description: API endpoint for detail view of a single BomItem object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - bom
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/BomItem'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/BomItem'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/BomItem'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BomItem'
+          description: ''
+    patch:
+      operationId: bom_partial_update
+      description: API endpoint for detail view of a single BomItem object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - bom
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedBomItem'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedBomItem'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedBomItem'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BomItem'
+          description: ''
+    delete:
+      operationId: bom_destroy_2
+      description: API endpoint for detail view of a single BomItem object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - bom
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/bom/{id}/metadata/:
+    get:
+      operationId: bom_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - bom
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: bom_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - bom
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: bom_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - bom
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/bom/{id}/validate/:
+    put:
+      operationId: bom_validate_update
+      description: API endpoint for validating a BomItem.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - bom
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/BomItemValidation'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/BomItemValidation'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/BomItemValidation'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BomItemValidation'
+          description: ''
+    patch:
+      operationId: bom_validate_partial_update
+      description: API endpoint for validating a BomItem.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - bom
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedBomItemValidation'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedBomItemValidation'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedBomItemValidation'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BomItemValidation'
+          description: ''
+  /api/bom/import/extract/:
+    post:
+      operationId: bom_import_extract_create
+      description: API endpoint for extracting BOM data from a BOM file.
+      tags:
+      - bom
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/BomImportExtract'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/BomImportExtract'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/BomImportExtract'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BomImportExtract'
+          description: ''
+  /api/bom/import/submit/:
+    post:
+      operationId: bom_import_submit_create
+      description: API endpoint for submitting BOM data from a BOM file.
+      tags:
+      - bom
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/BomImportSubmit'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/BomImportSubmit'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/BomImportSubmit'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BomImportSubmit'
+          description: ''
+  /api/bom/import/upload/:
+    post:
+      operationId: bom_import_upload_create
+      description: |-
+        API endpoint for uploading a complete Bill of Materials.
+
+        It is assumed that the BOM has been extracted from a file using the BomExtract endpoint.
+      tags:
+      - bom
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/BomImportUpload'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/BomImportUpload'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/BomImportUpload'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BomImportUpload'
+          description: ''
+  /api/bom/substitute/:
+    get:
+      operationId: bom_substitute_list
+      description: API endpoint for accessing a list of BomItemSubstitute objects.
+      parameters:
+      - in: query
+        name: bom_item
+        schema:
+          type: integer
+      - 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: part
+        schema:
+          type: integer
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - bom
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedBomItemSubstituteList'
+          description: ''
+    post:
+      operationId: bom_substitute_create
+      description: API endpoint for accessing a list of BomItemSubstitute objects.
+      tags:
+      - bom
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/BomItemSubstitute'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/BomItemSubstitute'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/BomItemSubstitute'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BomItemSubstitute'
+          description: ''
+  /api/bom/substitute/{id}/:
+    get:
+      operationId: bom_substitute_retrieve
+      description: API endpoint for detail view of a single BomItemSubstitute object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - bom
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BomItemSubstitute'
+          description: ''
+    put:
+      operationId: bom_substitute_update
+      description: API endpoint for detail view of a single BomItemSubstitute object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - bom
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/BomItemSubstitute'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/BomItemSubstitute'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/BomItemSubstitute'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BomItemSubstitute'
+          description: ''
+    patch:
+      operationId: bom_substitute_partial_update
+      description: API endpoint for detail view of a single BomItemSubstitute object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - bom
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedBomItemSubstitute'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedBomItemSubstitute'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedBomItemSubstitute'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BomItemSubstitute'
+          description: ''
+    delete:
+      operationId: bom_substitute_destroy
+      description: API endpoint for detail view of a single BomItemSubstitute object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - bom
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/bom/substitute/{id}/metadata/:
+    get:
+      operationId: bom_substitute_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - bom
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: bom_substitute_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - bom
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: bom_substitute_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - bom
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/build/:
+    get:
+      operationId: build_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - in: query
+        name: active
+        schema:
+          type: boolean
+        description: Build is active
+      - in: query
+        name: ancestor
+        schema:
+          type: string
+        description: Ancestor Build
+      - in: query
+        name: assigned_to
+        schema:
+          type: integer
+        description: Assigned To
+      - in: query
+        name: assigned_to_me
+        schema:
+          type: boolean
+        description: Assigned to me
+      - in: query
+        name: has_project_code
+        schema:
+          type: boolean
+        description: has_project_code
+      - in: query
+        name: issued_by
+        schema:
+          type: integer
+        description: Issued By
+      - 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: overdue
+        schema:
+          type: boolean
+        description: Build is overdue
+      - in: query
+        name: parent
+        schema:
+          type: integer
+        description: Parent Build
+      - in: query
+        name: part
+        schema:
+          type: integer
+      - in: query
+        name: project_code
+        schema:
+          type: integer
+      - in: query
+        name: reference
+        schema:
+          type: string
+        description: Filter by exact reference
+      - in: query
+        name: sales_order
+        schema:
+          type: integer
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      - in: query
+        name: status
+        schema:
+          type: integer
+        description: Status
+      tags:
+      - build
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedBuildList'
+          description: ''
+    post:
+      operationId: build_create
+      description: |-
+        API endpoint for accessing a list of Build objects.
+
+        - GET: Return list of objects (with filters)
+        - POST: Create a new Build object
+      tags:
+      - build
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Build'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Build'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Build'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Build'
+          description: ''
+  /api/build/{id}/:
+    get:
+      operationId: build_retrieve
+      description: API endpoint for detail view of a Build object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - build
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Build'
+          description: ''
+    put:
+      operationId: build_update
+      description: API endpoint for detail view of a Build object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - build
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Build'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Build'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Build'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Build'
+          description: ''
+    patch:
+      operationId: build_partial_update
+      description: API endpoint for detail view of a Build object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - build
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedBuild'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedBuild'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedBuild'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Build'
+          description: ''
+    delete:
+      operationId: build_destroy
+      description: API endpoint for detail view of a Build object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - build
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/build/{id}/allocate/:
+    post:
+      operationId: build_allocate_create
+      description: |-
+        API endpoint to allocate stock items to a build order.
+
+        - The BuildOrder object is specified by the URL
+        - Items to allocate are specified as a list called "items" with the following options:
+            - bom_item: pk value of a given BomItem object (must match the part associated with this build)
+            - stock_item: pk value of a given StockItem object
+            - quantity: quantity to allocate
+            - output: StockItem (build order output) to allocate stock against (optional)
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - build
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/BuildAllocation'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/BuildAllocation'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/BuildAllocation'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BuildAllocation'
+          description: ''
+  /api/build/{id}/auto-allocate/:
+    post:
+      operationId: build_auto_allocate_create
+      description: |-
+        API endpoint for 'automatically' allocating stock against a build order.
+
+        - Only looks at 'untracked' parts
+        - If stock exists in a single location, easy!
+        - If user decides that stock items are "fungible", allocate against multiple stock items
+        - If the user wants to, allocate substite parts if the primary parts are not available.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - build
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/BuildAutoAllocation'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/BuildAutoAllocation'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/BuildAutoAllocation'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BuildAutoAllocation'
+          description: ''
+  /api/build/{id}/cancel/:
+    post:
+      operationId: build_cancel_create
+      description: API endpoint for cancelling a BuildOrder.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - build
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/BuildCancel'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/BuildCancel'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/BuildCancel'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BuildCancel'
+          description: ''
+  /api/build/{id}/complete/:
+    post:
+      operationId: build_complete_create
+      description: API endpoint for completing build outputs.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - build
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/BuildOutputComplete'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/BuildOutputComplete'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/BuildOutputComplete'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BuildOutputComplete'
+          description: ''
+  /api/build/{id}/create-output/:
+    post:
+      operationId: build_create_output_create
+      description: API endpoint for creating new build output(s).
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - build
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/BuildOutputCreate'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/BuildOutputCreate'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/BuildOutputCreate'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BuildOutputCreate'
+          description: ''
+  /api/build/{id}/delete-outputs/:
+    post:
+      operationId: build_delete_outputs_create
+      description: API endpoint for deleting multiple build outputs.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - build
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/BuildOutputDelete'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/BuildOutputDelete'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/BuildOutputDelete'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BuildOutputDelete'
+          description: ''
+  /api/build/{id}/finish/:
+    post:
+      operationId: build_finish_create
+      description: API endpoint for marking a build as finished (completed).
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - build
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/BuildComplete'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/BuildComplete'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/BuildComplete'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BuildComplete'
+          description: ''
+  /api/build/{id}/hold/:
+    post:
+      operationId: build_hold_create
+      description: API endpoint for placing a BuildOrder on hold.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - build
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          description: No response body
+  /api/build/{id}/issue/:
+    post:
+      operationId: build_issue_create
+      description: API endpoint for issuing a BuildOrder.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - build
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          description: No response body
+  /api/build/{id}/metadata/:
+    get:
+      operationId: build_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - build
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: build_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - build
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: build_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - build
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/build/{id}/scrap-outputs/:
+    post:
+      operationId: build_scrap_outputs_create
+      description: API endpoint for scrapping build output(s).
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - build
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/BuildOutputScrap'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/BuildOutputScrap'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/BuildOutputScrap'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BuildOutputScrap'
+          description: ''
+  /api/build/{id}/unallocate/:
+    post:
+      operationId: build_unallocate_create
+      description: |-
+        API endpoint for unallocating stock items from a build order.
+
+        - The BuildOrder object is specified by the URL
+        - "output" (StockItem) can optionally be specified
+        - "bom_item" can optionally be specified
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - build
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/BuildUnallocation'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/BuildUnallocation'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/BuildUnallocation'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BuildUnallocation'
+          description: ''
+  /api/build/item/:
+    get:
+      operationId: build_item_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - in: query
+        name: build
+        schema:
+          type: integer
+      - in: query
+        name: build_line
+        schema:
+          type: integer
+      - in: query
+        name: install_into
+        schema:
+          type: integer
+      - 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: part
+        schema:
+          type: integer
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      - in: query
+        name: stock_item
+        schema:
+          type: integer
+      - in: query
+        name: tracked
+        schema:
+          type: boolean
+        description: Tracked
+      tags:
+      - build
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedBuildItemList'
+          description: ''
+    post:
+      operationId: build_item_create
+      description: |-
+        API endpoint for accessing a list of BuildItem objects.
+
+        - GET: Return list of objects
+        - POST: Create a new BuildItem object
+      tags:
+      - build
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/BuildItem'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/BuildItem'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/BuildItem'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BuildItem'
+          description: ''
+    delete:
+      operationId: build_item_destroy
+      description: |-
+        Perform a DELETE operation against this list endpoint.
+
+        We expect a list of primary-key (ID) values to be supplied as a JSON object, e.g.
+        {
+            items: [4, 8, 15, 16, 23, 42]
+        }
+      tags:
+      - build
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/build/item/{id}/:
+    get:
+      operationId: build_item_retrieve
+      description: API endpoint for detail view of a BuildItem object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - build
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BuildItem'
+          description: ''
+    put:
+      operationId: build_item_update
+      description: API endpoint for detail view of a BuildItem object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - build
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/BuildItem'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/BuildItem'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/BuildItem'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BuildItem'
+          description: ''
+    patch:
+      operationId: build_item_partial_update
+      description: API endpoint for detail view of a BuildItem object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - build
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedBuildItem'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedBuildItem'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedBuildItem'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BuildItem'
+          description: ''
+    delete:
+      operationId: build_item_destroy_2
+      description: API endpoint for detail view of a BuildItem object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - build
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/build/item/{id}/metadata/:
+    get:
+      operationId: build_item_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - build
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: build_item_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - build
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: build_item_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - build
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/build/line/:
+    get:
+      operationId: build_line_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - in: query
+        name: allocated
+        schema:
+          type: boolean
+        description: Allocated
+      - in: query
+        name: assembly
+        schema:
+          type: boolean
+        description: Assembly
+      - in: query
+        name: available
+        schema:
+          type: boolean
+        description: Available
+      - in: query
+        name: bom_item
+        schema:
+          type: integer
+      - in: query
+        name: build
+        schema:
+          type: integer
+      - in: query
+        name: consumable
+        schema:
+          type: boolean
+        description: Consumable
+      - 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
+      - in: query
+        name: optional
+        schema:
+          type: boolean
+        description: Optional
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      - in: query
+        name: testable
+        schema:
+          type: boolean
+        description: Testable
+      - in: query
+        name: tracked
+        schema:
+          type: boolean
+        description: Tracked
+      tags:
+      - build
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedBuildLineList'
+          description: ''
+    post:
+      operationId: build_line_create
+      description: API endpoint for accessing a list of BuildLine objects
+      tags:
+      - build
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/BuildLine'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/BuildLine'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/BuildLine'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BuildLine'
+          description: ''
+  /api/build/line/{id}/:
+    get:
+      operationId: build_line_retrieve
+      description: API endpoint for detail view of a BuildLine object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - build
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BuildLine'
+          description: ''
+    put:
+      operationId: build_line_update
+      description: API endpoint for detail view of a BuildLine object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - build
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/BuildLine'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/BuildLine'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/BuildLine'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BuildLine'
+          description: ''
+    patch:
+      operationId: build_line_partial_update
+      description: API endpoint for detail view of a BuildLine object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - build
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedBuildLine'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedBuildLine'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedBuildLine'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BuildLine'
+          description: ''
+    delete:
+      operationId: build_line_destroy
+      description: API endpoint for detail view of a BuildLine object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - build
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/build/status/:
+    get:
+      operationId: build_status_retrieve
+      description: Retrieve information about a specific status code
+      tags:
+      - build
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          description: Status code information
+        '400':
+          description: Invalid request
+  /api/company/:
+    get:
+      operationId: company_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - in: query
+        name: active
+        schema:
+          type: boolean
+      - in: query
+        name: is_customer
+        schema:
+          type: boolean
+      - in: query
+        name: is_manufacturer
+        schema:
+          type: boolean
+      - in: query
+        name: is_supplier
+        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: 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
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedCompanyList'
+          description: ''
+    post:
+      operationId: company_create
+      description: |-
+        API endpoint for accessing a list of Company objects.
+
+        Provides two methods:
+
+        - GET: Return list of objects
+        - POST: Create a new Company object
+      tags:
+      - company
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Company'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Company'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Company'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Company'
+          description: ''
+  /api/company/{id}/:
+    get:
+      operationId: company_retrieve
+      description: API endpoint for detail of a single Company object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Company'
+          description: ''
+    put:
+      operationId: company_update
+      description: API endpoint for detail of a single Company object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Company'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Company'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Company'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Company'
+          description: ''
+    patch:
+      operationId: company_partial_update
+      description: API endpoint for detail of a single Company object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedCompany'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedCompany'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedCompany'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Company'
+          description: ''
+    delete:
+      operationId: company_destroy
+      description: API endpoint for detail of a single Company object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/company/{id}/metadata/:
+    get:
+      operationId: company_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: company_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: company_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/company/address/:
+    get:
+      operationId: company_address_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - in: query
+        name: company
+        schema:
+          type: integer
+      - 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
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedAddressList'
+          description: ''
+    post:
+      operationId: company_address_create
+      description: API endpoint for list view of Address model.
+      tags:
+      - company
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Address'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Address'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Address'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Address'
+          description: ''
+    delete:
+      operationId: company_address_destroy
+      description: |-
+        Perform a DELETE operation against this list endpoint.
+
+        We expect a list of primary-key (ID) values to be supplied as a JSON object, e.g.
+        {
+            items: [4, 8, 15, 16, 23, 42]
+        }
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/company/address/{id}/:
+    get:
+      operationId: company_address_retrieve
+      description: API endpoint for a single Address object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Address'
+          description: ''
+    put:
+      operationId: company_address_update
+      description: API endpoint for a single Address object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - company
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Address'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Address'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Address'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Address'
+          description: ''
+    patch:
+      operationId: company_address_partial_update
+      description: API endpoint for a single Address object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - company
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedAddress'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedAddress'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedAddress'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Address'
+          description: ''
+    delete:
+      operationId: company_address_destroy_2
+      description: API endpoint for a single Address object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/company/contact/:
+    get:
+      operationId: company_contact_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - in: query
+        name: company
+        schema:
+          type: integer
+      - 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
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedContactList'
+          description: ''
+    post:
+      operationId: company_contact_create
+      description: API endpoint for list view of Company model.
+      tags:
+      - company
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Contact'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Contact'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Contact'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Contact'
+          description: ''
+    delete:
+      operationId: company_contact_destroy
+      description: |-
+        Perform a DELETE operation against this list endpoint.
+
+        We expect a list of primary-key (ID) values to be supplied as a JSON object, e.g.
+        {
+            items: [4, 8, 15, 16, 23, 42]
+        }
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/company/contact/{id}/:
+    get:
+      operationId: company_contact_retrieve
+      description: Detail endpoint for Company model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Contact'
+          description: ''
+    put:
+      operationId: company_contact_update
+      description: Detail endpoint for Company model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Contact'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Contact'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Contact'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Contact'
+          description: ''
+    patch:
+      operationId: company_contact_partial_update
+      description: Detail endpoint for Company model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedContact'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedContact'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedContact'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Contact'
+          description: ''
+    delete:
+      operationId: company_contact_destroy_2
+      description: Detail endpoint for Company model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/company/contact/{id}/metadata/:
+    get:
+      operationId: company_contact_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: company_contact_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: company_contact_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/company/part/:
+    get:
+      operationId: company_part_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - in: query
+        name: MPN
+        schema:
+          type: string
+        description: Manufacturer Part Number
+      - in: query
+        name: SKU
+        schema:
+          type: string
+      - in: query
+        name: active
+        schema:
+          type: boolean
+        description: Supplier Part is Active
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: manufacturer_part
+        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: part
+        schema:
+          type: integer
+      - in: query
+        name: part_active
+        schema:
+          type: boolean
+        description: Internal Part is Active
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      - in: query
+        name: supplier
+        schema:
+          type: integer
+      - in: query
+        name: supplier_active
+        schema:
+          type: boolean
+        description: Supplier is Active
+      - in: query
+        name: tags__name
+        schema:
+          type: string
+      - in: query
+        name: tags__slug
+        schema:
+          type: string
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedSupplierPartList'
+          description: ''
+    post:
+      operationId: company_part_create
+      description: |-
+        API endpoint for list view of SupplierPart object.
+
+        - GET: Return list of SupplierPart objects
+        - POST: Create a new SupplierPart object
+      tags:
+      - company
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/SupplierPart'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/SupplierPart'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/SupplierPart'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SupplierPart'
+          description: ''
+    delete:
+      operationId: company_part_destroy
+      description: |-
+        Perform a DELETE operation against this list endpoint.
+
+        We expect a list of primary-key (ID) values to be supplied as a JSON object, e.g.
+        {
+            items: [4, 8, 15, 16, 23, 42]
+        }
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/company/part/{id}/:
+    get:
+      operationId: company_part_retrieve
+      description: |-
+        API endpoint for detail view of SupplierPart object.
+
+        - GET: Retrieve detail view
+        - PATCH: Update object
+        - DELETE: Delete object
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SupplierPart'
+          description: ''
+    put:
+      operationId: company_part_update
+      description: |-
+        API endpoint for detail view of SupplierPart object.
+
+        - GET: Retrieve detail view
+        - PATCH: Update object
+        - DELETE: Delete object
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/SupplierPart'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/SupplierPart'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/SupplierPart'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SupplierPart'
+          description: ''
+    patch:
+      operationId: company_part_partial_update
+      description: |-
+        API endpoint for detail view of SupplierPart object.
+
+        - GET: Retrieve detail view
+        - PATCH: Update object
+        - DELETE: Delete object
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedSupplierPart'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedSupplierPart'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedSupplierPart'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SupplierPart'
+          description: ''
+    delete:
+      operationId: company_part_destroy_2
+      description: |-
+        API endpoint for detail view of SupplierPart object.
+
+        - GET: Retrieve detail view
+        - PATCH: Update object
+        - DELETE: Delete object
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/company/part/{id}/metadata/:
+    get:
+      operationId: company_part_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: company_part_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: company_part_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/company/part/manufacturer/:
+    get:
+      operationId: company_part_manufacturer_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - in: query
+        name: MPN
+        schema:
+          type: string
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: manufacturer
+        schema:
+          type: integer
+      - in: query
+        name: manufacturer_active
+        schema:
+          type: boolean
+        description: Manufacturer is Active
+      - 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
+        schema:
+          type: integer
+      - in: query
+        name: part_active
+        schema:
+          type: boolean
+        description: Part is Active
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      - in: query
+        name: tags__name
+        schema:
+          type: string
+      - in: query
+        name: tags__slug
+        schema:
+          type: string
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedManufacturerPartList'
+          description: ''
+    post:
+      operationId: company_part_manufacturer_create
+      description: |-
+        API endpoint for list view of ManufacturerPart object.
+
+        - GET: Return list of ManufacturerPart objects
+        - POST: Create a new ManufacturerPart object
+      tags:
+      - company
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ManufacturerPart'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/ManufacturerPart'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ManufacturerPart'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ManufacturerPart'
+          description: ''
+    delete:
+      operationId: company_part_manufacturer_destroy
+      description: |-
+        Perform a DELETE operation against this list endpoint.
+
+        We expect a list of primary-key (ID) values to be supplied as a JSON object, e.g.
+        {
+            items: [4, 8, 15, 16, 23, 42]
+        }
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/company/part/manufacturer/{id}/:
+    get:
+      operationId: company_part_manufacturer_retrieve
+      description: |-
+        API endpoint for detail view of ManufacturerPart object.
+
+        - GET: Retrieve detail view
+        - PATCH: Update object
+        - DELETE: Delete object
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ManufacturerPart'
+          description: ''
+    put:
+      operationId: company_part_manufacturer_update
+      description: |-
+        API endpoint for detail view of ManufacturerPart object.
+
+        - GET: Retrieve detail view
+        - PATCH: Update object
+        - DELETE: Delete object
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ManufacturerPart'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/ManufacturerPart'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ManufacturerPart'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ManufacturerPart'
+          description: ''
+    patch:
+      operationId: company_part_manufacturer_partial_update
+      description: |-
+        API endpoint for detail view of ManufacturerPart object.
+
+        - GET: Retrieve detail view
+        - PATCH: Update object
+        - DELETE: Delete object
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedManufacturerPart'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedManufacturerPart'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedManufacturerPart'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ManufacturerPart'
+          description: ''
+    delete:
+      operationId: company_part_manufacturer_destroy_2
+      description: |-
+        API endpoint for detail view of ManufacturerPart object.
+
+        - GET: Retrieve detail view
+        - PATCH: Update object
+        - DELETE: Delete object
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/company/part/manufacturer/{id}/metadata/:
+    get:
+      operationId: company_part_manufacturer_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: company_part_manufacturer_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: company_part_manufacturer_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/company/part/manufacturer/parameter/:
+    get:
+      operationId: company_part_manufacturer_parameter_list
+      description: API endpoint for list view of ManufacturerPartParamater model.
+      parameters:
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: manufacturer
+        schema:
+          type: integer
+      - in: query
+        name: manufacturer_part
+        schema:
+          type: integer
+      - in: query
+        name: name
+        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: part
+        schema:
+          type: integer
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      - in: query
+        name: units
+        schema:
+          type: string
+      - in: query
+        name: value
+        schema:
+          type: string
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedManufacturerPartParameterList'
+          description: ''
+    post:
+      operationId: company_part_manufacturer_parameter_create
+      description: API endpoint for list view of ManufacturerPartParamater model.
+      tags:
+      - company
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ManufacturerPartParameter'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/ManufacturerPartParameter'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ManufacturerPartParameter'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ManufacturerPartParameter'
+          description: ''
+    delete:
+      operationId: company_part_manufacturer_parameter_destroy
+      description: |-
+        Perform a DELETE operation against this list endpoint.
+
+        We expect a list of primary-key (ID) values to be supplied as a JSON object, e.g.
+        {
+            items: [4, 8, 15, 16, 23, 42]
+        }
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/company/part/manufacturer/parameter/{id}/:
+    get:
+      operationId: company_part_manufacturer_parameter_retrieve
+      description: API endpoint for detail view of ManufacturerPartParameter model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ManufacturerPartParameter'
+          description: ''
+    put:
+      operationId: company_part_manufacturer_parameter_update
+      description: API endpoint for detail view of ManufacturerPartParameter model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - company
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ManufacturerPartParameter'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/ManufacturerPartParameter'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ManufacturerPartParameter'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ManufacturerPartParameter'
+          description: ''
+    patch:
+      operationId: company_part_manufacturer_parameter_partial_update
+      description: API endpoint for detail view of ManufacturerPartParameter model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - company
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedManufacturerPartParameter'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedManufacturerPartParameter'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedManufacturerPartParameter'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ManufacturerPartParameter'
+          description: ''
+    delete:
+      operationId: company_part_manufacturer_parameter_destroy_2
+      description: API endpoint for detail view of ManufacturerPartParameter model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/company/price-break/:
+    get:
+      operationId: company_price_break_list
+      description: |-
+        API endpoint for list view of SupplierPriceBreak object.
+
+        - GET: Retrieve list of SupplierPriceBreak objects
+        - POST: Create a new SupplierPriceBreak object
+      parameters:
+      - in: query
+        name: base_part
+        schema:
+          type: integer
+        description: Base Part
+      - 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: part
+        schema:
+          type: integer
+      - in: query
+        name: quantity
+        schema:
+          type: number
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      - in: query
+        name: supplier
+        schema:
+          type: integer
+        description: Supplier
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedSupplierPriceBreakList'
+          description: ''
+    post:
+      operationId: company_price_break_create
+      description: |-
+        API endpoint for list view of SupplierPriceBreak object.
+
+        - GET: Retrieve list of SupplierPriceBreak objects
+        - POST: Create a new SupplierPriceBreak object
+      tags:
+      - company
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/SupplierPriceBreak'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/SupplierPriceBreak'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/SupplierPriceBreak'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SupplierPriceBreak'
+          description: ''
+  /api/company/price-break/{id}/:
+    get:
+      operationId: company_price_break_retrieve
+      description: Detail endpoint for SupplierPriceBreak object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SupplierPriceBreak'
+          description: ''
+    put:
+      operationId: company_price_break_update
+      description: Detail endpoint for SupplierPriceBreak object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/SupplierPriceBreak'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/SupplierPriceBreak'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/SupplierPriceBreak'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SupplierPriceBreak'
+          description: ''
+    patch:
+      operationId: company_price_break_partial_update
+      description: Detail endpoint for SupplierPriceBreak object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedSupplierPriceBreak'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedSupplierPriceBreak'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedSupplierPriceBreak'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SupplierPriceBreak'
+          description: ''
+    delete:
+      operationId: company_price_break_destroy
+      description: Detail endpoint for SupplierPriceBreak object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - company
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/contenttype/:
+    get:
+      operationId: contenttype_list
+      description: List view for ContentTypes.
+      parameters:
+      - 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
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - contenttype
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedContentTypeList'
+          description: ''
+  /api/contenttype/{id}/:
+    get:
+      operationId: contenttype_retrieve
+      description: Detail view for a ContentType model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - contenttype
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ContentType'
+          description: ''
+  /api/contenttype/model/{model}/:
+    get:
+      operationId: contenttype_retrieve_model
+      description: Detail view for a ContentType model.
+      parameters:
+      - in: path
+        name: model
+        schema:
+          type: string
+        required: true
+      tags:
+      - contenttype
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ContentType'
+          description: ''
+  /api/currency/exchange/:
+    get:
+      operationId: currency_exchange_retrieve
+      description: Return information on available currency conversions.
+      tags:
+      - currency
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CurrencyExchange'
+          description: ''
+  /api/currency/refresh/:
+    post:
+      operationId: currency_refresh_create
+      description: Performing a POST request will update currency exchange rates.
+      tags:
+      - currency
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          description: No response body
+  /api/email/generate/:
+    post:
+      operationId: email_generate_create
+      description: Get the token for the current user or fail.
+      tags:
+      - email
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/GetSimpleLogin'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/GetSimpleLogin'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/GetSimpleLogin'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GetSimpleLogin'
+          description: ''
+  /api/error-report/:
+    get:
+      operationId: error_report_list
+      description: List view for server error messages.
+      parameters:
+      - 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
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - error-report
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedErrorMessageList'
+          description: ''
+    delete:
+      operationId: error_report_destroy
+      description: |-
+        Perform a DELETE operation against this list endpoint.
+
+        We expect a list of primary-key (ID) values to be supplied as a JSON object, e.g.
+        {
+            items: [4, 8, 15, 16, 23, 42]
+        }
+      tags:
+      - error-report
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/error-report/{id}/:
+    get:
+      operationId: error_report_retrieve
+      description: Detail view for a single error message.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - error-report
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+          description: ''
+    put:
+      operationId: error_report_update
+      description: Detail view for a single error message.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - error-report
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ErrorMessage'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/ErrorMessage'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ErrorMessage'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+          description: ''
+    patch:
+      operationId: error_report_partial_update
+      description: Detail view for a single error message.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - error-report
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedErrorMessage'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedErrorMessage'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedErrorMessage'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+          description: ''
+    delete:
+      operationId: error_report_destroy_2
+      description: Detail view for a single error message.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - error-report
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/flags/:
+    get:
+      operationId: flags_list
+      description: List view for feature flags.
+      parameters:
+      - 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
+      tags:
+      - flags
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      - {}
+      responses:
+        '200':
+          description: No response body
+  /api/flags/{key}/:
+    get:
+      operationId: flags_retrieve
+      description: Detail view for an individual feature flag.
+      parameters:
+      - in: path
+        name: key
+        schema:
+          type: string
+        required: true
+      tags:
+      - flags
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      - {}
+      responses:
+        '200':
+          description: No response body
+  /api/generate/batch-code/:
+    post:
+      operationId: generate_batch_code_create
+      description: Generate a new batch code.
+      tags:
+      - generate
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/GenerateBatchCode'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/GenerateBatchCode'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/GenerateBatchCode'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GenerateBatchCode'
+          description: ''
+  /api/generate/serial-number/:
+    post:
+      operationId: generate_serial_number_create
+      description: Generate a new serial number.
+      tags:
+      - generate
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/GenerateSerialNumber'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/GenerateSerialNumber'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/GenerateSerialNumber'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GenerateSerialNumber'
+          description: ''
+  /api/generic/status/:
+    get:
+      operationId: generic_status_retrieve
+      description: Perform a GET request to learn information about status codes.
+      tags:
+      - generic
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          description: No response body
+  /api/generic/status/{statusmodel}/:
+    get:
+      operationId: generic_status_retrieve_2
+      description: Retrieve information about a specific status code
+      parameters:
+      - in: path
+        name: statusmodel
+        schema:
+          type: string
+        required: true
+      tags:
+      - generic
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          description: Status code information
+        '400':
+          description: Invalid request
+  /api/generic/status/custom/:
+    get:
+      operationId: generic_status_custom_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - 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
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - generic
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedCustomStateList'
+          description: ''
+    post:
+      operationId: generic_status_custom_create
+      description: List view for all custom states.
+      tags:
+      - generic
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CustomState'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/CustomState'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/CustomState'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CustomState'
+          description: ''
+  /api/generic/status/custom/{id}/:
+    get:
+      operationId: generic_status_custom_retrieve
+      description: Detail view for a particular custom states.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - generic
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CustomState'
+          description: ''
+    put:
+      operationId: generic_status_custom_update
+      description: Detail view for a particular custom states.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - generic
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CustomState'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/CustomState'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/CustomState'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CustomState'
+          description: ''
+    patch:
+      operationId: generic_status_custom_partial_update
+      description: Detail view for a particular custom states.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - generic
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedCustomState'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedCustomState'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedCustomState'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CustomState'
+          description: ''
+    delete:
+      operationId: generic_status_custom_destroy
+      description: Detail view for a particular custom states.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - generic
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/icons/:
+    get:
+      operationId: icons_list
+      description: List view for available icon packages.
+      parameters:
+      - 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
+      tags:
+      - icons
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      - {}
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedIconPackageList'
+          description: ''
+  /api/importer/column-mapping/:
+    get:
+      operationId: importer_column_mapping_list
+      description: API endpoint for accessing a list of DataImportColumnMap objects.
+      parameters:
+      - 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
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      - in: query
+        name: session
+        schema:
+          type: integer
+      tags:
+      - importer
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedDataImportColumnMapList'
+          description: ''
+  /api/importer/column-mapping/{id}/:
+    get:
+      operationId: importer_column_mapping_retrieve
+      description: Detail endpoint for a single DataImportColumnMap object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - importer
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DataImportColumnMap'
+          description: ''
+    put:
+      operationId: importer_column_mapping_update
+      description: Detail endpoint for a single DataImportColumnMap object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - importer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/DataImportColumnMap'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/DataImportColumnMap'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/DataImportColumnMap'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DataImportColumnMap'
+          description: ''
+    patch:
+      operationId: importer_column_mapping_partial_update
+      description: Detail endpoint for a single DataImportColumnMap object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - importer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedDataImportColumnMap'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedDataImportColumnMap'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedDataImportColumnMap'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DataImportColumnMap'
+          description: ''
+  /api/importer/models/:
+    get:
+      operationId: importer_models_retrieve
+      description: Return a list of models available for import.
+      tags:
+      - importer
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          description: No response body
+  /api/importer/row/:
+    get:
+      operationId: importer_row_list
+      description: API endpoint for accessing a list of DataImportRow objects.
+      parameters:
+      - in: query
+        name: complete
+        schema:
+          type: boolean
+      - 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
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      - in: query
+        name: session
+        schema:
+          type: integer
+      - in: query
+        name: valid
+        schema:
+          type: boolean
+      tags:
+      - importer
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedDataImportRowList'
+          description: ''
+    delete:
+      operationId: importer_row_destroy
+      description: |-
+        Perform a DELETE operation against this list endpoint.
+
+        We expect a list of primary-key (ID) values to be supplied as a JSON object, e.g.
+        {
+            items: [4, 8, 15, 16, 23, 42]
+        }
+      tags:
+      - importer
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/importer/row/{id}/:
+    get:
+      operationId: importer_row_retrieve
+      description: Detail endpoint for a single DataImportRow object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - importer
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DataImportRow'
+          description: ''
+    put:
+      operationId: importer_row_update
+      description: Detail endpoint for a single DataImportRow object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - importer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/DataImportRow'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/DataImportRow'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/DataImportRow'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DataImportRow'
+          description: ''
+    patch:
+      operationId: importer_row_partial_update
+      description: Detail endpoint for a single DataImportRow object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - importer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedDataImportRow'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedDataImportRow'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedDataImportRow'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DataImportRow'
+          description: ''
+    delete:
+      operationId: importer_row_destroy_2
+      description: Detail endpoint for a single DataImportRow object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - importer
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/importer/session/:
+    get:
+      operationId: importer_session_list
+      description: API endpoint for accessing a list of DataImportSession objects.
+      parameters:
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: model_type
+        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
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      - in: query
+        name: status
+        schema:
+          type: integer
+          enum:
+          - 0
+          - 10
+          - 20
+          - 30
+          - 40
+        description: |-
+          Import status
+
+          * `0` - Initializing
+          * `10` - Mapping Columns
+          * `20` - Importing Data
+          * `30` - Processing Data
+          * `40` - Complete
+      - in: query
+        name: user
+        schema:
+          type: integer
+      tags:
+      - importer
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedDataImportSessionList'
+          description: ''
+    post:
+      operationId: importer_session_create
+      description: API endpoint for accessing a list of DataImportSession objects.
+      tags:
+      - importer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/DataImportSession'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/DataImportSession'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/DataImportSession'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DataImportSession'
+          description: ''
+    delete:
+      operationId: importer_session_destroy
+      description: |-
+        Perform a DELETE operation against this list endpoint.
+
+        We expect a list of primary-key (ID) values to be supplied as a JSON object, e.g.
+        {
+            items: [4, 8, 15, 16, 23, 42]
+        }
+      tags:
+      - importer
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/importer/session/{id}/:
+    get:
+      operationId: importer_session_retrieve
+      description: Detail endpoint for a single DataImportSession object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - importer
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DataImportSession'
+          description: ''
+    put:
+      operationId: importer_session_update
+      description: Detail endpoint for a single DataImportSession object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - importer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/DataImportSession'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/DataImportSession'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/DataImportSession'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DataImportSession'
+          description: ''
+    patch:
+      operationId: importer_session_partial_update
+      description: Detail endpoint for a single DataImportSession object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - importer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedDataImportSession'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedDataImportSession'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedDataImportSession'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DataImportSession'
+          description: ''
+    delete:
+      operationId: importer_session_destroy_2
+      description: Detail endpoint for a single DataImportSession object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - importer
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/importer/session/{id}/accept_fields/:
+    post:
+      operationId: importer_session_accept_fields_create
+      description: Accept the field mapping for a DataImportSession.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - importer
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DataImportSession'
+          description: ''
+  /api/importer/session/{id}/accept_rows/:
+    post:
+      operationId: importer_session_accept_rows_create
+      description: API endpoint to accept the rows for a DataImportSession.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - importer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/DataImportAcceptRow'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/DataImportAcceptRow'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/DataImportAcceptRow'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DataImportAcceptRow'
+          description: ''
+  /api/label/output/:
+    get:
+      operationId: label_output_list
+      description: List endpoint for LabelOutput objects.
+      parameters:
+      - 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
+      tags:
+      - label
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedLabelOutputList'
+          description: ''
+    delete:
+      operationId: label_output_destroy
+      description: |-
+        Perform a DELETE operation against this list endpoint.
+
+        We expect a list of primary-key (ID) values to be supplied as a JSON object, e.g.
+        {
+            items: [4, 8, 15, 16, 23, 42]
+        }
+      tags:
+      - label
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/label/print/:
+    post:
+      operationId: label_print_create
+      description: POST action for printing labels.
+      tags:
+      - label
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/LabelPrint'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/LabelPrint'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/LabelPrint'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/LabelPrint'
+          description: ''
+  /api/label/template/:
+    get:
+      operationId: label_template_list
+      description: API endpoint for viewing list of LabelTemplate objects.
+      parameters:
+      - in: query
+        name: enabled
+        schema:
+          type: boolean
+      - in: query
+        name: items
+        schema:
+          type: string
+        description: Items
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: model_type
+        schema:
+          type: string
+          enum:
+          - build
+          - buildline
+          - part
+          - purchaseorder
+          - returnorder
+          - salesorder
+          - salesordershipment
+          - stockitem
+          - stocklocation
+        description: |-
+          Model Type
+
+          * `build` - Build Order
+          * `buildline` - Build Order Line Item
+          * `purchaseorder` - Purchase Order
+          * `salesorder` - Sales Order
+          * `salesordershipment` - Sales Order Shipment
+          * `returnorder` - Return Order
+          * `part` - Part
+          * `stockitem` - Stock Item
+          * `stocklocation` - Stock Location
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - label
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedLabelTemplateList'
+          description: ''
+    post:
+      operationId: label_template_create
+      description: API endpoint for viewing list of LabelTemplate objects.
+      tags:
+      - label
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/LabelTemplate'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/LabelTemplate'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/LabelTemplate'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/LabelTemplate'
+          description: ''
+  /api/label/template/{id}/:
+    get:
+      operationId: label_template_retrieve
+      description: Detail API endpoint for label template model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - label
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/LabelTemplate'
+          description: ''
+    put:
+      operationId: label_template_update
+      description: Detail API endpoint for label template model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - label
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/LabelTemplate'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/LabelTemplate'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/LabelTemplate'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/LabelTemplate'
+          description: ''
+    patch:
+      operationId: label_template_partial_update
+      description: Detail API endpoint for label template model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - label
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedLabelTemplate'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedLabelTemplate'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedLabelTemplate'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/LabelTemplate'
+          description: ''
+    delete:
+      operationId: label_template_destroy
+      description: Detail API endpoint for label template model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - label
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/label/template/{id}/metadata/:
+    get:
+      operationId: label_template_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - label
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: label_template_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - label
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: label_template_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - label
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/license/:
+    get:
+      operationId: license_retrieve
+      description: Return information about the InvenTree server.
+      tags:
+      - license
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/LicenseView'
+          description: ''
+  /api/locate/:
+    post:
+      operationId: locate_create
+      description: Identify or 'locate' a stock item or location with a plugin.
+      tags:
+      - locate
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/LocatePlugin'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/LocatePlugin'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/LocatePlugin'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/LocatePlugin'
+          description: ''
+  /api/machine/:
+    get:
+      operationId: machine_list
+      description: |-
+        API endpoint for list of Machine objects.
+
+        - GET: Return a list of all Machine objects
+        - POST: create a MachineConfig
+      parameters:
+      - in: query
+        name: active
+        schema:
+          type: boolean
+      - in: query
+        name: driver
+        schema:
+          type: string
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: machine_type
+        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
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - machine
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedMachineConfigList'
+          description: ''
+    post:
+      operationId: machine_create
+      description: |-
+        API endpoint for list of Machine objects.
+
+        - GET: Return a list of all Machine objects
+        - POST: create a MachineConfig
+      tags:
+      - machine
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/MachineConfigCreate'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/MachineConfigCreate'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/MachineConfigCreate'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/MachineConfigCreate'
+          description: ''
+  /api/machine/{id}/:
+    get:
+      operationId: machine_retrieve
+      description: |-
+        API detail endpoint for MachineConfig object.
+
+        - GET: return a single MachineConfig
+        - PUT: update a MachineConfig
+        - PATCH: partial update a MachineConfig
+        - DELETE: delete a MachineConfig
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          format: uuid
+        required: true
+      tags:
+      - machine
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/MachineConfig'
+          description: ''
+    put:
+      operationId: machine_update
+      description: |-
+        API detail endpoint for MachineConfig object.
+
+        - GET: return a single MachineConfig
+        - PUT: update a MachineConfig
+        - PATCH: partial update a MachineConfig
+        - DELETE: delete a MachineConfig
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          format: uuid
+        required: true
+      tags:
+      - machine
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/MachineConfig'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/MachineConfig'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/MachineConfig'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/MachineConfig'
+          description: ''
+    patch:
+      operationId: machine_partial_update
+      description: |-
+        API detail endpoint for MachineConfig object.
+
+        - GET: return a single MachineConfig
+        - PUT: update a MachineConfig
+        - PATCH: partial update a MachineConfig
+        - DELETE: delete a MachineConfig
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          format: uuid
+        required: true
+      tags:
+      - machine
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMachineConfig'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMachineConfig'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMachineConfig'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/MachineConfig'
+          description: ''
+    delete:
+      operationId: machine_destroy
+      description: |-
+        API detail endpoint for MachineConfig object.
+
+        - GET: return a single MachineConfig
+        - PUT: update a MachineConfig
+        - PATCH: partial update a MachineConfig
+        - DELETE: delete a MachineConfig
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          format: uuid
+        required: true
+      tags:
+      - machine
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/machine/{id}/restart/:
+    post:
+      operationId: machine_restart_create
+      description: Restart machine by pk.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          format: uuid
+        required: true
+      tags:
+      - machine
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/MachineRestart'
+          description: ''
+  /api/machine/{id}/settings/:
+    get:
+      operationId: machine_settings_list
+      description: Return all settings for a machine config.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          format: uuid
+        required: true
+      tags:
+      - machine
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/MachineSetting'
+          description: ''
+  /api/machine/{id}/settings/{config_type}/{key}/:
+    get:
+      operationId: machine_settings_retrieve
+      description: |-
+        Detail endpoint for a machine-specific setting.
+
+        - GET: Get machine setting detail
+        - PUT: Update machine setting
+        - PATCH: Update machine setting
+
+        (Note that these cannot be created or deleted via API)
+      parameters:
+      - in: path
+        name: config_type
+        schema:
+          type: string
+          pattern: ^M|D$
+        required: true
+      - in: path
+        name: id
+        schema:
+          type: string
+          format: uuid
+        required: true
+      - in: path
+        name: key
+        schema:
+          type: string
+          pattern: ^\w+$
+        required: true
+      tags:
+      - machine
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/MachineSetting'
+          description: ''
+    put:
+      operationId: machine_settings_update
+      description: |-
+        Detail endpoint for a machine-specific setting.
+
+        - GET: Get machine setting detail
+        - PUT: Update machine setting
+        - PATCH: Update machine setting
+
+        (Note that these cannot be created or deleted via API)
+      parameters:
+      - in: path
+        name: config_type
+        schema:
+          type: string
+          pattern: ^M|D$
+        required: true
+      - in: path
+        name: id
+        schema:
+          type: string
+          format: uuid
+        required: true
+      - in: path
+        name: key
+        schema:
+          type: string
+          pattern: ^\w+$
+        required: true
+      tags:
+      - machine
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/MachineSetting'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/MachineSetting'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/MachineSetting'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/MachineSetting'
+          description: ''
+    patch:
+      operationId: machine_settings_partial_update
+      description: |-
+        Detail endpoint for a machine-specific setting.
+
+        - GET: Get machine setting detail
+        - PUT: Update machine setting
+        - PATCH: Update machine setting
+
+        (Note that these cannot be created or deleted via API)
+      parameters:
+      - in: path
+        name: config_type
+        schema:
+          type: string
+          pattern: ^M|D$
+        required: true
+      - in: path
+        name: id
+        schema:
+          type: string
+          format: uuid
+        required: true
+      - in: path
+        name: key
+        schema:
+          type: string
+          pattern: ^\w+$
+        required: true
+      tags:
+      - machine
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMachineSetting'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMachineSetting'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMachineSetting'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/MachineSetting'
+          description: ''
+  /api/machine/drivers/:
+    get:
+      operationId: machine_drivers_list
+      description: List all machine drivers.
+      tags:
+      - machine
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/MachineDriver'
+          description: ''
+  /api/machine/status/:
+    get:
+      operationId: machine_status_retrieve
+      description: Provide status data for the machine registry.
+      tags:
+      - machine
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/MachineRegistryStatus'
+          description: ''
+  /api/machine/types/:
+    get:
+      operationId: machine_types_list
+      description: List all machine types.
+      tags:
+      - machine
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/MachineType'
+          description: ''
+  /api/news/:
+    get:
+      operationId: news_list
+      description: List view for all news items.
+      parameters:
+      - 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: read
+        schema:
+          type: boolean
+      tags:
+      - news
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedNewsFeedEntryList'
+          description: ''
+    delete:
+      operationId: news_destroy
+      description: |-
+        Perform a DELETE operation against this list endpoint.
+
+        We expect a list of primary-key (ID) values to be supplied as a JSON object, e.g.
+        {
+            items: [4, 8, 15, 16, 23, 42]
+        }
+      tags:
+      - news
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/news/{id}/:
+    get:
+      operationId: news_retrieve
+      description: Detail view for an individual news feed object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - news
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/NewsFeedEntry'
+          description: ''
+    put:
+      operationId: news_update
+      description: Detail view for an individual news feed object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - news
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/NewsFeedEntry'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/NewsFeedEntry'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/NewsFeedEntry'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/NewsFeedEntry'
+          description: ''
+    patch:
+      operationId: news_partial_update
+      description: Detail view for an individual news feed object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - news
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedNewsFeedEntry'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedNewsFeedEntry'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedNewsFeedEntry'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/NewsFeedEntry'
+          description: ''
+    delete:
+      operationId: news_destroy_2
+      description: Detail view for an individual news feed object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - news
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/notes-image-upload/:
+    get:
+      operationId: notes_image_upload_list
+      description: List view for all notes images.
+      parameters:
+      - 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
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - notes-image-upload
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedNotesImageList'
+          description: ''
+    post:
+      operationId: notes_image_upload_create
+      description: List view for all notes images.
+      tags:
+      - notes-image-upload
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/NotesImage'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/NotesImage'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/NotesImage'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/NotesImage'
+          description: ''
+  /api/notifications/:
+    get:
+      operationId: notifications_list
+      description: List view for all notifications of the current user.
+      parameters:
+      - in: query
+        name: category
+        schema:
+          type: string
+      - 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: read
+        schema:
+          type: boolean
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - notifications
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedNotificationMessageList'
+          description: ''
+    delete:
+      operationId: notifications_destroy
+      description: |-
+        Perform a DELETE operation against this list endpoint.
+
+        We expect a list of primary-key (ID) values to be supplied as a JSON object, e.g.
+        {
+            items: [4, 8, 15, 16, 23, 42]
+        }
+      tags:
+      - notifications
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/notifications/{id}/:
+    get:
+      operationId: notifications_retrieve
+      description: |-
+        Detail view for an individual notification object.
+
+        - User can only view / delete their own notification objects
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - notifications
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/NotificationMessage'
+          description: ''
+    put:
+      operationId: notifications_update
+      description: |-
+        Detail view for an individual notification object.
+
+        - User can only view / delete their own notification objects
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - notifications
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/NotificationMessage'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/NotificationMessage'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/NotificationMessage'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/NotificationMessage'
+          description: ''
+    patch:
+      operationId: notifications_partial_update
+      description: |-
+        Detail view for an individual notification object.
+
+        - User can only view / delete their own notification objects
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - notifications
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedNotificationMessage'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedNotificationMessage'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedNotificationMessage'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/NotificationMessage'
+          description: ''
+    delete:
+      operationId: notifications_destroy_2
+      description: |-
+        Detail view for an individual notification object.
+
+        - User can only view / delete their own notification objects
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - notifications
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/notifications/readall/:
+    get:
+      operationId: notifications_readall_retrieve
+      description: Set all messages for the current user as read.
+      tags:
+      - notifications
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/NotificationMessage'
+          description: ''
+  /api/order/po/:
+    get:
+      operationId: order_po_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - in: query
+        name: assigned_to
+        schema:
+          type: integer
+        description: Responsible
+      - in: query
+        name: assigned_to_me
+        schema:
+          type: boolean
+        description: Assigned to me
+      - in: query
+        name: has_project_code
+        schema:
+          type: boolean
+        description: Has Project Code
+      - 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: outstanding
+        schema:
+          type: boolean
+        description: Outstanding
+      - in: query
+        name: overdue
+        schema:
+          type: boolean
+        description: overdue
+      - in: query
+        name: project_code
+        schema:
+          type: integer
+        description: Project Code
+      - in: query
+        name: reference
+        schema:
+          type: string
+        description: Order Reference
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      - in: query
+        name: status
+        schema:
+          type: integer
+        description: Order Status
+      - in: query
+        name: supplier
+        schema:
+          type: integer
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedPurchaseOrderList'
+          description: ''
+    post:
+      operationId: order_po_create
+      description: |-
+        API endpoint for accessing a list of PurchaseOrder objects.
+
+        - GET: Return list of PurchaseOrder objects (with filters)
+        - POST: Create a new PurchaseOrder object
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PurchaseOrder'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PurchaseOrder'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PurchaseOrder'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PurchaseOrder'
+          description: ''
+  /api/order/po-extra-line/:
+    get:
+      operationId: order_po_extra_line_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - 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
+      - in: query
+        name: order
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedPurchaseOrderExtraLineList'
+          description: ''
+    post:
+      operationId: order_po_extra_line_create
+      description: API endpoint for accessing a list of PurchaseOrderExtraLine objects.
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PurchaseOrderExtraLine'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PurchaseOrderExtraLine'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PurchaseOrderExtraLine'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PurchaseOrderExtraLine'
+          description: ''
+  /api/order/po-extra-line/{id}/:
+    get:
+      operationId: order_po_extra_line_retrieve
+      description: API endpoint for detail view of a PurchaseOrderExtraLine object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PurchaseOrderExtraLine'
+          description: ''
+    put:
+      operationId: order_po_extra_line_update
+      description: API endpoint for detail view of a PurchaseOrderExtraLine object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PurchaseOrderExtraLine'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PurchaseOrderExtraLine'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PurchaseOrderExtraLine'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PurchaseOrderExtraLine'
+          description: ''
+    patch:
+      operationId: order_po_extra_line_partial_update
+      description: API endpoint for detail view of a PurchaseOrderExtraLine object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedPurchaseOrderExtraLine'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedPurchaseOrderExtraLine'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedPurchaseOrderExtraLine'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PurchaseOrderExtraLine'
+          description: ''
+    delete:
+      operationId: order_po_extra_line_destroy
+      description: API endpoint for detail view of a PurchaseOrderExtraLine object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/order/po-extra-line/{id}/metadata/:
+    get:
+      operationId: order_po_extra_line_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: order_po_extra_line_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: order_po_extra_line_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/order/po-line/:
+    get:
+      operationId: order_po_line_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - in: query
+        name: base_part
+        schema:
+          type: integer
+        description: Internal Part
+      - in: query
+        name: has_pricing
+        schema:
+          type: boolean
+        description: Has Pricing
+      - 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
+      - in: query
+        name: order
+        schema:
+          type: integer
+        description: Order
+      - in: query
+        name: order_complete
+        schema:
+          type: boolean
+        description: Order Complete
+      - in: query
+        name: order_status
+        schema:
+          type: integer
+        description: Order Status
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: part
+        schema:
+          type: integer
+        description: Supplier Part
+      - in: query
+        name: pending
+        schema:
+          type: boolean
+        description: Order Pending
+      - in: query
+        name: received
+        schema:
+          type: boolean
+        description: Items Received
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedPurchaseOrderLineItemList'
+          description: ''
+    post:
+      operationId: order_po_line_create
+      description: |-
+        API endpoint for accessing a list of PurchaseOrderLineItem objects.
+
+        - GET: Return a list of PurchaseOrder Line Item objects
+        - POST: Create a new PurchaseOrderLineItem object
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PurchaseOrderLineItem'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PurchaseOrderLineItem'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PurchaseOrderLineItem'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PurchaseOrderLineItem'
+          description: ''
+    delete:
+      operationId: order_po_line_destroy
+      description: |-
+        Perform a DELETE operation against this list endpoint.
+
+        We expect a list of primary-key (ID) values to be supplied as a JSON object, e.g.
+        {
+            items: [4, 8, 15, 16, 23, 42]
+        }
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/order/po-line/{id}/:
+    get:
+      operationId: order_po_line_retrieve
+      description: Detail API endpoint for PurchaseOrderLineItem object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PurchaseOrderLineItem'
+          description: ''
+    put:
+      operationId: order_po_line_update
+      description: Detail API endpoint for PurchaseOrderLineItem object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PurchaseOrderLineItem'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PurchaseOrderLineItem'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PurchaseOrderLineItem'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PurchaseOrderLineItem'
+          description: ''
+    patch:
+      operationId: order_po_line_partial_update
+      description: Detail API endpoint for PurchaseOrderLineItem object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedPurchaseOrderLineItem'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedPurchaseOrderLineItem'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedPurchaseOrderLineItem'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PurchaseOrderLineItem'
+          description: ''
+    delete:
+      operationId: order_po_line_destroy_2
+      description: Detail API endpoint for PurchaseOrderLineItem object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/order/po-line/{id}/metadata/:
+    get:
+      operationId: order_po_line_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: order_po_line_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: order_po_line_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/order/po/{id}/:
+    get:
+      operationId: order_po_retrieve
+      description: API endpoint for detail view of a PurchaseOrder object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PurchaseOrder'
+          description: ''
+    put:
+      operationId: order_po_update
+      description: API endpoint for detail view of a PurchaseOrder object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PurchaseOrder'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PurchaseOrder'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PurchaseOrder'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PurchaseOrder'
+          description: ''
+    patch:
+      operationId: order_po_partial_update
+      description: API endpoint for detail view of a PurchaseOrder object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedPurchaseOrder'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedPurchaseOrder'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedPurchaseOrder'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PurchaseOrder'
+          description: ''
+    delete:
+      operationId: order_po_destroy
+      description: API endpoint for detail view of a PurchaseOrder object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/order/po/{id}/cancel/:
+    post:
+      operationId: order_po_cancel_create
+      description: |-
+        API endpoint to 'cancel' a purchase order.
+
+        The purchase order must be in a state which can be cancelled
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          description: No response body
+  /api/order/po/{id}/complete/:
+    post:
+      operationId: order_po_complete_create
+      description: API endpoint to 'complete' a purchase order.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PurchaseOrderComplete'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PurchaseOrderComplete'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PurchaseOrderComplete'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PurchaseOrderComplete'
+          description: ''
+  /api/order/po/{id}/hold/:
+    post:
+      operationId: order_po_hold_create
+      description: API endpoint to place a PurchaseOrder on hold.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          description: No response body
+  /api/order/po/{id}/issue/:
+    post:
+      operationId: order_po_issue_create
+      description: API endpoint to 'issue' (place) a PurchaseOrder.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          description: No response body
+  /api/order/po/{id}/metadata/:
+    get:
+      operationId: order_po_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: order_po_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: order_po_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/order/po/{id}/receive/:
+    post:
+      operationId: order_po_receive_create
+      description: |-
+        API endpoint to receive stock items against a PurchaseOrder.
+
+        - The purchase order is specified in the URL.
+        - Items to receive are specified as a list called "items" with the following options:
+            - line_item: pk of the PO Line item
+            - supplier_part: pk value of the supplier part
+            - quantity: quantity to receive
+            - status: stock item status
+            - location: destination for stock item (optional)
+            - batch_code: the batch code for this stock item
+            - serial_numbers: serial numbers for this stock item
+        - A global location must also be specified. This is used when no locations are specified for items, and no location is given in the PO line item
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PurchaseOrderReceive'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PurchaseOrderReceive'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PurchaseOrderReceive'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PurchaseOrderReceive'
+          description: ''
+  /api/order/po/status/:
+    get:
+      operationId: order_po_status_retrieve
+      description: Retrieve information about a specific status code
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          description: Status code information
+        '400':
+          description: Invalid request
+  /api/order/ro/:
+    get:
+      operationId: order_ro_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - in: query
+        name: assigned_to
+        schema:
+          type: integer
+        description: Responsible
+      - in: query
+        name: assigned_to_me
+        schema:
+          type: boolean
+        description: Assigned to me
+      - in: query
+        name: customer
+        schema:
+          type: integer
+      - in: query
+        name: has_project_code
+        schema:
+          type: boolean
+        description: Has Project Code
+      - 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: outstanding
+        schema:
+          type: boolean
+        description: Outstanding
+      - in: query
+        name: overdue
+        schema:
+          type: boolean
+        description: overdue
+      - in: query
+        name: project_code
+        schema:
+          type: integer
+        description: Project Code
+      - in: query
+        name: reference
+        schema:
+          type: string
+        description: Order Reference
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      - in: query
+        name: status
+        schema:
+          type: integer
+        description: Order Status
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedReturnOrderList'
+          description: ''
+    post:
+      operationId: order_ro_create
+      description: API endpoint for accessing a list of ReturnOrder objects.
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ReturnOrder'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/ReturnOrder'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ReturnOrder'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ReturnOrder'
+          description: ''
+  /api/order/ro-extra-line/:
+    get:
+      operationId: order_ro_extra_line_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - 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
+      - in: query
+        name: order
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedReturnOrderExtraLineList'
+          description: ''
+    post:
+      operationId: order_ro_extra_line_create
+      description: API endpoint for accessing a list of ReturnOrderExtraLine objects.
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ReturnOrderExtraLine'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/ReturnOrderExtraLine'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ReturnOrderExtraLine'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ReturnOrderExtraLine'
+          description: ''
+  /api/order/ro-extra-line/{id}/:
+    get:
+      operationId: order_ro_extra_line_retrieve
+      description: API endpoint for detail view of a ReturnOrderExtraLine object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ReturnOrderExtraLine'
+          description: ''
+    put:
+      operationId: order_ro_extra_line_update
+      description: API endpoint for detail view of a ReturnOrderExtraLine object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ReturnOrderExtraLine'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/ReturnOrderExtraLine'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ReturnOrderExtraLine'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ReturnOrderExtraLine'
+          description: ''
+    patch:
+      operationId: order_ro_extra_line_partial_update
+      description: API endpoint for detail view of a ReturnOrderExtraLine object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedReturnOrderExtraLine'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedReturnOrderExtraLine'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedReturnOrderExtraLine'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ReturnOrderExtraLine'
+          description: ''
+    delete:
+      operationId: order_ro_extra_line_destroy
+      description: API endpoint for detail view of a ReturnOrderExtraLine object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/order/ro-extra-line/{id}/metadata/:
+    get:
+      operationId: order_ro_extra_line_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: order_ro_extra_line_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: order_ro_extra_line_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/order/ro-line/:
+    get:
+      operationId: order_ro_line_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - in: query
+        name: has_pricing
+        schema:
+          type: boolean
+        description: Has Pricing
+      - in: query
+        name: item
+        schema:
+          type: integer
+      - 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
+      - in: query
+        name: order
+        schema:
+          type: integer
+      - in: query
+        name: order_status
+        schema:
+          type: integer
+        description: Order Status
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: outcome
+        schema:
+          type: integer
+        description: outcome
+      - in: query
+        name: received
+        schema:
+          type: boolean
+        description: received
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedReturnOrderLineItemList'
+          description: ''
+    post:
+      operationId: order_ro_line_create
+      description: API endpoint for accessing a list of ReturnOrderLineItemList objects.
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ReturnOrderLineItem'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/ReturnOrderLineItem'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ReturnOrderLineItem'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ReturnOrderLineItem'
+          description: ''
+  /api/order/ro-line/{id}/:
+    get:
+      operationId: order_ro_line_retrieve
+      description: API endpoint for detail view of a ReturnOrderLineItem object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ReturnOrderLineItem'
+          description: ''
+    put:
+      operationId: order_ro_line_update
+      description: API endpoint for detail view of a ReturnOrderLineItem object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ReturnOrderLineItem'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/ReturnOrderLineItem'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ReturnOrderLineItem'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ReturnOrderLineItem'
+          description: ''
+    patch:
+      operationId: order_ro_line_partial_update
+      description: API endpoint for detail view of a ReturnOrderLineItem object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedReturnOrderLineItem'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedReturnOrderLineItem'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedReturnOrderLineItem'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ReturnOrderLineItem'
+          description: ''
+    delete:
+      operationId: order_ro_line_destroy
+      description: API endpoint for detail view of a ReturnOrderLineItem object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/order/ro-line/{id}/metadata/:
+    get:
+      operationId: order_ro_line_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: order_ro_line_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: order_ro_line_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/order/ro-line/status/:
+    get:
+      operationId: order_ro_line_status_retrieve
+      description: Retrieve information about a specific status code
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          description: Status code information
+        '400':
+          description: Invalid request
+  /api/order/ro/{id}/:
+    get:
+      operationId: order_ro_retrieve
+      description: API endpoint for detail view of a single ReturnOrder object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ReturnOrder'
+          description: ''
+    put:
+      operationId: order_ro_update
+      description: API endpoint for detail view of a single ReturnOrder object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ReturnOrder'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/ReturnOrder'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ReturnOrder'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ReturnOrder'
+          description: ''
+    patch:
+      operationId: order_ro_partial_update
+      description: API endpoint for detail view of a single ReturnOrder object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedReturnOrder'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedReturnOrder'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedReturnOrder'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ReturnOrder'
+          description: ''
+    delete:
+      operationId: order_ro_destroy
+      description: API endpoint for detail view of a single ReturnOrder object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/order/ro/{id}/cancel/:
+    post:
+      operationId: order_ro_cancel_create
+      description: API endpoint to cancel a ReturnOrder.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          description: No response body
+  /api/order/ro/{id}/complete/:
+    post:
+      operationId: order_ro_complete_create
+      description: API endpoint to complete a ReturnOrder.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          description: No response body
+  /api/order/ro/{id}/hold/:
+    post:
+      operationId: order_ro_hold_create
+      description: API endpoint to hold a ReturnOrder.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          description: No response body
+  /api/order/ro/{id}/issue/:
+    post:
+      operationId: order_ro_issue_create
+      description: API endpoint to issue (place) a ReturnOrder.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          description: No response body
+  /api/order/ro/{id}/metadata/:
+    get:
+      operationId: order_ro_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: order_ro_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: order_ro_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/order/ro/{id}/receive/:
+    post:
+      operationId: order_ro_receive_create
+      description: API endpoint to receive items against a ReturnOrder.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ReturnOrderReceive'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/ReturnOrderReceive'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ReturnOrderReceive'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ReturnOrderReceive'
+          description: ''
+  /api/order/ro/status/:
+    get:
+      operationId: order_ro_status_retrieve
+      description: Retrieve information about a specific status code
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          description: Status code information
+        '400':
+          description: Invalid request
+  /api/order/so/:
+    get:
+      operationId: order_so_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - in: query
+        name: assigned_to
+        schema:
+          type: integer
+        description: Responsible
+      - in: query
+        name: assigned_to_me
+        schema:
+          type: boolean
+        description: Assigned to me
+      - in: query
+        name: customer
+        schema:
+          type: integer
+      - in: query
+        name: has_project_code
+        schema:
+          type: boolean
+        description: Has Project Code
+      - 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: outstanding
+        schema:
+          type: boolean
+        description: Outstanding
+      - in: query
+        name: overdue
+        schema:
+          type: boolean
+        description: overdue
+      - in: query
+        name: project_code
+        schema:
+          type: integer
+        description: Project Code
+      - in: query
+        name: reference
+        schema:
+          type: string
+        description: Order Reference
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      - in: query
+        name: status
+        schema:
+          type: integer
+        description: Order Status
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedSalesOrderList'
+          description: ''
+    post:
+      operationId: order_so_create
+      description: |-
+        API endpoint for accessing a list of SalesOrder objects.
+
+        - GET: Return list of SalesOrder objects (with filters)
+        - POST: Create a new SalesOrder
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/SalesOrder'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/SalesOrder'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/SalesOrder'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SalesOrder'
+          description: ''
+  /api/order/so-allocation/:
+    get:
+      operationId: order_so_allocation_list
+      description: API endpoint for listing SalesOrderAllocation objects.
+      parameters:
+      - in: query
+        name: item
+        schema:
+          type: integer
+      - 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
+      - in: query
+        name: order
+        schema:
+          type: integer
+        description: Order
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: outstanding
+        schema:
+          type: boolean
+        description: Outstanding
+      - in: query
+        name: part
+        schema:
+          type: integer
+        description: Part
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      - in: query
+        name: shipment
+        schema:
+          type: integer
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedSalesOrderAllocationList'
+          description: ''
+  /api/order/so-allocation/{id}/:
+    get:
+      operationId: order_so_allocation_retrieve
+      description: API endpoint for detali view of a SalesOrderAllocation object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SalesOrderAllocation'
+          description: ''
+    put:
+      operationId: order_so_allocation_update
+      description: API endpoint for detali view of a SalesOrderAllocation object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/SalesOrderAllocation'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/SalesOrderAllocation'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/SalesOrderAllocation'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SalesOrderAllocation'
+          description: ''
+    patch:
+      operationId: order_so_allocation_partial_update
+      description: API endpoint for detali view of a SalesOrderAllocation object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedSalesOrderAllocation'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedSalesOrderAllocation'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedSalesOrderAllocation'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SalesOrderAllocation'
+          description: ''
+    delete:
+      operationId: order_so_allocation_destroy
+      description: API endpoint for detali view of a SalesOrderAllocation object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/order/so-extra-line/:
+    get:
+      operationId: order_so_extra_line_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - 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
+      - in: query
+        name: order
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedSalesOrderExtraLineList'
+          description: ''
+    post:
+      operationId: order_so_extra_line_create
+      description: API endpoint for accessing a list of SalesOrderExtraLine objects.
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/SalesOrderExtraLine'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/SalesOrderExtraLine'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/SalesOrderExtraLine'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SalesOrderExtraLine'
+          description: ''
+  /api/order/so-extra-line/{id}/:
+    get:
+      operationId: order_so_extra_line_retrieve
+      description: API endpoint for detail view of a SalesOrderExtraLine object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SalesOrderExtraLine'
+          description: ''
+    put:
+      operationId: order_so_extra_line_update
+      description: API endpoint for detail view of a SalesOrderExtraLine object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/SalesOrderExtraLine'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/SalesOrderExtraLine'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/SalesOrderExtraLine'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SalesOrderExtraLine'
+          description: ''
+    patch:
+      operationId: order_so_extra_line_partial_update
+      description: API endpoint for detail view of a SalesOrderExtraLine object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedSalesOrderExtraLine'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedSalesOrderExtraLine'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedSalesOrderExtraLine'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SalesOrderExtraLine'
+          description: ''
+    delete:
+      operationId: order_so_extra_line_destroy
+      description: API endpoint for detail view of a SalesOrderExtraLine object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/order/so-extra-line/{id}/metadata/:
+    get:
+      operationId: order_so_extra_line_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: order_so_extra_line_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: order_so_extra_line_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/order/so-line/:
+    get:
+      operationId: order_so_line_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - in: query
+        name: completed
+        schema:
+          type: boolean
+        description: completed
+      - in: query
+        name: has_pricing
+        schema:
+          type: boolean
+        description: Has Pricing
+      - 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
+      - in: query
+        name: order
+        schema:
+          type: integer
+        description: Order
+      - in: query
+        name: order_complete
+        schema:
+          type: boolean
+        description: Order Complete
+      - in: query
+        name: order_status
+        schema:
+          type: integer
+        description: Order Status
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: part
+        schema:
+          type: integer
+        description: Part
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedSalesOrderLineItemList'
+          description: ''
+    post:
+      operationId: order_so_line_create
+      description: API endpoint for accessing a list of SalesOrderLineItem objects.
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/SalesOrderLineItem'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/SalesOrderLineItem'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/SalesOrderLineItem'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SalesOrderLineItem'
+          description: ''
+  /api/order/so-line/{id}/:
+    get:
+      operationId: order_so_line_retrieve
+      description: API endpoint for detail view of a SalesOrderLineItem object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SalesOrderLineItem'
+          description: ''
+    put:
+      operationId: order_so_line_update
+      description: API endpoint for detail view of a SalesOrderLineItem object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/SalesOrderLineItem'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/SalesOrderLineItem'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/SalesOrderLineItem'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SalesOrderLineItem'
+          description: ''
+    patch:
+      operationId: order_so_line_partial_update
+      description: API endpoint for detail view of a SalesOrderLineItem object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedSalesOrderLineItem'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedSalesOrderLineItem'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedSalesOrderLineItem'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SalesOrderLineItem'
+          description: ''
+    delete:
+      operationId: order_so_line_destroy
+      description: API endpoint for detail view of a SalesOrderLineItem object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/order/so-line/{id}/metadata/:
+    get:
+      operationId: order_so_line_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: order_so_line_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: order_so_line_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/order/so/{id}/:
+    get:
+      operationId: order_so_retrieve
+      description: API endpoint for detail view of a SalesOrder object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SalesOrder'
+          description: ''
+    put:
+      operationId: order_so_update
+      description: API endpoint for detail view of a SalesOrder object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/SalesOrder'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/SalesOrder'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/SalesOrder'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SalesOrder'
+          description: ''
+    patch:
+      operationId: order_so_partial_update
+      description: API endpoint for detail view of a SalesOrder object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedSalesOrder'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedSalesOrder'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedSalesOrder'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SalesOrder'
+          description: ''
+    delete:
+      operationId: order_so_destroy
+      description: API endpoint for detail view of a SalesOrder object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/order/so/{id}/allocate/:
+    post:
+      operationId: order_so_allocate_create
+      description: |-
+        API endpoint to allocate stock items against a SalesOrder.
+
+        - The SalesOrder is specified in the URL
+        - See the SalesOrderShipmentAllocationSerializer class
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/SalesOrderShipmentAllocation'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/SalesOrderShipmentAllocation'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/SalesOrderShipmentAllocation'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SalesOrderShipmentAllocation'
+          description: ''
+  /api/order/so/{id}/allocate-serials/:
+    post:
+      operationId: order_so_allocate_serials_create
+      description: API endpoint to allocation stock items against a SalesOrder, by
+        specifying serial numbers.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/SalesOrderSerialAllocation'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/SalesOrderSerialAllocation'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/SalesOrderSerialAllocation'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SalesOrderSerialAllocation'
+          description: ''
+  /api/order/so/{id}/cancel/:
+    post:
+      operationId: order_so_cancel_create
+      description: API endpoint to cancel a SalesOrder.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          description: No response body
+  /api/order/so/{id}/complete/:
+    post:
+      operationId: order_so_complete_create
+      description: API endpoint for manually marking a SalesOrder as "complete".
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/SalesOrderComplete'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/SalesOrderComplete'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/SalesOrderComplete'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SalesOrderComplete'
+          description: ''
+  /api/order/so/{id}/hold/:
+    post:
+      operationId: order_so_hold_create
+      description: API endpoint to place a SalesOrder on hold.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          description: No response body
+  /api/order/so/{id}/issue/:
+    post:
+      operationId: order_so_issue_create
+      description: API endpoint to issue a SalesOrder.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          description: No response body
+  /api/order/so/{id}/metadata/:
+    get:
+      operationId: order_so_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: order_so_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: order_so_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/order/so/shipment/:
+    get:
+      operationId: order_so_shipment_list
+      description: API list endpoint for SalesOrderShipment model.
+      parameters:
+      - in: query
+        name: delivered
+        schema:
+          type: boolean
+        description: delivered
+      - 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
+      - in: query
+        name: order
+        schema:
+          type: integer
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      - in: query
+        name: shipped
+        schema:
+          type: boolean
+        description: shipped
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedSalesOrderShipmentList'
+          description: ''
+    post:
+      operationId: order_so_shipment_create
+      description: API list endpoint for SalesOrderShipment model.
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/SalesOrderShipment'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/SalesOrderShipment'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/SalesOrderShipment'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SalesOrderShipment'
+          description: ''
+  /api/order/so/shipment/{id}/:
+    get:
+      operationId: order_so_shipment_retrieve
+      description: API detail endpooint for SalesOrderShipment model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SalesOrderShipment'
+          description: ''
+    put:
+      operationId: order_so_shipment_update
+      description: API detail endpooint for SalesOrderShipment model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/SalesOrderShipment'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/SalesOrderShipment'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/SalesOrderShipment'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SalesOrderShipment'
+          description: ''
+    patch:
+      operationId: order_so_shipment_partial_update
+      description: API detail endpooint for SalesOrderShipment model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedSalesOrderShipment'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedSalesOrderShipment'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedSalesOrderShipment'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SalesOrderShipment'
+          description: ''
+    delete:
+      operationId: order_so_shipment_destroy
+      description: API detail endpooint for SalesOrderShipment model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/order/so/shipment/{id}/metadata/:
+    get:
+      operationId: order_so_shipment_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: order_so_shipment_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: order_so_shipment_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/order/so/shipment/{id}/ship/:
+    post:
+      operationId: order_so_shipment_ship_create
+      description: API endpoint for completing (shipping) a SalesOrderShipment.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/SalesOrderShipmentComplete'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/SalesOrderShipmentComplete'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/SalesOrderShipmentComplete'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SalesOrderShipmentComplete'
+          description: ''
+  /api/order/so/status/:
+    get:
+      operationId: order_so_status_retrieve
+      description: Retrieve information about a specific status code
+      tags:
+      - order
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          description: Status code information
+        '400':
+          description: Invalid request
+  /api/part/:
+    get:
+      operationId: part_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - in: query
+        name: IPN
+        schema:
+          type: string
+        description: Filter by exact IPN (internal part number)
+      - in: query
+        name: IPN_regex
+        schema:
+          type: string
+        description: Filter by regex on IPN (internal part number)
+      - in: query
+        name: active
+        schema:
+          type: boolean
+      - in: query
+        name: ancestor
+        schema:
+          type: integer
+      - in: query
+        name: assembly
+        schema:
+          type: boolean
+      - in: query
+        name: bom_valid
+        schema:
+          type: boolean
+        description: BOM Valid
+      - in: query
+        name: component
+        schema:
+          type: boolean
+      - in: query
+        name: convert_from
+        schema:
+          type: integer
+      - in: query
+        name: created_after
+        schema:
+          type: string
+          format: date
+        description: Updated after
+      - in: query
+        name: created_before
+        schema:
+          type: string
+          format: date
+        description: Updated before
+      - in: query
+        name: default_location
+        schema:
+          type: integer
+        description: Default Location
+      - in: query
+        name: depleted_stock
+        schema:
+          type: boolean
+        description: Depleted Stock
+      - in: query
+        name: exclude_tree
+        schema:
+          type: integer
+      - in: query
+        name: has_ipn
+        schema:
+          type: boolean
+        description: Has IPN
+      - in: query
+        name: has_pricing
+        schema:
+          type: boolean
+        description: Has Pricing
+      - in: query
+        name: has_revisions
+        schema:
+          type: boolean
+        description: Has Revisions
+      - in: query
+        name: has_stock
+        schema:
+          type: boolean
+        description: Has stock
+      - in: query
+        name: has_units
+        schema:
+          type: boolean
+        description: Has units
+      - in: query
+        name: in_bom_for
+        schema:
+          type: integer
+      - in: query
+        name: is_revision
+        schema:
+          type: boolean
+        description: Is Revision
+      - in: query
+        name: is_template
+        schema:
+          type: boolean
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: locked
+        schema:
+          type: boolean
+      - in: query
+        name: low_stock
+        schema:
+          type: boolean
+        description: Low stock
+      - in: query
+        name: name_regex
+        schema:
+          type: string
+        description: Filter by name (regex)
+      - 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: purchaseable
+        schema:
+          type: boolean
+      - in: query
+        name: revision_of
+        schema:
+          type: integer
+      - in: query
+        name: salable
+        schema:
+          type: boolean
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      - in: query
+        name: starred
+        schema:
+          type: boolean
+        description: Starred
+      - in: query
+        name: stock_to_build
+        schema:
+          type: boolean
+        description: Required for Build Order
+      - in: query
+        name: stocktake
+        schema:
+          type: boolean
+        description: Has stocktake
+      - in: query
+        name: tags_name
+        schema:
+          type: string
+      - in: query
+        name: tags_slug
+        schema:
+          type: string
+      - in: query
+        name: testable
+        schema:
+          type: boolean
+      - in: query
+        name: trackable
+        schema:
+          type: boolean
+      - in: query
+        name: unallocated_stock
+        schema:
+          type: boolean
+        description: Unallocated stock
+      - in: query
+        name: variant_of
+        schema:
+          type: integer
+        description: Variant Of
+      - in: query
+        name: virtual
+        schema:
+          type: boolean
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedPartList'
+          description: ''
+    post:
+      operationId: part_create
+      description: API endpoint for accessing a list of Part objects, or creating
+        a new Part instance.
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Part'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Part'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Part'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Part'
+          description: ''
+  /api/part/{id}/:
+    get:
+      operationId: part_retrieve
+      description: API endpoint for detail view of a single Part object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Part'
+          description: ''
+    put:
+      operationId: part_update
+      description: API endpoint for detail view of a single Part object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Part'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Part'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Part'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Part'
+          description: ''
+    patch:
+      operationId: part_partial_update
+      description: API endpoint for detail view of a single Part object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedPart'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedPart'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedPart'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Part'
+          description: ''
+    delete:
+      operationId: part_destroy
+      description: API endpoint for detail view of a single Part object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/part/{id}/bom-copy/:
+    post:
+      operationId: part_bom_copy_create
+      description: API endpoint for duplicating a BOM.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PartCopyBOM'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PartCopyBOM'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PartCopyBOM'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartCopyBOM'
+          description: ''
+  /api/part/{id}/bom-validate/:
+    get:
+      operationId: part_bom_validate_retrieve
+      description: API endpoint for 'validating' the BOM for a given Part.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BOMValidate'
+          description: ''
+    put:
+      operationId: part_bom_validate_update
+      description: API endpoint for 'validating' the BOM for a given Part.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/BOMValidate'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/BOMValidate'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/BOMValidate'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BOMValidate'
+          description: ''
+    patch:
+      operationId: part_bom_validate_partial_update
+      description: API endpoint for 'validating' the BOM for a given Part.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedBOMValidate'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedBOMValidate'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedBOMValidate'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BOMValidate'
+          description: ''
+  /api/part/{id}/metadata/:
+    get:
+      operationId: part_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: part_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: part_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/part/{id}/pricing/:
+    get:
+      operationId: part_pricing_retrieve
+      description: API endpoint for viewing part pricing data.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartPricing'
+          description: ''
+    put:
+      operationId: part_pricing_update
+      description: API endpoint for viewing part pricing data.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PartPricing'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PartPricing'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PartPricing'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartPricing'
+          description: ''
+    patch:
+      operationId: part_pricing_partial_update
+      description: API endpoint for viewing part pricing data.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedPartPricing'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedPartPricing'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedPartPricing'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartPricing'
+          description: ''
+  /api/part/{id}/requirements/:
+    get:
+      operationId: part_requirements_retrieve
+      description: |-
+        API endpoint detailing 'requirements' information for a particular part.
+
+        This endpoint returns information on upcoming requirements for:
+
+        - Sales Orders
+        - Build Orders
+        - Total requirements
+
+        As this data is somewhat complex to calculate, is it not included in the default API
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          description: No response body
+  /api/part/{id}/scheduling/:
+    get:
+      operationId: part_scheduling_retrieve
+      description: |-
+        API endpoint for delivering "scheduling" information about a given part via the API.
+
+        Returns a chronologically ordered list about future "scheduled" events,
+        concerning stock levels for the part:
+
+        - Purchase Orders (incoming stock)
+        - Sales Orders (outgoing stock)
+        - Build Orders (incoming completed stock)
+        - Build Orders (outgoing allocated stock)
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartScheduling'
+          description: ''
+  /api/part/{id}/serial-numbers/:
+    get:
+      operationId: part_serial_numbers_retrieve
+      description: API endpoint for returning extra serial number information about
+        a particular part.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          description: No response body
+  /api/part/category/:
+    get:
+      operationId: part_category_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - in: query
+        name: cascade
+        schema:
+          type: boolean
+        description: Include sub-categories in filtered results
+      - in: query
+        name: depth
+        schema:
+          type: number
+        description: Filter by category depth
+      - in: query
+        name: exclude_tree
+        schema:
+          type: integer
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        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: parent
+        schema:
+          type: integer
+        description: Filter by parent category
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      - in: query
+        name: starred
+        schema:
+          type: boolean
+        description: Filter by starred categories
+      - in: query
+        name: structural
+        schema:
+          type: boolean
+      - in: query
+        name: top_level
+        schema:
+          type: boolean
+        description: Filter by top-level categories
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedCategoryList'
+          description: ''
+    post:
+      operationId: part_category_create
+      description: |-
+        API endpoint for accessing a list of PartCategory objects.
+
+        - GET: Return a list of PartCategory objects
+        - POST: Create a new PartCategory object
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Category'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Category'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Category'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Category'
+          description: ''
+  /api/part/category/{id}/:
+    get:
+      operationId: part_category_retrieve
+      description: Custom get method to pass kwargs.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Category'
+          description: ''
+    put:
+      operationId: part_category_update
+      description: Custom put method to pass kwargs.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Category'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Category'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Category'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Category'
+          description: ''
+    patch:
+      operationId: part_category_partial_update
+      description: Custom patch method to pass kwargs.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedCategory'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedCategory'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedCategory'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Category'
+          description: ''
+    delete:
+      operationId: part_category_destroy
+      description: Custom delete method to pass kwargs.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/part/category/{id}/metadata/:
+    get:
+      operationId: part_category_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: part_category_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: part_category_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/part/category/parameters/:
+    get:
+      operationId: part_category_parameters_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - 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
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedCategoryParameterTemplateList'
+          description: ''
+    post:
+      operationId: part_category_parameters_create
+      description: |-
+        API endpoint for accessing a list of PartCategoryParameterTemplate objects.
+
+        - GET: Return a list of PartCategoryParameterTemplate objects
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CategoryParameterTemplate'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/CategoryParameterTemplate'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/CategoryParameterTemplate'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CategoryParameterTemplate'
+          description: ''
+  /api/part/category/parameters/{id}/:
+    get:
+      operationId: part_category_parameters_retrieve
+      description: Detail endpoint for the PartCategoryParameterTemplate model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CategoryParameterTemplate'
+          description: ''
+    put:
+      operationId: part_category_parameters_update
+      description: Detail endpoint for the PartCategoryParameterTemplate model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CategoryParameterTemplate'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/CategoryParameterTemplate'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/CategoryParameterTemplate'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CategoryParameterTemplate'
+          description: ''
+    patch:
+      operationId: part_category_parameters_partial_update
+      description: Detail endpoint for the PartCategoryParameterTemplate model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedCategoryParameterTemplate'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedCategoryParameterTemplate'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedCategoryParameterTemplate'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CategoryParameterTemplate'
+          description: ''
+    delete:
+      operationId: part_category_parameters_destroy
+      description: Detail endpoint for the PartCategoryParameterTemplate model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/part/category/parameters/{id}/metadata/:
+    get:
+      operationId: part_category_parameters_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: part_category_parameters_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: part_category_parameters_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/part/category/tree/:
+    get:
+      operationId: part_category_tree_list
+      description: API endpoint for accessing a list of PartCategory objects ready
+        for rendering a tree.
+      parameters:
+      - 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
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedCategoryTreeList'
+          description: ''
+  /api/part/change_category/:
+    post:
+      operationId: part_change_category_create
+      description: API endpoint to change the location of multiple parts in bulk.
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PartSetCategory'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PartSetCategory'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PartSetCategory'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartSetCategory'
+          description: ''
+  /api/part/internal-price/:
+    get:
+      operationId: part_internal_price_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - 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: part
+        schema:
+          type: integer
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedPartInternalPriceList'
+          description: ''
+    post:
+      operationId: part_internal_price_create
+      description: API endpoint for list view of PartInternalPriceBreak model.
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PartInternalPrice'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PartInternalPrice'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PartInternalPrice'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartInternalPrice'
+          description: ''
+  /api/part/internal-price/{id}/:
+    get:
+      operationId: part_internal_price_retrieve
+      description: Detail endpoint for PartInternalPriceBreak model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartInternalPrice'
+          description: ''
+    put:
+      operationId: part_internal_price_update
+      description: Detail endpoint for PartInternalPriceBreak model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PartInternalPrice'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PartInternalPrice'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PartInternalPrice'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartInternalPrice'
+          description: ''
+    patch:
+      operationId: part_internal_price_partial_update
+      description: Detail endpoint for PartInternalPriceBreak model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedPartInternalPrice'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedPartInternalPrice'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedPartInternalPrice'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartInternalPrice'
+          description: ''
+    delete:
+      operationId: part_internal_price_destroy
+      description: Detail endpoint for PartInternalPriceBreak model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/part/parameter/:
+    get:
+      operationId: part_parameter_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - 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: part
+        schema:
+          type: integer
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      - in: query
+        name: template
+        schema:
+          type: integer
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedPartParameterList'
+          description: ''
+    post:
+      operationId: part_parameter_create
+      description: |-
+        API endpoint for accessing a list of PartParameter objects.
+
+        - GET: Return list of PartParameter objects
+        - POST: Create a new PartParameter object
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PartParameter'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PartParameter'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PartParameter'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartParameter'
+          description: ''
+  /api/part/parameter/{id}/:
+    get:
+      operationId: part_parameter_retrieve
+      description: API endpoint for detail view of a single PartParameter object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartParameter'
+          description: ''
+    put:
+      operationId: part_parameter_update
+      description: API endpoint for detail view of a single PartParameter object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PartParameter'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PartParameter'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PartParameter'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartParameter'
+          description: ''
+    patch:
+      operationId: part_parameter_partial_update
+      description: API endpoint for detail view of a single PartParameter object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedPartParameter'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedPartParameter'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedPartParameter'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartParameter'
+          description: ''
+    delete:
+      operationId: part_parameter_destroy
+      description: API endpoint for detail view of a single PartParameter object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/part/parameter/{id}/metadata/:
+    get:
+      operationId: part_parameter_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: part_parameter_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: part_parameter_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/part/parameter/template/:
+    get:
+      operationId: part_parameter_template_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - in: query
+        name: category
+        schema:
+          type: integer
+      - in: query
+        name: checkbox
+        schema:
+          type: boolean
+      - in: query
+        name: has_choices
+        schema:
+          type: boolean
+        description: Has Choice
+      - in: query
+        name: has_units
+        schema:
+          type: boolean
+        description: Has Units
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: name
+        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: part
+        schema:
+          type: integer
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      - in: query
+        name: units
+        schema:
+          type: string
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedPartParameterTemplateList'
+          description: ''
+    post:
+      operationId: part_parameter_template_create
+      description: |-
+        API endpoint for accessing a list of PartParameterTemplate objects.
+
+        - GET: Return list of PartParameterTemplate objects
+        - POST: Create a new PartParameterTemplate object
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PartParameterTemplate'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PartParameterTemplate'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PartParameterTemplate'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartParameterTemplate'
+          description: ''
+  /api/part/parameter/template/{id}/:
+    get:
+      operationId: part_parameter_template_retrieve
+      description: API endpoint for accessing the detail view for a PartParameterTemplate
+        object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartParameterTemplate'
+          description: ''
+    put:
+      operationId: part_parameter_template_update
+      description: API endpoint for accessing the detail view for a PartParameterTemplate
+        object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PartParameterTemplate'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PartParameterTemplate'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PartParameterTemplate'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartParameterTemplate'
+          description: ''
+    patch:
+      operationId: part_parameter_template_partial_update
+      description: API endpoint for accessing the detail view for a PartParameterTemplate
+        object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedPartParameterTemplate'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedPartParameterTemplate'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedPartParameterTemplate'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartParameterTemplate'
+          description: ''
+    delete:
+      operationId: part_parameter_template_destroy
+      description: API endpoint for accessing the detail view for a PartParameterTemplate
+        object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/part/parameter/template/{id}/metadata/:
+    get:
+      operationId: part_parameter_template_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: part_parameter_template_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: part_parameter_template_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/part/related/:
+    get:
+      operationId: part_related_list
+      description: API endpoint for accessing a list of PartRelated objects.
+      parameters:
+      - 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
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedPartRelationList'
+          description: ''
+    post:
+      operationId: part_related_create
+      description: API endpoint for accessing a list of PartRelated objects.
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PartRelation'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PartRelation'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PartRelation'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartRelation'
+          description: ''
+  /api/part/related/{id}/:
+    get:
+      operationId: part_related_retrieve
+      description: API endpoint for accessing detail view of a PartRelated object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartRelation'
+          description: ''
+    put:
+      operationId: part_related_update
+      description: API endpoint for accessing detail view of a PartRelated object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PartRelation'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PartRelation'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PartRelation'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartRelation'
+          description: ''
+    patch:
+      operationId: part_related_partial_update
+      description: API endpoint for accessing detail view of a PartRelated object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedPartRelation'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedPartRelation'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedPartRelation'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartRelation'
+          description: ''
+    delete:
+      operationId: part_related_destroy
+      description: API endpoint for accessing detail view of a PartRelated object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/part/related/{id}/metadata/:
+    get:
+      operationId: part_related_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: part_related_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: part_related_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/part/sale-price/:
+    get:
+      operationId: part_sale_price_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - 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: part
+        schema:
+          type: integer
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedPartSalePriceList'
+          description: ''
+    post:
+      operationId: part_sale_price_create
+      description: API endpoint for list view of PartSalePriceBreak model.
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PartSalePrice'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PartSalePrice'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PartSalePrice'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartSalePrice'
+          description: ''
+  /api/part/sale-price/{id}/:
+    get:
+      operationId: part_sale_price_retrieve
+      description: Detail endpoint for PartSellPriceBreak model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartSalePrice'
+          description: ''
+    put:
+      operationId: part_sale_price_update
+      description: Detail endpoint for PartSellPriceBreak model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PartSalePrice'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PartSalePrice'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PartSalePrice'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartSalePrice'
+          description: ''
+    patch:
+      operationId: part_sale_price_partial_update
+      description: Detail endpoint for PartSellPriceBreak model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedPartSalePrice'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedPartSalePrice'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedPartSalePrice'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartSalePrice'
+          description: ''
+    delete:
+      operationId: part_sale_price_destroy
+      description: Detail endpoint for PartSellPriceBreak model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/part/stocktake/:
+    get:
+      operationId: part_stocktake_list
+      description: API endpoint for listing part stocktake information.
+      parameters:
+      - 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: part
+        schema:
+          type: integer
+      - in: query
+        name: user
+        schema:
+          type: integer
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedPartStocktakeList'
+          description: ''
+    post:
+      operationId: part_stocktake_create
+      description: API endpoint for listing part stocktake information.
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PartStocktake'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PartStocktake'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PartStocktake'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartStocktake'
+          description: ''
+  /api/part/stocktake/{id}/:
+    get:
+      operationId: part_stocktake_retrieve
+      description: |-
+        Detail API endpoint for a single PartStocktake instance.
+
+        Note: Only staff (admin) users can access this endpoint.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartStocktake'
+          description: ''
+    put:
+      operationId: part_stocktake_update
+      description: |-
+        Detail API endpoint for a single PartStocktake instance.
+
+        Note: Only staff (admin) users can access this endpoint.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PartStocktake'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PartStocktake'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PartStocktake'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartStocktake'
+          description: ''
+    patch:
+      operationId: part_stocktake_partial_update
+      description: |-
+        Detail API endpoint for a single PartStocktake instance.
+
+        Note: Only staff (admin) users can access this endpoint.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedPartStocktake'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedPartStocktake'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedPartStocktake'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartStocktake'
+          description: ''
+    delete:
+      operationId: part_stocktake_destroy
+      description: |-
+        Detail API endpoint for a single PartStocktake instance.
+
+        Note: Only staff (admin) users can access this endpoint.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/part/stocktake/report/:
+    get:
+      operationId: part_stocktake_report_list
+      description: API endpoint for listing part stocktake report information.
+      parameters:
+      - 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
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedPartStocktakeReportList'
+          description: ''
+  /api/part/stocktake/report/{id}/:
+    get:
+      operationId: part_stocktake_report_retrieve
+      description: API endpoint for detail view of a single PartStocktakeReport object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartStocktakeReport'
+          description: ''
+    put:
+      operationId: part_stocktake_report_update
+      description: API endpoint for detail view of a single PartStocktakeReport object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PartStocktakeReport'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PartStocktakeReport'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PartStocktakeReport'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartStocktakeReport'
+          description: ''
+    patch:
+      operationId: part_stocktake_report_partial_update
+      description: API endpoint for detail view of a single PartStocktakeReport object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedPartStocktakeReport'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedPartStocktakeReport'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedPartStocktakeReport'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartStocktakeReport'
+          description: ''
+    delete:
+      operationId: part_stocktake_report_destroy
+      description: API endpoint for detail view of a single PartStocktakeReport object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/part/stocktake/report/generate/:
+    post:
+      operationId: part_stocktake_report_generate_create
+      description: API endpoint for manually generating a new PartStocktakeReport.
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PartStocktakeReportGenerate'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PartStocktakeReportGenerate'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PartStocktakeReportGenerate'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartStocktakeReportGenerate'
+          description: ''
+  /api/part/test-template/:
+    get:
+      operationId: part_test_template_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - in: query
+        name: enabled
+        schema:
+          type: boolean
+      - in: query
+        name: has_results
+        schema:
+          type: boolean
+        description: Has Results
+      - in: query
+        name: key
+        schema:
+          type: string
+      - 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: part
+        schema:
+          type: integer
+        description: Part
+      - in: query
+        name: required
+        schema:
+          type: boolean
+      - in: query
+        name: requires_attachment
+        schema:
+          type: boolean
+      - in: query
+        name: requires_value
+        schema:
+          type: boolean
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedPartTestTemplateList'
+          description: ''
+    post:
+      operationId: part_test_template_create
+      description: API endpoint for listing (and creating) a PartTestTemplate.
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PartTestTemplate'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PartTestTemplate'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PartTestTemplate'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartTestTemplate'
+          description: ''
+  /api/part/test-template/{id}/:
+    get:
+      operationId: part_test_template_retrieve
+      description: Detail endpoint for PartTestTemplate model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartTestTemplate'
+          description: ''
+    put:
+      operationId: part_test_template_update
+      description: Detail endpoint for PartTestTemplate model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PartTestTemplate'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PartTestTemplate'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PartTestTemplate'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartTestTemplate'
+          description: ''
+    patch:
+      operationId: part_test_template_partial_update
+      description: Detail endpoint for PartTestTemplate model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedPartTestTemplate'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedPartTestTemplate'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedPartTestTemplate'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartTestTemplate'
+          description: ''
+    delete:
+      operationId: part_test_template_destroy
+      description: Detail endpoint for PartTestTemplate model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/part/test-template/{id}/metadata/:
+    get:
+      operationId: part_test_template_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: part_test_template_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: part_test_template_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/part/thumbs/:
+    get:
+      operationId: part_thumbs_list
+      description: API endpoint for retrieving information on available Part thumbnails.
+      parameters:
+      - 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: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedPartThumbList'
+          description: ''
+  /api/part/thumbs/{id}/:
+    get:
+      operationId: part_thumbs_retrieve
+      description: API endpoint for updating Part thumbnails.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - part
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartThumbSerializerUpdate'
+          description: ''
+    put:
+      operationId: part_thumbs_update
+      description: API endpoint for updating Part thumbnails.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PartThumbSerializerUpdate'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PartThumbSerializerUpdate'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PartThumbSerializerUpdate'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartThumbSerializerUpdate'
+          description: ''
+    patch:
+      operationId: part_thumbs_partial_update
+      description: API endpoint for updating Part thumbnails.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^\d+$
+        required: true
+      tags:
+      - part
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedPartThumbSerializerUpdate'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedPartThumbSerializerUpdate'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedPartThumbSerializerUpdate'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PartThumbSerializerUpdate'
+          description: ''
+  /api/plugins/:
+    get:
+      operationId: plugins_list
+      description: |-
+        API endpoint for list of PluginConfig objects.
+
+        - GET: Return a list of all PluginConfig objects
+      parameters:
+      - in: query
+        name: active
+        schema:
+          type: boolean
+      - in: query
+        name: builtin
+        schema:
+          type: boolean
+        description: Builtin
+      - in: query
+        name: installed
+        schema:
+          type: boolean
+        description: Installed
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: mixin
+        schema:
+          type: string
+        description: Mixin
+      - 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: sample
+        schema:
+          type: boolean
+        description: Sample
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - plugins
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedPluginConfigList'
+          description: ''
+  /api/plugins/{plugin}/:
+    get:
+      operationId: plugins_retrieve
+      description: |-
+        API detail endpoint for PluginConfig object.
+
+        get:
+        Return a single PluginConfig object
+
+        post:
+        Update a PluginConfig
+
+        delete:
+        Remove a PluginConfig
+      parameters:
+      - in: path
+        name: plugin
+        schema:
+          type: string
+        required: true
+      tags:
+      - plugins
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PluginConfig'
+          description: ''
+    delete:
+      operationId: plugins_destroy
+      description: |-
+        Handle DELETE request for a PluginConfig instance.
+
+        We only allow plugin deletion if the plugin is not active.
+      parameters:
+      - in: path
+        name: plugin
+        schema:
+          type: string
+        required: true
+      tags:
+      - plugins
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/plugins/{plugin}/activate/:
+    put:
+      operationId: plugins_activate_update
+      description: |-
+        Endpoint for activating a plugin.
+
+        - PATCH: Activate a plugin
+
+        Pass a boolean value for the 'active' field.
+        If not provided, it is assumed to be True,
+        and the plugin will be activated.
+      parameters:
+      - in: path
+        name: plugin
+        schema:
+          type: string
+        required: true
+      tags:
+      - plugins
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PluginActivate'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PluginActivate'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PluginActivate'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PluginActivate'
+          description: ''
+    patch:
+      operationId: plugins_activate_partial_update
+      description: |-
+        Endpoint for activating a plugin.
+
+        - PATCH: Activate a plugin
+
+        Pass a boolean value for the 'active' field.
+        If not provided, it is assumed to be True,
+        and the plugin will be activated.
+      parameters:
+      - in: path
+        name: plugin
+        schema:
+          type: string
+        required: true
+      tags:
+      - plugins
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedPluginActivate'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedPluginActivate'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedPluginActivate'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PluginActivate'
+          description: ''
+  /api/plugins/{plugin}/admin/:
+    get:
+      operationId: plugins_admin_retrieve
+      description: |-
+        Endpoint for viewing admin integration plugin details.
+
+        This endpoint is used to view the available admin integration options for a plugin.
+      parameters:
+      - in: path
+        name: plugin
+        schema:
+          type: string
+        required: true
+      tags:
+      - plugins
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PluginAdminDetail'
+          description: ''
+  /api/plugins/{plugin}/metadata/:
+    get:
+      operationId: plugins_metadata_retrieve
+      description: Metadata API endpoint for the PluginConfig model.
+      parameters:
+      - in: path
+        name: plugin
+        schema:
+          type: string
+        required: true
+      tags:
+      - plugins
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: plugins_metadata_update
+      description: Metadata API endpoint for the PluginConfig model.
+      parameters:
+      - in: path
+        name: plugin
+        schema:
+          type: string
+        required: true
+      tags:
+      - plugins
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: plugins_metadata_partial_update
+      description: Metadata API endpoint for the PluginConfig model.
+      parameters:
+      - in: path
+        name: plugin
+        schema:
+          type: string
+        required: true
+      tags:
+      - plugins
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/plugins/{plugin}/settings/:
+    get:
+      operationId: plugins_settings_list_2
+      description: Get all settings for a plugin config.
+      parameters:
+      - in: path
+        name: plugin
+        schema:
+          type: string
+        required: true
+      tags:
+      - plugins
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/PluginSetting'
+          description: ''
+  /api/plugins/{plugin}/settings/{key}/:
+    get:
+      operationId: plugins_settings_retrieve
+      description: |-
+        Detail endpoint for a plugin-specific setting.
+
+        Note that these cannot be created or deleted via the API
+      parameters:
+      - in: path
+        name: key
+        schema:
+          type: string
+          pattern: ^\w+$
+        required: true
+      - in: path
+        name: plugin
+        schema:
+          type: string
+        required: true
+      tags:
+      - plugins
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PluginSetting'
+          description: ''
+    put:
+      operationId: plugins_settings_update
+      description: |-
+        Detail endpoint for a plugin-specific setting.
+
+        Note that these cannot be created or deleted via the API
+      parameters:
+      - in: path
+        name: key
+        schema:
+          type: string
+          pattern: ^\w+$
+        required: true
+      - in: path
+        name: plugin
+        schema:
+          type: string
+        required: true
+      tags:
+      - plugins
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PluginSetting'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PluginSetting'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PluginSetting'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PluginSetting'
+          description: ''
+    patch:
+      operationId: plugins_settings_partial_update
+      description: |-
+        Detail endpoint for a plugin-specific setting.
+
+        Note that these cannot be created or deleted via the API
+      parameters:
+      - in: path
+        name: key
+        schema:
+          type: string
+          pattern: ^\w+$
+        required: true
+      - in: path
+        name: plugin
+        schema:
+          type: string
+        required: true
+      tags:
+      - plugins
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedPluginSetting'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedPluginSetting'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedPluginSetting'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PluginSetting'
+          description: ''
+  /api/plugins/{plugin}/uninstall/:
+    put:
+      operationId: plugins_uninstall_update
+      description: Endpoint for uninstalling a single plugin.
+      parameters:
+      - in: path
+        name: plugin
+        schema:
+          type: string
+        required: true
+      tags:
+      - plugins
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PluginUninstall'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PluginUninstall'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PluginUninstall'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PluginUninstall'
+          description: ''
+    patch:
+      operationId: plugins_uninstall_partial_update
+      description: Endpoint for uninstalling a single plugin.
+      parameters:
+      - in: path
+        name: plugin
+        schema:
+          type: string
+        required: true
+      tags:
+      - plugins
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedPluginUninstall'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedPluginUninstall'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedPluginUninstall'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PluginUninstall'
+          description: ''
+  /api/plugins/install/:
+    post:
+      operationId: plugins_install_create
+      description: Endpoint for installing a new plugin.
+      tags:
+      - plugins
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PluginConfigInstall'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PluginConfigInstall'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PluginConfigInstall'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PluginConfigInstall'
+          description: ''
+  /api/plugins/reload/:
+    post:
+      operationId: plugins_reload_create
+      description: Endpoint for reloading all plugins.
+      tags:
+      - plugins
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PluginReload'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PluginReload'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PluginReload'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PluginReload'
+          description: ''
+  /api/plugins/settings/:
+    get:
+      operationId: plugins_settings_list
+      description: |-
+        List endpoint for all plugin related settings.
+
+        - read only
+        - only accessible by staff users
+      parameters:
+      - 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
+      - in: query
+        name: plugin__active
+        schema:
+          type: boolean
+      - in: query
+        name: plugin__key
+        schema:
+          type: string
+      tags:
+      - plugins
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedPluginSettingList'
+          description: ''
+  /api/plugins/status/:
+    get:
+      operationId: plugins_status_retrieve
+      description: Show plugin registry status information.
+      tags:
+      - plugins
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PluginRegistryStatus'
+          description: ''
+  /api/plugins/ui/features/{feature}/:
+    get:
+      operationId: plugins_ui_features_list
+      description: Show available plugin ui features.
+      parameters:
+      - in: path
+        name: feature
+        schema:
+          type: string
+        required: true
+      tags:
+      - plugins
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/PluginUIFeature'
+          description: ''
+  /api/plugins/ui/panels/:
+    get:
+      operationId: plugins_ui_panels_list
+      description: Show available plugin panels.
+      tags:
+      - plugins
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/PluginPanel'
+          description: ''
+  /api/project-code/:
+    get:
+      operationId: project_code_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - 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
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - project-code
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedProjectCodeList'
+          description: ''
+    post:
+      operationId: project_code_create
+      description: List view for all project codes.
+      tags:
+      - project-code
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ProjectCode'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/ProjectCode'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ProjectCode'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ProjectCode'
+          description: ''
+  /api/project-code/{id}/:
+    get:
+      operationId: project_code_retrieve
+      description: Detail view for a particular project code.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - project-code
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ProjectCode'
+          description: ''
+    put:
+      operationId: project_code_update
+      description: Detail view for a particular project code.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - project-code
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ProjectCode'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/ProjectCode'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ProjectCode'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ProjectCode'
+          description: ''
+    patch:
+      operationId: project_code_partial_update
+      description: Detail view for a particular project code.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - project-code
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedProjectCode'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedProjectCode'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedProjectCode'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ProjectCode'
+          description: ''
+    delete:
+      operationId: project_code_destroy
+      description: Detail view for a particular project code.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - project-code
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/project-code/{id}/metadata/:
+    get:
+      operationId: project_code_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - project-code
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: project_code_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - project-code
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: project_code_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - project-code
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/report/asset/:
+    get:
+      operationId: report_asset_list
+      description: API endpoint for listing ReportAsset objects.
+      parameters:
+      - 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
+      tags:
+      - report
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedReportAssetList'
+          description: ''
+    post:
+      operationId: report_asset_create
+      description: API endpoint for listing ReportAsset objects.
+      tags:
+      - report
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ReportAsset'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/ReportAsset'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ReportAsset'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ReportAsset'
+          description: ''
+  /api/report/asset/{id}/:
+    get:
+      operationId: report_asset_retrieve
+      description: API endpoint for a single ReportAsset object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - report
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ReportAsset'
+          description: ''
+    put:
+      operationId: report_asset_update
+      description: API endpoint for a single ReportAsset object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - report
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ReportAsset'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/ReportAsset'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ReportAsset'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ReportAsset'
+          description: ''
+    patch:
+      operationId: report_asset_partial_update
+      description: API endpoint for a single ReportAsset object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - report
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedReportAsset'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedReportAsset'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedReportAsset'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ReportAsset'
+          description: ''
+    delete:
+      operationId: report_asset_destroy
+      description: API endpoint for a single ReportAsset object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - report
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/report/output/:
+    get:
+      operationId: report_output_list
+      description: List endpoint for ReportOutput objects.
+      parameters:
+      - 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
+      tags:
+      - report
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedReportOutputList'
+          description: ''
+    delete:
+      operationId: report_output_destroy
+      description: |-
+        Perform a DELETE operation against this list endpoint.
+
+        We expect a list of primary-key (ID) values to be supplied as a JSON object, e.g.
+        {
+            items: [4, 8, 15, 16, 23, 42]
+        }
+      tags:
+      - report
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/report/print/:
+    post:
+      operationId: report_print_create
+      description: POST action for printing a report.
+      tags:
+      - report
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ReportPrint'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/ReportPrint'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ReportPrint'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ReportPrint'
+          description: ''
+  /api/report/snippet/:
+    get:
+      operationId: report_snippet_list
+      description: API endpoint for listing ReportSnippet objects.
+      parameters:
+      - 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
+      tags:
+      - report
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedReportSnippetList'
+          description: ''
+    post:
+      operationId: report_snippet_create
+      description: API endpoint for listing ReportSnippet objects.
+      tags:
+      - report
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ReportSnippet'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/ReportSnippet'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ReportSnippet'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ReportSnippet'
+          description: ''
+  /api/report/snippet/{id}/:
+    get:
+      operationId: report_snippet_retrieve
+      description: API endpoint for a single ReportSnippet object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - report
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ReportSnippet'
+          description: ''
+    put:
+      operationId: report_snippet_update
+      description: API endpoint for a single ReportSnippet object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - report
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ReportSnippet'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/ReportSnippet'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ReportSnippet'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ReportSnippet'
+          description: ''
+    patch:
+      operationId: report_snippet_partial_update
+      description: API endpoint for a single ReportSnippet object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - report
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedReportSnippet'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedReportSnippet'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedReportSnippet'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ReportSnippet'
+          description: ''
+    delete:
+      operationId: report_snippet_destroy
+      description: API endpoint for a single ReportSnippet object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - report
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/report/template/:
+    get:
+      operationId: report_template_list
+      description: API endpoint for viewing list of ReportTemplate objects.
+      parameters:
+      - in: query
+        name: enabled
+        schema:
+          type: boolean
+      - in: query
+        name: items
+        schema:
+          type: string
+        description: Items
+      - in: query
+        name: landscape
+        schema:
+          type: boolean
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: model_type
+        schema:
+          type: string
+          enum:
+          - build
+          - buildline
+          - part
+          - purchaseorder
+          - returnorder
+          - salesorder
+          - salesordershipment
+          - stockitem
+          - stocklocation
+        description: |-
+          Model Type
+
+          * `build` - Build Order
+          * `buildline` - Build Order Line Item
+          * `purchaseorder` - Purchase Order
+          * `salesorder` - Sales Order
+          * `salesordershipment` - Sales Order Shipment
+          * `returnorder` - Return Order
+          * `part` - Part
+          * `stockitem` - Stock Item
+          * `stocklocation` - Stock Location
+      - name: offset
+        required: false
+        in: query
+        description: The initial index from which to return the results.
+        schema:
+          type: integer
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - report
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedReportTemplateList'
+          description: ''
+    post:
+      operationId: report_template_create
+      description: API endpoint for viewing list of ReportTemplate objects.
+      tags:
+      - report
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ReportTemplate'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/ReportTemplate'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ReportTemplate'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ReportTemplate'
+          description: ''
+  /api/report/template/{id}/:
+    get:
+      operationId: report_template_retrieve
+      description: Detail API endpoint for report template model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - report
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ReportTemplate'
+          description: ''
+    put:
+      operationId: report_template_update
+      description: Detail API endpoint for report template model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - report
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ReportTemplate'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/ReportTemplate'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ReportTemplate'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ReportTemplate'
+          description: ''
+    patch:
+      operationId: report_template_partial_update
+      description: Detail API endpoint for report template model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - report
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedReportTemplate'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedReportTemplate'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedReportTemplate'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ReportTemplate'
+          description: ''
+    delete:
+      operationId: report_template_destroy
+      description: Detail API endpoint for report template model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - report
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/report/template/{id}/metadata/:
+    get:
+      operationId: report_template_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - report
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: report_template_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - report
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: report_template_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - report
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/search/:
+    post:
+      operationId: search_create
+      description: Perform search query against available models.
+      tags:
+      - search
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/APISearchView'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/APISearchView'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/APISearchView'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/APISearchView'
+          description: ''
+  /api/settings/global/:
+    get:
+      operationId: settings_global_list
+      description: API endpoint for accessing a list of global settings objects.
+      parameters:
+      - 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
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - settings
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedGlobalSettingsList'
+          description: ''
+  /api/settings/global/{key}/:
+    get:
+      operationId: settings_global_retrieve
+      description: |-
+        Detail view for an individual "global setting" object.
+
+        - User must have 'staff' status to view / edit
+      parameters:
+      - in: path
+        name: key
+        schema:
+          type: string
+          pattern: ^\w+$
+        required: true
+      tags:
+      - settings
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GlobalSettings'
+          description: ''
+    put:
+      operationId: settings_global_update
+      description: |-
+        Detail view for an individual "global setting" object.
+
+        - User must have 'staff' status to view / edit
+      parameters:
+      - in: path
+        name: key
+        schema:
+          type: string
+          pattern: ^\w+$
+        required: true
+      tags:
+      - settings
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/GlobalSettings'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/GlobalSettings'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/GlobalSettings'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GlobalSettings'
+          description: ''
+    patch:
+      operationId: settings_global_partial_update
+      description: |-
+        Detail view for an individual "global setting" object.
+
+        - User must have 'staff' status to view / edit
+      parameters:
+      - in: path
+        name: key
+        schema:
+          type: string
+          pattern: ^\w+$
+        required: true
+      tags:
+      - settings
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedGlobalSettings'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedGlobalSettings'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedGlobalSettings'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GlobalSettings'
+          description: ''
+  /api/settings/notification/:
+    get:
+      operationId: settings_notification_list
+      description: API endpoint for accessing a list of notification user settings
+        objects.
+      parameters:
+      - 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
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - settings
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedNotificationUserSettingList'
+          description: ''
+  /api/settings/notification/{id}/:
+    get:
+      operationId: settings_notification_retrieve
+      description: |-
+        Detail view for an individual "notification user setting" object.
+
+        - User can only view / edit settings their own settings objects
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - settings
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/NotificationUserSetting'
+          description: ''
+    put:
+      operationId: settings_notification_update
+      description: |-
+        Detail view for an individual "notification user setting" object.
+
+        - User can only view / edit settings their own settings objects
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - settings
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/NotificationUserSetting'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/NotificationUserSetting'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/NotificationUserSetting'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/NotificationUserSetting'
+          description: ''
+    patch:
+      operationId: settings_notification_partial_update
+      description: |-
+        Detail view for an individual "notification user setting" object.
+
+        - User can only view / edit settings their own settings objects
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - settings
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedNotificationUserSetting'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedNotificationUserSetting'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedNotificationUserSetting'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/NotificationUserSetting'
+          description: ''
+  /api/settings/user/:
+    get:
+      operationId: settings_user_list
+      description: API endpoint for accessing a list of user settings objects.
+      parameters:
+      - 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
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - settings
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedUserSettingsList'
+          description: ''
+  /api/settings/user/{key}/:
+    get:
+      operationId: settings_user_retrieve
+      description: |-
+        Detail view for an individual "user setting" object.
+
+        - User can only view / edit settings their own settings objects
+      parameters:
+      - in: path
+        name: key
+        schema:
+          type: string
+          pattern: ^\w+$
+        required: true
+      tags:
+      - settings
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserSettings'
+          description: ''
+    put:
+      operationId: settings_user_update
+      description: |-
+        Detail view for an individual "user setting" object.
+
+        - User can only view / edit settings their own settings objects
+      parameters:
+      - in: path
+        name: key
+        schema:
+          type: string
+          pattern: ^\w+$
+        required: true
+      tags:
+      - settings
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/UserSettings'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/UserSettings'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/UserSettings'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserSettings'
+          description: ''
+    patch:
+      operationId: settings_user_partial_update
+      description: |-
+        Detail view for an individual "user setting" object.
+
+        - User can only view / edit settings their own settings objects
+      parameters:
+      - in: path
+        name: key
+        schema:
+          type: string
+          pattern: ^\w+$
+        required: true
+      tags:
+      - settings
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedUserSettings'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedUserSettings'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedUserSettings'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserSettings'
+          description: ''
+  /api/stock/:
+    get:
+      operationId: stock_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - in: query
+        name: IPN
+        schema:
+          type: string
+        description: Part IPN (case insensitive)
+      - in: query
+        name: IPN_contains
+        schema:
+          type: string
+        description: Part IPN contains (case insensitive)
+      - in: query
+        name: IPN_regex
+        schema:
+          type: string
+        description: Part IPN (regex)
+      - in: query
+        name: active
+        schema:
+          type: boolean
+        description: Active
+      - in: query
+        name: allocated
+        schema:
+          type: boolean
+        description: Is Allocated
+      - in: query
+        name: ancestor
+        schema:
+          type: integer
+      - in: query
+        name: assembly
+        schema:
+          type: boolean
+        description: Assembly
+      - in: query
+        name: available
+        schema:
+          type: boolean
+        description: Available
+      - in: query
+        name: batch
+        schema:
+          type: string
+        description: Batch code filter (case insensitive)
+      - in: query
+        name: batch_regex
+        schema:
+          type: string
+        description: Batch code filter (regex)
+      - in: query
+        name: belongs_to
+        schema:
+          type: integer
+      - in: query
+        name: bom_item
+        schema:
+          type: integer
+      - in: query
+        name: build
+        schema:
+          type: integer
+      - in: query
+        name: category
+        schema:
+          type: integer
+      - in: query
+        name: company
+        schema:
+          type: integer
+      - in: query
+        name: consumed_by
+        schema:
+          type: integer
+      - in: query
+        name: customer
+        schema:
+          type: integer
+      - in: query
+        name: depleted
+        schema:
+          type: boolean
+        description: Depleted
+      - in: query
+        name: expired
+        schema:
+          type: boolean
+        description: Expired
+      - in: query
+        name: expiry_date_gte
+        schema:
+          type: string
+          format: date
+        description: Expiry date after
+      - in: query
+        name: expiry_date_lte
+        schema:
+          type: string
+          format: date
+        description: Expiry date before
+      - in: query
+        name: external
+        schema:
+          type: boolean
+        description: External Location
+      - in: query
+        name: has_batch
+        schema:
+          type: boolean
+        description: Has batch code
+      - in: query
+        name: has_child_items
+        schema:
+          type: boolean
+        description: Has child items
+      - in: query
+        name: has_installed_items
+        schema:
+          type: boolean
+        description: Has installed items
+      - in: query
+        name: has_purchase_price
+        schema:
+          type: boolean
+        description: Has purchase price
+      - in: query
+        name: in_stock
+        schema:
+          type: boolean
+        description: In Stock
+      - in: query
+        name: installed
+        schema:
+          type: boolean
+        description: Installed in other stock item
+      - in: query
+        name: is_building
+        schema:
+          type: boolean
+        description: In production
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: manufacturer
+        schema:
+          type: integer
+      - in: query
+        name: max_stock
+        schema:
+          type: number
+        description: Maximum stock
+      - in: query
+        name: min_stock
+        schema:
+          type: number
+        description: Minimum stock
+      - in: query
+        name: name
+        schema:
+          type: string
+        description: Part name (case insensitive)
+      - in: query
+        name: name_contains
+        schema:
+          type: string
+        description: Part name contains (case insensitive)
+      - in: query
+        name: name_regex
+        schema:
+          type: string
+        description: Part name (regex)
+      - 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_tree
+        schema:
+          type: integer
+      - in: query
+        name: purchase_order
+        schema:
+          type: integer
+      - in: query
+        name: salable
+        schema:
+          type: boolean
+        description: Salable
+      - in: query
+        name: sales_order
+        schema:
+          type: integer
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      - in: query
+        name: sent_to_customer
+        schema:
+          type: boolean
+        description: Sent to customer
+      - in: query
+        name: serial
+        schema:
+          type: string
+        description: Serial number
+      - in: query
+        name: serial_gte
+        schema:
+          type: integer
+        description: Serial number GTE
+      - in: query
+        name: serial_lte
+        schema:
+          type: integer
+        description: Serial number LTE
+      - in: query
+        name: serialized
+        schema:
+          type: boolean
+        description: Has serial number
+      - in: query
+        name: stale
+        schema:
+          type: boolean
+        description: Stale
+      - in: query
+        name: status
+        schema:
+          type: integer
+        description: Status Code
+      - in: query
+        name: supplier
+        schema:
+          type: integer
+        description: Supplier
+      - in: query
+        name: supplier_part
+        schema:
+          type: integer
+      - in: query
+        name: tags__name
+        schema:
+          type: string
+      - in: query
+        name: tags__slug
+        schema:
+          type: string
+      - in: query
+        name: tracked
+        schema:
+          type: boolean
+        description: Tracked
+      - in: query
+        name: updated_after
+        schema:
+          type: string
+          format: date
+        description: Updated after
+      - in: query
+        name: updated_before
+        schema:
+          type: string
+          format: date
+        description: Updated before
+      tags:
+      - stock
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedStockItemList'
+          description: ''
+    post:
+      operationId: stock_create
+      description: |-
+        API endpoint for list view of Stock objects.
+
+        - GET: Return a list of all StockItem objects (with optional query filters)
+        - POST: Create a new StockItem
+        - DELETE: Delete multiple StockItem objects
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/StockItem'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/StockItem'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/StockItem'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/StockItem'
+          description: ''
+    delete:
+      operationId: stock_destroy
+      description: |-
+        Perform a DELETE operation against this list endpoint.
+
+        We expect a list of primary-key (ID) values to be supplied as a JSON object, e.g.
+        {
+            items: [4, 8, 15, 16, 23, 42]
+        }
+      tags:
+      - stock
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/stock/{id}/:
+    get:
+      operationId: stock_retrieve
+      description: |-
+        API detail endpoint for Stock object.
+
+        get:
+        Return a single StockItem object
+
+        post:
+        Update a StockItem
+
+        delete:
+        Remove a StockItem
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/StockItem'
+          description: ''
+    put:
+      operationId: stock_update
+      description: |-
+        API detail endpoint for Stock object.
+
+        get:
+        Return a single StockItem object
+
+        post:
+        Update a StockItem
+
+        delete:
+        Remove a StockItem
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/StockItem'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/StockItem'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/StockItem'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/StockItem'
+          description: ''
+    patch:
+      operationId: stock_partial_update
+      description: |-
+        API detail endpoint for Stock object.
+
+        get:
+        Return a single StockItem object
+
+        post:
+        Update a StockItem
+
+        delete:
+        Remove a StockItem
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedStockItem'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedStockItem'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedStockItem'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/StockItem'
+          description: ''
+    delete:
+      operationId: stock_destroy_2
+      description: |-
+        API detail endpoint for Stock object.
+
+        get:
+        Return a single StockItem object
+
+        post:
+        Update a StockItem
+
+        delete:
+        Remove a StockItem
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/stock/{id}/convert/:
+    post:
+      operationId: stock_convert_create
+      description: API endpoint for converting a stock item to a variant part.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ConvertStockItem'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/ConvertStockItem'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ConvertStockItem'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConvertStockItem'
+          description: ''
+  /api/stock/{id}/install/:
+    post:
+      operationId: stock_install_create
+      description: |-
+        API endpoint for installing a particular stock item into this stock item.
+
+        - stock_item.part must be in the BOM for this part
+        - stock_item must currently be "in stock"
+        - stock_item must be serialized (and not belong to another item)
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/InstallStockItem'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/InstallStockItem'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/InstallStockItem'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/InstallStockItem'
+          description: ''
+  /api/stock/{id}/metadata/:
+    get:
+      operationId: stock_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: stock_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: stock_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/stock/{id}/return/:
+    post:
+      operationId: stock_return_create
+      description: API endpoint for returning a stock item from a customer.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ReturnStockItem'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/ReturnStockItem'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ReturnStockItem'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ReturnStockItem'
+          description: ''
+  /api/stock/{id}/serialize/:
+    post:
+      operationId: stock_serialize_create
+      description: API endpoint for serializing a stock item.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/SerializeStockItem'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/SerializeStockItem'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/SerializeStockItem'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SerializeStockItem'
+          description: ''
+  /api/stock/{id}/uninstall/:
+    post:
+      operationId: stock_uninstall_create
+      description: API endpoint for removing (uninstalling) items from this item.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/UninstallStockItem'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/UninstallStockItem'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/UninstallStockItem'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UninstallStockItem'
+          description: ''
+  /api/stock/add/:
+    post:
+      operationId: stock_add_create
+      description: Endpoint for adding a quantity of stock to an existing StockItem.
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/StockAdd'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/StockAdd'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/StockAdd'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/StockAdd'
+          description: ''
+  /api/stock/assign/:
+    post:
+      operationId: stock_assign_create
+      description: API endpoint for assigning stock to a particular customer.
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/StockAssignment'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/StockAssignment'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/StockAssignment'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/StockAssignment'
+          description: ''
+  /api/stock/change_status/:
+    post:
+      operationId: stock_change_status_create
+      description: API endpoint to change the status code of multiple StockItem objects.
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/StockChangeStatus'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/StockChangeStatus'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/StockChangeStatus'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/StockChangeStatus'
+          description: ''
+  /api/stock/count/:
+    post:
+      operationId: stock_count_create
+      description: Endpoint for counting stock (performing a stocktake).
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/StockCount'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/StockCount'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/StockCount'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/StockCount'
+          description: ''
+  /api/stock/location/:
+    get:
+      operationId: stock_location_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - in: query
+        name: cascade
+        schema:
+          type: boolean
+        description: Include sub-locations in filtered results
+      - in: query
+        name: depth
+        schema:
+          type: number
+        description: Filter by location depth
+      - in: query
+        name: external
+        schema:
+          type: boolean
+      - in: query
+        name: has_location_type
+        schema:
+          type: boolean
+        description: has_location_type
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: location_type
+        schema:
+          type: integer
+      - in: query
+        name: name
+        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: parent
+        schema:
+          type: integer
+        description: Filter by parent location
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      - in: query
+        name: structural
+        schema:
+          type: boolean
+      - in: query
+        name: top_level
+        schema:
+          type: boolean
+        description: Filter by top-level locations
+      tags:
+      - stock
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedLocationList'
+          description: ''
+    post:
+      operationId: stock_location_create
+      description: |-
+        API endpoint for list view of StockLocation objects.
+
+        - GET: Return list of StockLocation objects
+        - POST: Create a new StockLocation
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Location'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Location'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Location'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Location'
+          description: ''
+  /api/stock/location-type/:
+    get:
+      operationId: stock_location_type_list
+      description: |-
+        API endpoint for a list of StockLocationType objects.
+
+        - GET: Return a list of all StockLocationType objects
+        - POST: Create a StockLocationType
+      parameters:
+      - 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
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - stock
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedStockLocationTypeList'
+          description: ''
+    post:
+      operationId: stock_location_type_create
+      description: |-
+        API endpoint for a list of StockLocationType objects.
+
+        - GET: Return a list of all StockLocationType objects
+        - POST: Create a StockLocationType
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/StockLocationType'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/StockLocationType'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/StockLocationType'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/StockLocationType'
+          description: ''
+  /api/stock/location-type/{id}/:
+    get:
+      operationId: stock_location_type_retrieve
+      description: |-
+        API detail endpoint for a StockLocationType object.
+
+        - GET: return a single StockLocationType
+        - PUT: update a StockLocationType
+        - PATCH: partial update a StockLocationType
+        - DELETE: delete a StockLocationType
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/StockLocationType'
+          description: ''
+    put:
+      operationId: stock_location_type_update
+      description: |-
+        API detail endpoint for a StockLocationType object.
+
+        - GET: return a single StockLocationType
+        - PUT: update a StockLocationType
+        - PATCH: partial update a StockLocationType
+        - DELETE: delete a StockLocationType
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/StockLocationType'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/StockLocationType'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/StockLocationType'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/StockLocationType'
+          description: ''
+    patch:
+      operationId: stock_location_type_partial_update
+      description: |-
+        API detail endpoint for a StockLocationType object.
+
+        - GET: return a single StockLocationType
+        - PUT: update a StockLocationType
+        - PATCH: partial update a StockLocationType
+        - DELETE: delete a StockLocationType
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedStockLocationType'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedStockLocationType'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedStockLocationType'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/StockLocationType'
+          description: ''
+    delete:
+      operationId: stock_location_type_destroy
+      description: |-
+        API detail endpoint for a StockLocationType object.
+
+        - GET: return a single StockLocationType
+        - PUT: update a StockLocationType
+        - PATCH: partial update a StockLocationType
+        - DELETE: delete a StockLocationType
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/stock/location-type/{id}/metadata/:
+    get:
+      operationId: stock_location_type_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: stock_location_type_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: stock_location_type_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/stock/location/{id}/:
+    get:
+      operationId: stock_location_retrieve
+      description: Custom get method to pass kwargs.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Location'
+          description: ''
+    put:
+      operationId: stock_location_update
+      description: Custom put method to pass kwargs.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Location'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Location'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Location'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Location'
+          description: ''
+    patch:
+      operationId: stock_location_partial_update
+      description: Custom patch method to pass kwargs.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedLocation'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedLocation'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedLocation'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Location'
+          description: ''
+    delete:
+      operationId: stock_location_destroy
+      description: Custom delete method to pass kwargs.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/stock/location/{id}/metadata/:
+    get:
+      operationId: stock_location_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: stock_location_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: stock_location_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/stock/location/tree/:
+    get:
+      operationId: stock_location_tree_list
+      description: API endpoint for accessing a list of StockLocation objects, ready
+        for rendering as a tree.
+      parameters:
+      - 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
+      tags:
+      - stock
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedLocationTreeList'
+          description: ''
+  /api/stock/merge/:
+    post:
+      operationId: stock_merge_create
+      description: API endpoint for merging multiple stock items.
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/StockMerge'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/StockMerge'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/StockMerge'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/StockMerge'
+          description: ''
+  /api/stock/remove/:
+    post:
+      operationId: stock_remove_create
+      description: Endpoint for removing a quantity of stock from an existing StockItem.
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/StockRemove'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/StockRemove'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/StockRemove'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/StockRemove'
+          description: ''
+  /api/stock/status/:
+    get:
+      operationId: stock_status_retrieve
+      description: Retrieve information about a specific status code
+      tags:
+      - stock
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          description: Status code information
+        '400':
+          description: Invalid request
+  /api/stock/test/:
+    get:
+      operationId: stock_test_list
+      description: API endpoint for listing (and creating) a StockItemTestResult object.
+      parameters:
+      - in: query
+        name: build
+        schema:
+          type: integer
+        description: Build
+      - in: query
+        name: enabled
+        schema:
+          type: boolean
+        description: Enabled
+      - 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: part
+        schema:
+          type: integer
+        description: Part
+      - in: query
+        name: required
+        schema:
+          type: boolean
+        description: Required
+      - in: query
+        name: result
+        schema:
+          type: boolean
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      - in: query
+        name: template
+        schema:
+          type: integer
+      - in: query
+        name: test
+        schema:
+          type: string
+        description: Test name (case insensitive)
+      - in: query
+        name: user
+        schema:
+          type: integer
+      - in: query
+        name: value
+        schema:
+          type: string
+      tags:
+      - stock
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedStockItemTestResultList'
+          description: ''
+    post:
+      operationId: stock_test_create
+      description: API endpoint for listing (and creating) a StockItemTestResult object.
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/StockItemTestResult'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/StockItemTestResult'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/StockItemTestResult'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/StockItemTestResult'
+          description: ''
+    delete:
+      operationId: stock_test_destroy
+      description: |-
+        Perform a DELETE operation against this list endpoint.
+
+        We expect a list of primary-key (ID) values to be supplied as a JSON object, e.g.
+        {
+            items: [4, 8, 15, 16, 23, 42]
+        }
+      tags:
+      - stock
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/stock/test/{id}/:
+    get:
+      operationId: stock_test_retrieve
+      description: Detail endpoint for StockItemTestResult.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/StockItemTestResult'
+          description: ''
+    put:
+      operationId: stock_test_update
+      description: Detail endpoint for StockItemTestResult.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/StockItemTestResult'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/StockItemTestResult'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/StockItemTestResult'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/StockItemTestResult'
+          description: ''
+    patch:
+      operationId: stock_test_partial_update
+      description: Detail endpoint for StockItemTestResult.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedStockItemTestResult'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedStockItemTestResult'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedStockItemTestResult'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/StockItemTestResult'
+          description: ''
+    delete:
+      operationId: stock_test_destroy_2
+      description: Detail endpoint for StockItemTestResult.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/stock/test/{id}/metadata/:
+    get:
+      operationId: stock_test_metadata_retrieve
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    put:
+      operationId: stock_test_metadata_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Metadata'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+    patch:
+      operationId: stock_test_metadata_partial_update
+      description: Generic API endpoint for reading and editing metadata for a model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMetadata'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Metadata'
+          description: ''
+  /api/stock/track/:
+    get:
+      operationId: stock_track_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - in: query
+        name: item
+        schema:
+          type: integer
+      - 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
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      - in: query
+        name: user
+        schema:
+          type: integer
+      tags:
+      - stock
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedStockTrackingList'
+          description: ''
+  /api/stock/track/{id}/:
+    get:
+      operationId: stock_track_retrieve
+      description: Detail API endpoint for StockItemTracking model.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - stock
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/StockTracking'
+          description: ''
+  /api/stock/track/status/:
+    get:
+      operationId: stock_track_status_retrieve
+      description: Retrieve information about a specific status code
+      tags:
+      - stock
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          description: Status code information
+        '400':
+          description: Invalid request
+  /api/stock/transfer/:
+    post:
+      operationId: stock_transfer_create
+      description: API endpoint for performing stock movements.
+      tags:
+      - stock
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/StockTransfer'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/StockTransfer'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/StockTransfer'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/StockTransfer'
+          description: ''
+  /api/test-statistics/by-build/{id}/:
+    get:
+      operationId: test_statistics_by_build_retrieve
+      description: Return test execution count matrix broken down by test result.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - test-statistics
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/TestStatistics'
+          description: ''
+  /api/test-statistics/by-part/{id}/:
+    get:
+      operationId: test_statistics_by_part_retrieve
+      description: Return test execution count matrix broken down by test result.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - test-statistics
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/TestStatistics'
+          description: ''
+  /api/units/:
+    get:
+      operationId: units_list
+      description: Override the 'get' method to check for the export query parameter.
+      parameters:
+      - 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
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - units
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedCustomUnitList'
+          description: ''
+    post:
+      operationId: units_create
+      description: List view for custom units.
+      tags:
+      - units
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CustomUnit'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/CustomUnit'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/CustomUnit'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CustomUnit'
+          description: ''
+  /api/units/{id}/:
+    get:
+      operationId: units_retrieve
+      description: Detail view for a particular custom unit.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - units
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CustomUnit'
+          description: ''
+    put:
+      operationId: units_update
+      description: Detail view for a particular custom unit.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - units
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CustomUnit'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/CustomUnit'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/CustomUnit'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CustomUnit'
+          description: ''
+    patch:
+      operationId: units_partial_update
+      description: Detail view for a particular custom unit.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - units
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedCustomUnit'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedCustomUnit'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedCustomUnit'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CustomUnit'
+          description: ''
+    delete:
+      operationId: units_destroy
+      description: Detail view for a particular custom unit.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - units
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/units/all/:
+    get:
+      operationId: units_all_list
+      description: Return a list of all available units.
+      parameters:
+      - 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
+      tags:
+      - units
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedAllUnitListResponseList'
+          description: ''
+  /api/user/:
+    get:
+      operationId: user_list
+      description: List endpoint for detail on all users.
+      parameters:
+      - in: query
+        name: is_active
+        schema:
+          type: boolean
+      - in: query
+        name: is_staff
+        schema:
+          type: boolean
+      - in: query
+        name: is_superuser
+        schema:
+          type: boolean
+      - 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
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - user
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedUserCreateList'
+          description: ''
+    post:
+      operationId: user_create
+      description: List endpoint for detail on all users.
+      tags:
+      - user
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/UserCreate'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/UserCreate'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/UserCreate'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserCreate'
+          description: ''
+  /api/user/{id}/:
+    get:
+      operationId: user_retrieve
+      description: Detail endpoint for a single user.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^[0-9]+$
+        required: true
+      tags:
+      - user
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ExtendedUser'
+          description: ''
+    put:
+      operationId: user_update
+      description: Detail endpoint for a single user.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^[0-9]+$
+        required: true
+      tags:
+      - user
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ExtendedUser'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/ExtendedUser'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/ExtendedUser'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ExtendedUser'
+          description: ''
+    patch:
+      operationId: user_partial_update
+      description: Detail endpoint for a single user.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^[0-9]+$
+        required: true
+      tags:
+      - user
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedExtendedUser'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedExtendedUser'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedExtendedUser'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ExtendedUser'
+          description: ''
+    delete:
+      operationId: user_destroy
+      description: Detail endpoint for a single user.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^[0-9]+$
+        required: true
+      tags:
+      - user
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/user/group/:
+    get:
+      operationId: user_group_list
+      description: List endpoint for all auth groups.
+      parameters:
+      - 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
+      - name: search
+        required: false
+        in: query
+        description: A search term.
+        schema:
+          type: string
+      tags:
+      - user
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedGroupList'
+          description: ''
+    post:
+      operationId: user_group_create
+      description: List endpoint for all auth groups.
+      tags:
+      - user
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Group'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Group'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Group'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Group'
+          description: ''
+  /api/user/group/{id}/:
+    get:
+      operationId: user_group_retrieve
+      description: Detail endpoint for a particular auth group.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^[0-9]+$
+        required: true
+      tags:
+      - user
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Group'
+          description: ''
+    put:
+      operationId: user_group_update
+      description: Detail endpoint for a particular auth group.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^[0-9]+$
+        required: true
+      tags:
+      - user
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Group'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Group'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Group'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Group'
+          description: ''
+    patch:
+      operationId: user_group_partial_update
+      description: Detail endpoint for a particular auth group.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^[0-9]+$
+        required: true
+      tags:
+      - user
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedGroup'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedGroup'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedGroup'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Group'
+          description: ''
+    delete:
+      operationId: user_group_destroy
+      description: Detail endpoint for a particular auth group.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: string
+          pattern: ^[0-9]+$
+        required: true
+      tags:
+      - user
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/user/me/:
+    get:
+      operationId: user_me_retrieve
+      description: Detail endpoint for current user.
+      tags:
+      - user
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/MeUser'
+          description: ''
+    put:
+      operationId: user_me_update
+      description: Detail endpoint for current user.
+      tags:
+      - user
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/MeUser'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/MeUser'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/MeUser'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/MeUser'
+          description: ''
+    patch:
+      operationId: user_me_partial_update
+      description: Detail endpoint for current user.
+      tags:
+      - user
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedMeUser'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedMeUser'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedMeUser'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/MeUser'
+          description: ''
+    delete:
+      operationId: user_me_destroy
+      description: Detail endpoint for current user.
+      tags:
+      - user
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/user/owner/:
+    get:
+      operationId: user_owner_list
+      description: |-
+        List API endpoint for Owner model.
+
+        Cannot create.
+      parameters:
+      - 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
+      tags:
+      - user
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedOwnerList'
+          description: ''
+  /api/user/owner/{id}/:
+    get:
+      operationId: user_owner_retrieve
+      description: |-
+        Detail API endpoint for Owner model.
+
+        Cannot edit or delete
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - user
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Owner'
+          description: ''
+  /api/user/roles/:
+    get:
+      operationId: user_roles_retrieve
+      description: API endpoint which lists the available role permissions for the
+        current user.
+      tags:
+      - user
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Role'
+          description: ''
+  /api/user/token/:
+    get:
+      operationId: user_token_retrieve
+      description: |-
+        Return an API token if the user is authenticated.
+
+        - If the user already has a matching token, delete it and create a new one
+        - Existing tokens are *never* exposed again via the API
+        - Once the token is provided, it can be used for auth until it expires
+      tags:
+      - user
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          description: No response body
+  /api/user/tokens/:
+    get:
+      operationId: user_tokens_list
+      description: List of registered tokens for current users.
+      parameters:
+      - 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
+      tags:
+      - user
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedApiTokenList'
+          description: ''
+    delete:
+      operationId: user_tokens_destroy
+      description: List of registered tokens for current users.
+      tags:
+      - user
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/user/tokens/{id}/:
+    get:
+      operationId: user_tokens_list_2
+      description: List of registered tokens for current users.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      - 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
+      tags:
+      - user
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedApiTokenList'
+          description: ''
+    delete:
+      operationId: user_tokens_destroy_2
+      description: List of registered tokens for current users.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - user
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/version/:
+    get:
+      operationId: version_retrieve
+      description: Return information about the InvenTree server.
+      tags:
+      - version
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VersionView'
+          description: ''
+  /api/version-text:
+    get:
+      operationId: version_text_list
+      description: Simple JSON endpoint for InvenTree version text.
+      parameters:
+      - 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
+      tags:
+      - version-text
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedVersionInformationList'
+          description: ''
+  /api/web/ui_preference/:
+    get:
+      operationId: web_ui_preference_retrieve
+      description: Set preferred UI (CIU/PUI).
+      tags:
+      - web
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      - {}
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Preferred'
+          description: ''
+    put:
+      operationId: web_ui_preference_update
+      description: Set preferred UI (CIU/PUI).
+      tags:
+      - web
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Preferred'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/Preferred'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/Preferred'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      - {}
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Preferred'
+          description: ''
+  /api/webhook/{endpoint}/:
+    post:
+      operationId: webhook_create
+      description: Process incoming webhook.
+      parameters:
+      - in: path
+        name: endpoint
+        schema:
+          type: string
+        required: true
+      tags:
+      - webhook
+      responses:
+        '200':
+          description: Any data can be posted to the endpoint - everything will be
+            passed to the WebhookEndpoint model.
+components:
+  schemas:
+    APISearchView:
+      type: object
+      description: Serializer for the APISearchView.
+      properties:
+        search:
+          type: string
+        search_regex:
+          type: boolean
+          default: false
+        search_whole:
+          type: boolean
+          default: false
+        limit:
+          type: integer
+          default: 1
+        offset:
+          type: integer
+          default: 0
+      required:
+      - search
+    AcceptOverallocatedEnum:
+      enum:
+      - reject
+      - accept
+      - trim
+      type: string
+      description: |-
+        * `reject` - Not permitted
+        * `accept` - Accept as consumed by this build order
+        * `trim` - Deallocate before completing this build order
+    ActionPlugin:
+      type: object
+      description: Serializer for the ActionPluginView responses.
+      properties:
+        action:
+          type: string
+        data:
+          type: object
+          additionalProperties: {}
+      required:
+      - action
+      - data
+    Address:
+      type: object
+      description: Serializer for the Address Model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        company:
+          type: integer
+          description: Select company
+        title:
+          type: string
+          title: Address title
+          description: Title describing the address entry
+          maxLength: 100
+        primary:
+          type: boolean
+          title: Primary address
+          description: Set as primary address
+        line1:
+          type: string
+          title: Line 1
+          description: Address line 1
+          maxLength: 50
+        line2:
+          type: string
+          title: Line 2
+          description: Address line 2
+          maxLength: 50
+        postal_code:
+          type: string
+          description: Postal code
+          maxLength: 10
+        postal_city:
+          type: string
+          title: City/Region
+          description: Postal code city/region
+          maxLength: 50
+        province:
+          type: string
+          title: State/Province
+          description: State or province
+          maxLength: 50
+        country:
+          type: string
+          description: Address country
+          maxLength: 50
+        shipping_notes:
+          type: string
+          title: Courier shipping notes
+          description: Notes for shipping courier
+          maxLength: 100
+        internal_shipping_notes:
+          type: string
+          description: Shipping notes for internal use
+          maxLength: 100
+        link:
+          type: string
+          format: uri
+          description: Link to address information (external)
+          maxLength: 200
+      required:
+      - company
+      - pk
+      - title
+    AddressBrief:
+      type: object
+      description: Serializer for Address Model (limited).
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        line1:
+          type: string
+          title: Line 1
+          description: Address line 1
+          maxLength: 50
+        line2:
+          type: string
+          title: Line 2
+          description: Address line 2
+          maxLength: 50
+        postal_code:
+          type: string
+          description: Postal code
+          maxLength: 10
+        postal_city:
+          type: string
+          title: City/Region
+          description: Postal code city/region
+          maxLength: 50
+        province:
+          type: string
+          title: State/Province
+          description: State or province
+          maxLength: 50
+        country:
+          type: string
+          description: Address country
+          maxLength: 50
+        shipping_notes:
+          type: string
+          title: Courier shipping notes
+          description: Notes for shipping courier
+          maxLength: 100
+        internal_shipping_notes:
+          type: string
+          description: Shipping notes for internal use
+          maxLength: 100
+      required:
+      - pk
+    AllUnitListResponse:
+      type: object
+      description: Serializer for the AllUnitList.
+      properties:
+        default_system:
+          type: string
+        available_systems:
+          type: array
+          items:
+            type: string
+        available_units:
+          type: array
+          items:
+            $ref: '#/components/schemas/Unit'
+      required:
+      - available_systems
+      - available_units
+      - default_system
+    ApiToken:
+      type: object
+      description: Serializer for the ApiToken model.
+      properties:
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+        expiry:
+          type: string
+          format: date
+          title: Expiry Date
+          description: Token expiry date
+        id:
+          type: integer
+          readOnly: true
+        last_seen:
+          type: string
+          format: date
+          nullable: true
+          description: Last time the token was used
+        name:
+          type: string
+          title: Token Name
+          description: Custom token name
+          maxLength: 100
+        token:
+          type: string
+          readOnly: true
+        active:
+          type: string
+          readOnly: true
+        revoked:
+          type: boolean
+          description: Token has been revoked
+        user:
+          type: integer
+        in_use:
+          type: boolean
+          description: Return True if the token is currently used to call the endpoint.
+          readOnly: true
+      required:
+      - active
+      - created
+      - id
+      - in_use
+      - token
+      - user
+    Attachment:
+      type: object
+      description: Serializer class for the Attachment model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        attachment:
+          type: string
+          format: uri
+          nullable: true
+        filename:
+          type: string
+        link:
+          type: string
+          format: uri
+          nullable: true
+          description: Link to external URL
+          maxLength: 200
+        comment:
+          type: string
+          description: Attachment comment
+          maxLength: 250
+        upload_date:
+          type: string
+          format: date
+          readOnly: true
+        upload_user:
+          type: integer
+          readOnly: true
+          nullable: true
+          title: User
+          description: User
+        user_detail:
+          allOf:
+          - $ref: '#/components/schemas/User'
+          readOnly: true
+        file_size:
+          type: integer
+          readOnly: true
+          description: File size in bytes
+        model_type:
+          $ref: '#/components/schemas/AttachmentModelTypeEnum'
+        model_id:
+          type: integer
+        tags:
+          type: array
+          items:
+            type: string
+      required:
+      - file_size
+      - model_id
+      - model_type
+      - pk
+      - upload_date
+      - upload_user
+      - user_detail
+    AttachmentModelTypeEnum:
+      enum:
+      - build
+      - company
+      - manufacturerpart
+      - purchaseorder
+      - salesorder
+      - salesordershipment
+      - returnorder
+      - part
+      - stockitem
+      type: string
+      description: |-
+        * `build` - Build Order
+        * `company` - Company
+        * `manufacturerpart` - Manufacturer Part
+        * `purchaseorder` - Purchase Order
+        * `salesorder` - Sales Order
+        * `salesordershipment` - Sales Order Shipment
+        * `returnorder` - Return Order
+        * `part` - Part
+        * `stockitem` - Stock Item
+    BOMValidate:
+      type: object
+      description: Simple serializer class for validating a single BomItem instance.
+      properties:
+        checksum:
+          type: string
+          readOnly: true
+        valid:
+          type: boolean
+          writeOnly: true
+          default: false
+          description: Validate entire Bill of Materials
+      required:
+      - checksum
+    Barcode:
+      type: object
+      description: Generic serializer for receiving barcode data.
+      properties:
+        barcode:
+          type: string
+          description: Scanned barcode data
+          maxLength: 4095
+      required:
+      - barcode
+    BarcodeAssign:
+      type: object
+      description: Serializer class for linking a barcode to an internal model.
+      properties:
+        barcode:
+          type: string
+          description: Scanned barcode data
+          maxLength: 4095
+        build:
+          type: integer
+          nullable: true
+          title: Build Order
+        supplierpart:
+          type: integer
+          nullable: true
+          title: Supplier Part
+        manufacturerpart:
+          type: integer
+          nullable: true
+          title: Manufacturer Part
+        purchaseorder:
+          type: integer
+          nullable: true
+          title: Purchase Order
+        salesorder:
+          type: integer
+          nullable: true
+          title: Sales Order
+        returnorder:
+          type: integer
+          nullable: true
+          title: Return Order
+        part:
+          type: integer
+          nullable: true
+        stockitem:
+          type: integer
+          nullable: true
+          title: Stock Item
+        stocklocation:
+          type: integer
+          nullable: true
+          title: Stock Location
+      required:
+      - barcode
+    BarcodeGenerate:
+      type: object
+      description: Serializer for generating a barcode.
+      properties:
+        model:
+          type: string
+          description: Model name to generate barcode for
+        pk:
+          type: integer
+          description: Primary key of model object to generate barcode for
+      required:
+      - model
+      - pk
+    BarcodePOAllocate:
+      type: object
+      description: |-
+        Serializer for allocating items against a purchase order.
+
+        The scanned barcode could be a Part, ManufacturerPart or SupplierPart object
+      properties:
+        barcode:
+          type: string
+          description: Scanned barcode data
+          maxLength: 4095
+        purchase_order:
+          type: integer
+          description: Purchase Order to allocate items against
+      required:
+      - barcode
+      - purchase_order
+    BarcodePOReceive:
+      type: object
+      description: |-
+        Serializer for receiving items against a purchase order.
+
+        The following additional fields may be specified:
+
+        - purchase_order: PurchaseOrder object to receive items against
+        - location: Location to receive items into
+      properties:
+        barcode:
+          type: string
+          description: Scanned barcode data
+          maxLength: 4095
+        purchase_order:
+          type: integer
+          nullable: true
+          description: PurchaseOrder to receive items against
+        location:
+          type: integer
+          nullable: true
+          description: Location to receive items into
+      required:
+      - barcode
+    BarcodeSOAllocate:
+      type: object
+      description: |-
+        Serializr for allocating stock items to a sales order.
+
+        The scanned barcode must map to a StockItem object
+      properties:
+        barcode:
+          type: string
+          description: Scanned barcode data
+          maxLength: 4095
+        sales_order:
+          type: integer
+          description: Sales Order to allocate items against
+        line:
+          type: integer
+          nullable: true
+          description: Sales order line item to allocate items against
+        shipment:
+          type: integer
+          nullable: true
+          description: Sales order shipment to allocate items against
+        quantity:
+          type: integer
+          description: Quantity to allocate
+      required:
+      - barcode
+      - sales_order
+    BarcodeScanResult:
+      type: object
+      description: Serializer for barcode scan results.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        data:
+          type: string
+          readOnly: true
+          description: Barcode data
+        timestamp:
+          type: string
+          format: date-time
+          readOnly: true
+          description: Date and time of the barcode scan
+        endpoint:
+          type: string
+          readOnly: true
+          nullable: true
+          title: Path
+          description: URL endpoint which processed the barcode
+        context:
+          readOnly: true
+          nullable: true
+          description: Context data for the barcode scan
+        response:
+          readOnly: true
+          nullable: true
+          description: Response data from the barcode scan
+        result:
+          type: boolean
+          readOnly: true
+          description: Was the barcode scan successful?
+        user:
+          type: integer
+          readOnly: true
+          nullable: true
+          description: User who scanned the barcode
+        user_detail:
+          allOf:
+          - $ref: '#/components/schemas/User'
+          readOnly: true
+      required:
+      - context
+      - data
+      - endpoint
+      - pk
+      - response
+      - result
+      - timestamp
+      - user
+      - user_detail
+    BarcodeUnassign:
+      type: object
+      description: Serializer class for unlinking a barcode from an internal model.
+      properties:
+        build:
+          type: integer
+          nullable: true
+          title: Build Order
+        supplierpart:
+          type: integer
+          nullable: true
+          title: Supplier Part
+        manufacturerpart:
+          type: integer
+          nullable: true
+          title: Manufacturer Part
+        purchaseorder:
+          type: integer
+          nullable: true
+          title: Purchase Order
+        salesorder:
+          type: integer
+          nullable: true
+          title: Sales Order
+        returnorder:
+          type: integer
+          nullable: true
+          title: Return Order
+        part:
+          type: integer
+          nullable: true
+        stockitem:
+          type: integer
+          nullable: true
+          title: Stock Item
+        stocklocation:
+          type: integer
+          nullable: true
+          title: Stock Location
+    BlankEnum:
+      enum:
+      - ''
+    BomImportExtract:
+      type: object
+      description: |-
+        Serializer class for exatracting BOM data from an uploaded file.
+
+        The parent class DataFileExtractSerializer does most of the heavy lifting here.
+
+        TODO: Delete this entirely once the new importer process is working
+      properties:
+        columns:
+          type: array
+          items:
+            type: string
+        rows:
+          type: array
+          items:
+            type: array
+            items:
+              type: string
+              nullable: true
+      required:
+      - columns
+      - rows
+    BomImportSubmit:
+      type: object
+      description: |-
+        Serializer for uploading a BOM against a specified part.
+
+        A "BOM" is a set of BomItem objects which are to be validated together as a set.
+
+        TODO: Delete this entirely once the new importer process is working
+      properties:
+        items:
+          type: array
+          items:
+            $ref: '#/components/schemas/BomItem'
+      required:
+      - items
+    BomImportUpload:
+      type: object
+      description: |-
+        Serializer for uploading a file and extracting data from it.
+
+        TODO: Delete this entirely once the new importer process is working
+      properties:
+        data_file:
+          type: string
+          format: uri
+          description: Select data file for upload
+        part:
+          type: integer
+        clear_existing_bom:
+          type: boolean
+          description: Delete existing BOM items before uploading
+      required:
+      - clear_existing_bom
+      - data_file
+      - part
+    BomItem:
+      type: object
+      description: Serializer for BomItem object.
+      properties:
+        part:
+          type: integer
+          title: Assembly
+          description: Select the parent assembly
+        sub_part:
+          type: integer
+          title: Component
+          description: Select the component part
+        reference:
+          type: string
+          description: BOM item reference
+          maxLength: 5000
+        quantity:
+          type: number
+          format: double
+        overage:
+          type: string
+          description: Estimated build wastage quantity (absolute or percentage)
+          maxLength: 24
+        allow_variants:
+          type: boolean
+          description: Stock items for variant parts can be used for this BOM item
+        inherited:
+          type: boolean
+          title: Gets inherited
+          description: This BOM item is inherited by BOMs for variant parts
+        optional:
+          type: boolean
+          description: This BOM item is optional
+        consumable:
+          type: boolean
+          description: This BOM item is consumable (it is not tracked in build orders)
+        note:
+          type: string
+          description: BOM item notes
+          maxLength: 500
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        pricing_min:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        pricing_max:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        pricing_min_total:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        pricing_max_total:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        pricing_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        substitutes:
+          type: array
+          items:
+            $ref: '#/components/schemas/BomItemSubstitute'
+          readOnly: true
+        validated:
+          type: boolean
+          description: This BOM item has been validated
+        available_stock:
+          type: number
+          format: double
+          readOnly: true
+        available_substitute_stock:
+          type: number
+          format: double
+          readOnly: true
+        available_variant_stock:
+          type: number
+          format: double
+          readOnly: true
+        external_stock:
+          type: number
+          format: double
+          readOnly: true
+        on_order:
+          type: number
+          format: double
+          readOnly: true
+        building:
+          type: number
+          format: double
+          readOnly: true
+          title: In Production
+        can_build:
+          type: number
+          format: double
+          readOnly: true
+      required:
+      - available_stock
+      - available_substitute_stock
+      - available_variant_stock
+      - building
+      - can_build
+      - external_stock
+      - on_order
+      - part
+      - pk
+      - pricing_max
+      - pricing_max_total
+      - pricing_min
+      - pricing_min_total
+      - pricing_updated
+      - quantity
+      - sub_part
+      - substitutes
+    BomItemSubstitute:
+      type: object
+      description: Serializer for the BomItemSubstitute class.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        bom_item:
+          type: integer
+          description: Parent BOM item
+        part:
+          type: integer
+          description: Substitute part
+        part_detail:
+          allOf:
+          - $ref: '#/components/schemas/PartBrief'
+          readOnly: true
+      required:
+      - bom_item
+      - part
+      - part_detail
+      - pk
+    BomItemValidation:
+      type: object
+      description: Simple serializer for passing a single boolean field.
+      properties:
+        valid:
+          type: boolean
+          default: false
+    Build:
+      type: object
+      description: Serializes a Build object.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        url:
+          type: string
+          readOnly: true
+        title:
+          type: string
+          title: Description
+          description: Brief description of the build (optional)
+          maxLength: 100
+        barcode_hash:
+          type: string
+          readOnly: true
+        batch:
+          type: string
+          nullable: true
+          title: Batch Code
+          description: Batch code for this build output
+          maxLength: 100
+        creation_date:
+          type: string
+          format: date
+          readOnly: true
+        completed:
+          type: integer
+          readOnly: true
+          title: Completed items
+          description: Number of stock items which have been completed
+        completion_date:
+          type: string
+          format: date
+          nullable: true
+        destination:
+          type: integer
+          nullable: true
+          title: Destination Location
+          description: Select location where the completed items will be stored
+        parent:
+          type: integer
+          nullable: true
+          title: Parent Build
+          description: BuildOrder to which this build is allocated
+        part:
+          type: integer
+          description: Select part to build
+        part_name:
+          type: string
+          readOnly: true
+        part_detail:
+          allOf:
+          - $ref: '#/components/schemas/PartBrief'
+          readOnly: true
+        project_code:
+          type: integer
+          nullable: true
+          description: Project code for this build order
+        project_code_label:
+          type: string
+          readOnly: true
+        project_code_detail:
+          allOf:
+          - $ref: '#/components/schemas/ProjectCode'
+          readOnly: true
+        overdue:
+          type: boolean
+          readOnly: true
+        reference:
+          type: string
+        sales_order:
+          type: integer
+          nullable: true
+          title: Sales Order Reference
+          description: SalesOrder to which this build is allocated
+        quantity:
+          type: number
+          format: double
+        status:
+          allOf:
+          - $ref: '#/components/schemas/StatusC2fEnum'
+          readOnly: true
+          title: Build Status
+          description: |-
+            Build status code
+
+            * `10` - Pending
+            * `20` - Production
+            * `25` - On Hold
+            * `30` - Cancelled
+            * `40` - Complete
+        status_text:
+          type: string
+          readOnly: true
+        status_custom_key:
+          readOnly: true
+          nullable: true
+          title: Custom status key
+          description: |-
+            Additional status information for this item
+
+            * `10` - Pending
+            * `20` - Production
+            * `25` - On Hold
+            * `30` - Cancelled
+            * `40` - Complete
+          oneOf:
+          - $ref: '#/components/schemas/StatusCustomKeyC2fEnum'
+          - $ref: '#/components/schemas/NullEnum'
+        target_date:
+          type: string
+          format: date
+          nullable: true
+          title: Target completion date
+          description: Target date for build completion. Build will be overdue after
+            this date.
+        take_from:
+          type: integer
+          nullable: true
+          title: Source Location
+          description: Select location to take stock from for this build (leave blank
+            to take from any stock location)
+        link:
+          type: string
+          format: uri
+          title: External Link
+          description: Link to external URL
+          maxLength: 200
+        issued_by:
+          type: integer
+          nullable: true
+          description: User who issued this build order
+        issued_by_detail:
+          allOf:
+          - $ref: '#/components/schemas/User'
+          readOnly: true
+        responsible:
+          type: integer
+          nullable: true
+          description: User or group responsible for this build order
+        responsible_detail:
+          allOf:
+          - $ref: '#/components/schemas/Owner'
+          readOnly: true
+        priority:
+          type: integer
+          minimum: 0
+          title: Build Priority
+          description: Priority of this build order
+        level:
+          type: integer
+          readOnly: true
+          title: Build Level
+        create_child_builds:
+          type: boolean
+          writeOnly: true
+          default: false
+          description: Automatically generate child build orders
+      required:
+      - barcode_hash
+      - completed
+      - creation_date
+      - issued_by_detail
+      - level
+      - overdue
+      - part
+      - part_detail
+      - part_name
+      - pk
+      - project_code_detail
+      - project_code_label
+      - quantity
+      - reference
+      - responsible_detail
+      - status
+      - status_custom_key
+      - status_text
+      - url
+    BuildAllocation:
+      type: object
+      description: DRF serializer for allocation stock items against a build order.
+      properties:
+        items:
+          type: array
+          items:
+            $ref: '#/components/schemas/BuildAllocationItem'
+      required:
+      - items
+    BuildAllocationItem:
+      type: object
+      description: A serializer for allocating a single stock item against a build
+        order.
+      properties:
+        build_line:
+          type: integer
+          title: Build Line Item
+        stock_item:
+          type: integer
+        quantity:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,10}(?:\.\d{0,5})?$
+        output:
+          type: integer
+          nullable: true
+          title: Build Output
+      required:
+      - build_line
+      - quantity
+      - stock_item
+    BuildAutoAllocation:
+      type: object
+      description: DRF serializer for auto allocating stock items against a build
+        order.
+      properties:
+        location:
+          type: integer
+          nullable: true
+          title: Source Location
+          description: Stock location where parts are to be sourced (leave blank to
+            take from any location)
+        exclude_location:
+          type: integer
+          nullable: true
+          description: Exclude stock items from this selected location
+        interchangeable:
+          type: boolean
+          default: false
+          title: Interchangeable Stock
+          description: Stock items in multiple locations can be used interchangeably
+        substitutes:
+          type: boolean
+          default: true
+          title: Substitute Stock
+          description: Allow allocation of substitute parts
+        optional_items:
+          type: boolean
+          default: false
+          description: Allocate optional BOM items to build order
+    BuildCancel:
+      type: object
+      description: DRF serializer class for cancelling an active BuildOrder
+      properties:
+        remove_allocated_stock:
+          type: boolean
+          default: false
+          title: Consume Allocated Stock
+          description: Consume any stock which has already been allocated to this
+            build
+        remove_incomplete_outputs:
+          type: boolean
+          default: false
+          description: Delete any build outputs which have not been completed
+    BuildComplete:
+      type: object
+      description: DRF serializer for marking a BuildOrder as complete.
+      properties:
+        accept_overallocated:
+          allOf:
+          - $ref: '#/components/schemas/AcceptOverallocatedEnum'
+          default: reject
+          title: Overallocated Stock
+          description: |-
+            How do you want to handle extra stock items assigned to the build order
+
+            * `reject` - Not permitted
+            * `accept` - Accept as consumed by this build order
+            * `trim` - Deallocate before completing this build order
+        accept_unallocated:
+          type: boolean
+          default: false
+          description: Accept that stock items have not been fully allocated to this
+            build order
+        accept_incomplete:
+          type: boolean
+          default: false
+          description: Accept that the required number of build outputs have not been
+            completed
+    BuildItem:
+      type: object
+      description: Serializes a BuildItem object, which is an allocation of a stock
+        item against a build order.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        build:
+          type: integer
+          readOnly: true
+        build_line:
+          type: integer
+          nullable: true
+        install_into:
+          type: integer
+          nullable: true
+          description: Destination stock item
+        stock_item:
+          type: integer
+          description: Source stock item
+        quantity:
+          type: number
+          format: double
+          title: Allocated Quantity
+        location:
+          type: integer
+          readOnly: true
+        location_detail:
+          allOf:
+          - $ref: '#/components/schemas/LocationBrief'
+          readOnly: true
+        part_detail:
+          allOf:
+          - $ref: '#/components/schemas/PartBrief'
+          readOnly: true
+        stock_item_detail:
+          allOf:
+          - $ref: '#/components/schemas/StockItemSerializerBrief'
+          readOnly: true
+        supplier_part_detail:
+          allOf:
+          - $ref: '#/components/schemas/SupplierPart'
+          readOnly: true
+        bom_reference:
+          type: string
+          readOnly: true
+        item_serial_number:
+          type: string
+          readOnly: true
+          title: Serial Number
+      required:
+      - bom_reference
+      - build
+      - build_line
+      - install_into
+      - item_serial_number
+      - location
+      - location_detail
+      - part_detail
+      - pk
+      - quantity
+      - stock_item
+      - stock_item_detail
+      - supplier_part_detail
+    BuildLine:
+      type: object
+      description: Serializer for a BuildItem object.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        build:
+          type: integer
+          readOnly: true
+          description: Build object
+        bom_item:
+          type: integer
+          readOnly: true
+        bom_item_detail:
+          allOf:
+          - $ref: '#/components/schemas/BomItem'
+          readOnly: true
+        part_detail:
+          allOf:
+          - $ref: '#/components/schemas/PartBrief'
+          readOnly: true
+        quantity:
+          type: number
+          format: double
+        allocations:
+          type: array
+          items:
+            $ref: '#/components/schemas/BuildItem'
+          readOnly: true
+        reference:
+          type: string
+          readOnly: true
+        consumable:
+          type: boolean
+          readOnly: true
+        optional:
+          type: boolean
+          readOnly: true
+        testable:
+          type: boolean
+          readOnly: true
+        trackable:
+          type: boolean
+          readOnly: true
+        inherited:
+          type: boolean
+          readOnly: true
+        allow_variants:
+          type: boolean
+          readOnly: true
+        part:
+          type: integer
+          readOnly: true
+        part_name:
+          type: string
+          readOnly: true
+        part_IPN:
+          type: string
+          readOnly: true
+        part_category_id:
+          type: integer
+          readOnly: true
+        allocated:
+          type: number
+          format: double
+          readOnly: true
+          title: Allocated Stock
+        in_production:
+          type: number
+          format: double
+          readOnly: true
+        on_order:
+          type: number
+          format: double
+          readOnly: true
+        available_stock:
+          type: number
+          format: double
+          readOnly: true
+        available_substitute_stock:
+          type: number
+          format: double
+          readOnly: true
+        available_variant_stock:
+          type: number
+          format: double
+          readOnly: true
+        total_available_stock:
+          type: number
+          format: double
+          readOnly: true
+        external_stock:
+          type: number
+          format: double
+          readOnly: true
+      required:
+      - allocated
+      - allocations
+      - allow_variants
+      - available_stock
+      - available_substitute_stock
+      - available_variant_stock
+      - bom_item
+      - bom_item_detail
+      - build
+      - consumable
+      - external_stock
+      - in_production
+      - inherited
+      - on_order
+      - optional
+      - part
+      - part_IPN
+      - part_category_id
+      - part_detail
+      - part_name
+      - pk
+      - quantity
+      - reference
+      - testable
+      - total_available_stock
+      - trackable
+    BuildOutput:
+      type: object
+      description: |-
+        Serializer for a "BuildOutput".
+
+        Note that a "BuildOutput" is really just a StockItem which is "in production"!
+      properties:
+        output:
+          type: integer
+          title: Build Output
+      required:
+      - output
+    BuildOutputComplete:
+      type: object
+      description: DRF serializer for completing one or more build outputs.
+      properties:
+        outputs:
+          type: array
+          items:
+            $ref: '#/components/schemas/BuildOutput'
+        location:
+          type: integer
+          description: Location for completed build outputs
+        status_custom_key:
+          allOf:
+          - $ref: '#/components/schemas/StatusCustomKey2a7Enum'
+          default: 10
+          title: Status
+        accept_incomplete_allocation:
+          type: boolean
+          default: false
+          description: Complete outputs if stock has not been fully allocated
+        notes:
+          type: string
+      required:
+      - location
+      - outputs
+    BuildOutputCreate:
+      type: object
+      description: |-
+        Serializer for creating a new BuildOutput against a BuildOrder.
+
+        URL pattern is "/api/build/<pk>/create-output/", where <pk> is the PK of a Build.
+
+        The Build object is provided to the serializer context.
+      properties:
+        quantity:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,10}(?:\.\d{0,5})?$
+          description: Enter quantity for build output
+        batch_code:
+          type: string
+          description: Batch code for this build output
+        serial_numbers:
+          type: string
+          description: Enter serial numbers for build outputs
+        location:
+          type: integer
+          nullable: true
+          description: Stock location for build output
+        auto_allocate:
+          type: boolean
+          nullable: true
+          default: false
+          title: Auto Allocate Serial Numbers
+          description: Automatically allocate required items with matching serial
+            numbers
+      required:
+      - quantity
+    BuildOutputDelete:
+      type: object
+      description: DRF serializer for deleting (cancelling) one or more build outputs.
+      properties:
+        outputs:
+          type: array
+          items:
+            $ref: '#/components/schemas/BuildOutput'
+      required:
+      - outputs
+    BuildOutputQuantity:
+      type: object
+      description: Serializer for a single build output, with additional quantity
+        field
+      properties:
+        output:
+          type: integer
+          title: Build Output
+        quantity:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,10}(?:\.\d{0,5})?$
+          description: Enter quantity for build output
+      required:
+      - output
+      - quantity
+    BuildOutputScrap:
+      type: object
+      description: DRF serializer for scrapping one or more build outputs
+      properties:
+        outputs:
+          type: array
+          items:
+            $ref: '#/components/schemas/BuildOutputQuantity'
+        location:
+          type: integer
+          description: Stock location for scrapped outputs
+        discard_allocations:
+          type: boolean
+          default: false
+          description: Discard any stock allocations for scrapped outputs
+        notes:
+          type: string
+          description: Reason for scrapping build output(s)
+      required:
+      - location
+      - notes
+      - outputs
+    BuildUnallocation:
+      type: object
+      description: |-
+        DRF serializer for unallocating stock from a BuildOrder.
+
+        Allocated stock can be unallocated with a number of filters:
+
+        - output: Filter against a particular build output (blank = untracked stock)
+        - bom_item: Filter against a particular BOM line item
+      properties:
+        build_line:
+          type: integer
+          nullable: true
+        output:
+          type: integer
+          nullable: true
+          title: Build output
+    Category:
+      type: object
+      description: Serializer for PartCategory.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        name:
+          type: string
+          description: Name
+          maxLength: 100
+        description:
+          type: string
+          description: Description (optional)
+          maxLength: 250
+        default_location:
+          type: integer
+          nullable: true
+          description: Default location for parts in this category
+        default_keywords:
+          type: string
+          nullable: true
+          description: Default keywords for parts in this category
+          maxLength: 250
+        level:
+          type: integer
+          readOnly: true
+        parent:
+          type: integer
+          nullable: true
+          title: Parent Category
+          description: Parent part category
+        part_count:
+          type: integer
+          readOnly: true
+          title: Parts
+        subcategories:
+          type: integer
+          readOnly: true
+        pathstring:
+          type: string
+          readOnly: true
+          title: Path
+          description: Path
+        starred:
+          type: boolean
+          description: Return True if the category is directly "starred" by the current
+            user.
+          readOnly: true
+        url:
+          type: string
+          readOnly: true
+        structural:
+          type: boolean
+          description: Parts may not be directly assigned to a structural category,
+            but may be assigned to child categories.
+        icon:
+          type: string
+          description: Icon (optional)
+          maxLength: 100
+        parent_default_location:
+          type: integer
+          readOnly: true
+      required:
+      - level
+      - name
+      - parent_default_location
+      - part_count
+      - pathstring
+      - pk
+      - starred
+      - subcategories
+      - url
+    CategoryParameterTemplate:
+      type: object
+      description: Serializer for the PartCategoryParameterTemplate model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        category:
+          type: integer
+          description: Part Category
+        category_detail:
+          allOf:
+          - $ref: '#/components/schemas/Category'
+          readOnly: true
+        parameter_template:
+          type: integer
+          description: Parameter Template
+        parameter_template_detail:
+          allOf:
+          - $ref: '#/components/schemas/PartParameterTemplate'
+          readOnly: true
+        default_value:
+          type: string
+          description: Default Parameter Value
+          maxLength: 500
+      required:
+      - category
+      - category_detail
+      - parameter_template
+      - parameter_template_detail
+      - pk
+    CategoryTree:
+      type: object
+      description: Serializer for PartCategory tree.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        name:
+          type: string
+          description: Name
+          maxLength: 100
+        parent:
+          type: integer
+          nullable: true
+        icon:
+          type: string
+          description: Icon (optional)
+          maxLength: 100
+        structural:
+          type: boolean
+          description: Parts may not be directly assigned to a structural category,
+            but may be assigned to child categories.
+        subcategories:
+          type: integer
+          readOnly: true
+      required:
+      - name
+      - pk
+      - subcategories
+    ColorEnum:
+      enum:
+      - primary
+      - secondary
+      - success
+      - danger
+      - warning
+      - info
+      - dark
+      type: string
+      description: |-
+        * `primary` - primary
+        * `secondary` - secondary
+        * `success` - success
+        * `danger` - danger
+        * `warning` - warning
+        * `info` - info
+        * `dark` - dark
+    Company:
+      type: object
+      description: Serializer for Company object (full detail).
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        url:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          title: Company name
+          description: Company name
+          maxLength: 100
+        description:
+          type: string
+          title: Company description
+          description: Description of the company
+          maxLength: 500
+        website:
+          type: string
+          format: uri
+          description: Company website URL
+          maxLength: 200
+        phone:
+          type: string
+          title: Phone number
+          description: Contact phone number
+          maxLength: 50
+        address:
+          type: string
+          readOnly: true
+        email:
+          type: string
+          format: email
+          nullable: true
+          default: ''
+        currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          description: |-
+            Default currency used for this supplier
+
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+        contact:
+          type: string
+          description: Point of contact
+          maxLength: 100
+        link:
+          type: string
+          format: uri
+          description: Link to external company information
+          maxLength: 200
+        image:
+          type: string
+          format: uri
+          nullable: true
+        active:
+          type: boolean
+          description: Is this company active?
+        is_customer:
+          type: boolean
+          description: Do you sell items to this company?
+        is_manufacturer:
+          type: boolean
+          description: Does this company manufacture parts?
+        is_supplier:
+          type: boolean
+          description: Do you purchase items from this company?
+        parts_supplied:
+          type: integer
+          readOnly: true
+        parts_manufactured:
+          type: integer
+          readOnly: true
+        remote_image:
+          type: string
+          format: uri
+          writeOnly: true
+          description: URL of remote image file
+        address_count:
+          type: integer
+          readOnly: true
+        primary_address:
+          allOf:
+          - $ref: '#/components/schemas/Address'
+          readOnly: true
+          nullable: true
+      required:
+      - address
+      - address_count
+      - currency
+      - name
+      - parts_manufactured
+      - parts_supplied
+      - pk
+      - primary_address
+      - url
+    CompanyBrief:
+      type: object
+      description: Serializer for Company object (limited detail).
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        active:
+          type: boolean
+          description: Is this company active?
+        name:
+          type: string
+          title: Company name
+          description: Company name
+          maxLength: 100
+        description:
+          type: string
+          title: Company description
+          description: Description of the company
+          maxLength: 500
+        image:
+          type: string
+          format: uri
+          readOnly: true
+        thumbnail:
+          type: string
+          readOnly: true
+        currency:
+          type: string
+          readOnly: true
+          description: Default currency used for this company
+      required:
+      - currency
+      - image
+      - name
+      - pk
+      - thumbnail
+    ConfigTypeEnum:
+      enum:
+      - M
+      - D
+      type: string
+      description: |-
+        * `M` - Machine
+        * `D` - Driver
+    Contact:
+      type: object
+      description: Serializer class for the Contact model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        company:
+          type: integer
+        company_name:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        phone:
+          type: string
+          maxLength: 100
+        email:
+          type: string
+          format: email
+          maxLength: 254
+        role:
+          type: string
+          maxLength: 100
+      required:
+      - company
+      - company_name
+      - name
+      - pk
+    ContentType:
+      type: object
+      description: Serializer for ContentType models.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+        app_label:
+          type: string
+          readOnly: true
+        model:
+          type: string
+          readOnly: true
+        app_labeled_name:
+          type: string
+          readOnly: true
+        is_plugin:
+          type: boolean
+          description: Return True if the model is a plugin model.
+          readOnly: true
+      required:
+      - app_label
+      - app_labeled_name
+      - is_plugin
+      - model
+      - pk
+    ConvertStockItem:
+      type: object
+      description: DRF serializer class for converting a StockItem to a valid variant
+        part.
+      properties:
+        part:
+          type: integer
+          description: Select part to convert stock item into
+      required:
+      - part
+    CurrencyExchange:
+      type: object
+      description: |-
+        Serializer for a Currency Exchange request.
+
+        It's only purpose is describing the results correctly in the API schema right now.
+      properties:
+        base_currency:
+          type: string
+          readOnly: true
+        exchange_rates:
+          type: object
+          additionalProperties:
+            type: number
+            format: double
+        updated:
+          type: string
+          format: date-time
+          readOnly: true
+      required:
+      - base_currency
+      - exchange_rates
+      - updated
+    CustomState:
+      type: object
+      description: Serializer for the custom state model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        key:
+          type: integer
+          description: Value that will be saved in the models database
+        name:
+          type: string
+          description: Name of the state
+          maxLength: 250
+        label:
+          type: string
+          description: Label that will be displayed in the frontend
+          maxLength: 250
+        color:
+          allOf:
+          - $ref: '#/components/schemas/ColorEnum'
+          description: |-
+            Color that will be displayed in the frontend
+
+            * `primary` - primary
+            * `secondary` - secondary
+            * `success` - success
+            * `danger` - danger
+            * `warning` - warning
+            * `info` - info
+            * `dark` - dark
+        logical_key:
+          type: integer
+          description: State logical key that is equal to this custom state in business
+            logic
+        model:
+          type: integer
+          nullable: true
+          description: Model this state is associated with
+        model_name:
+          type: string
+          readOnly: true
+        reference_status:
+          $ref: '#/components/schemas/ReferenceStatusEnum'
+      required:
+      - key
+      - label
+      - logical_key
+      - model
+      - model_name
+      - name
+      - pk
+      - reference_status
+    CustomUnit:
+      type: object
+      description: DRF serializer for CustomUnit model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        name:
+          type: string
+          description: Unit name
+          maxLength: 50
+        symbol:
+          type: string
+          description: Optional unit symbol
+          maxLength: 10
+        definition:
+          type: string
+          description: Unit definition
+          maxLength: 50
+      required:
+      - definition
+      - name
+      - pk
+    DataImportAcceptRow:
+      type: object
+      description: Serializer for accepting rows of data.
+      properties:
+        rows:
+          type: array
+          items:
+            type: integer
+            title: Rows
+          description: List of row IDs to accept
+      required:
+      - rows
+    DataImportColumnMap:
+      type: object
+      description: Serializer for the DataImportColumnMap model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        session:
+          type: integer
+          readOnly: true
+          title: Import Session
+        column:
+          type: string
+          maxLength: 100
+        field:
+          type: string
+          readOnly: true
+        label:
+          type: string
+          readOnly: true
+        description:
+          type: string
+          readOnly: true
+      required:
+      - description
+      - field
+      - label
+      - pk
+      - session
+    DataImportRow:
+      type: object
+      description: Serializer for the DataImportRow model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        session:
+          type: integer
+          readOnly: true
+          title: Import Session
+        row_index:
+          type: integer
+          readOnly: true
+        row_data:
+          readOnly: true
+          nullable: true
+          title: Original row data
+        data:
+          nullable: true
+        errors:
+          readOnly: true
+          nullable: true
+        valid:
+          type: boolean
+          readOnly: true
+        complete:
+          type: boolean
+          readOnly: true
+      required:
+      - complete
+      - errors
+      - pk
+      - row_data
+      - row_index
+      - session
+      - valid
+    DataImportSession:
+      type: object
+      description: Serializer for the DataImportSession model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        timestamp:
+          type: string
+          format: date-time
+          readOnly: true
+        data_file:
+          type: string
+          format: uri
+        model_type:
+          $ref: '#/components/schemas/DataImportSessionModelTypeEnum'
+        available_fields:
+          readOnly: true
+        status:
+          allOf:
+          - $ref: '#/components/schemas/DataImportSessionStatusEnum'
+          readOnly: true
+          description: |-
+            Import status
+
+            * `0` - Initializing
+            * `10` - Mapping Columns
+            * `20` - Importing Data
+            * `30` - Processing Data
+            * `40` - Complete
+        user:
+          type: integer
+          readOnly: true
+          nullable: true
+        user_detail:
+          allOf:
+          - $ref: '#/components/schemas/User'
+          readOnly: true
+        columns:
+          readOnly: true
+          nullable: true
+        column_mappings:
+          type: array
+          items:
+            $ref: '#/components/schemas/DataImportColumnMap'
+          readOnly: true
+        field_defaults:
+          nullable: true
+        field_overrides:
+          nullable: true
+        field_filters:
+          nullable: true
+        row_count:
+          type: integer
+          readOnly: true
+        completed_row_count:
+          type: integer
+          readOnly: true
+      required:
+      - available_fields
+      - column_mappings
+      - columns
+      - completed_row_count
+      - data_file
+      - model_type
+      - pk
+      - row_count
+      - status
+      - timestamp
+      - user
+      - user_detail
+    DataImportSessionModelTypeEnum:
+      enum:
+      - partcategory
+      - parttesttemplate
+      - partsellpricebreak
+      - partparametertemplate
+      - partparameter
+      - part
+      - bomitem
+      - partcategoryparametertemplate
+      - address
+      - company
+      - contact
+      - manufacturerpart
+      - manufacturerpartparameter
+      - supplierpart
+      - supplierpricebreak
+      - projectcode
+      - inventreecustomuserstatemodel
+      - customunit
+      - stockitemtestresult
+      - stockitem
+      - stocklocation
+      - stockitemtracking
+      - purchaseorder
+      - purchaseorderlineitem
+      - purchaseorderextraline
+      - salesorder
+      - salesorderlineitem
+      - salesorderextraline
+      - returnorder
+      - returnorderlineitem
+      - returnorderextraline
+      type: string
+      description: |-
+        * `partcategory` - Part Category
+        * `parttesttemplate` - Part Test Template
+        * `partsellpricebreak` - Part Sale Price Break
+        * `partparametertemplate` - Part Parameter Template
+        * `partparameter` - Part Parameter
+        * `part` - Part
+        * `bomitem` - BOM Item
+        * `partcategoryparametertemplate` - Part Category Parameter Template
+        * `address` - Address
+        * `company` - Company
+        * `contact` - Contact
+        * `manufacturerpart` - Manufacturer Part
+        * `manufacturerpartparameter` - Manufacturer Part Parameter
+        * `supplierpart` - Supplier Part
+        * `supplierpricebreak` - Supplier Price Break
+        * `projectcode` - Project Code
+        * `inventreecustomuserstatemodel` - Custom State
+        * `customunit` - Custom Unit
+        * `stockitemtestresult` - Stock Item Test Result
+        * `stockitem` - Stock Item
+        * `stocklocation` - Stock Location
+        * `stockitemtracking` - Stock Item Tracking
+        * `purchaseorder` - Purchase Order
+        * `purchaseorderlineitem` - Purchase Order Line Item
+        * `purchaseorderextraline` - Purchase Order Extra Line
+        * `salesorder` - Sales Order
+        * `salesorderlineitem` - Sales Order Line Item
+        * `salesorderextraline` - Sales Order Extra Line
+        * `returnorder` - Return Order
+        * `returnorderlineitem` - Return Order Line Item
+        * `returnorderextraline` - Return Order Extra Line
+    DataImportSessionStatusEnum:
+      enum:
+      - 0
+      - 10
+      - 20
+      - 30
+      - 40
+      type: integer
+      description: |-
+        * `0` - Initializing
+        * `10` - Mapping Columns
+        * `20` - Importing Data
+        * `30` - Processing Data
+        * `40` - Complete
+    DuplicateOrder:
+      type: object
+      description: Serializer for specifying options when duplicating an order.
+      properties:
+        order_id:
+          type: integer
+          description: ID of the order to duplicate
+        copy_lines:
+          type: boolean
+          default: true
+          description: Copy line items from the original order
+        copy_extra_lines:
+          type: boolean
+          default: true
+          description: Copy extra line items from the original order
+      required:
+      - order_id
+    DuplicatePart:
+      type: object
+      description: |-
+        Serializer for specifying options when duplicating a Part.
+
+        The fields in this serializer control how the Part is duplicated.
+      properties:
+        part:
+          type: integer
+          title: Original Part
+          description: Select original part to duplicate
+        copy_image:
+          type: boolean
+          default: false
+          description: Copy image from original part
+        copy_bom:
+          type: boolean
+          default: false
+          description: Copy bill of materials from original part
+        copy_parameters:
+          type: boolean
+          default: false
+          description: Copy parameter data from original part
+        copy_notes:
+          type: boolean
+          default: true
+          description: Copy notes from original part
+      required:
+      - part
+    EmailAddress:
+      type: object
+      description: Serializer for the EmailAddress model.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        email:
+          type: string
+          format: email
+          title: Email address
+          maxLength: 254
+        verified:
+          type: boolean
+        primary:
+          type: boolean
+        user:
+          type: integer
+      required:
+      - email
+      - id
+      - user
+    ErrorMessage:
+      type: object
+      description: DRF serializer for server error messages.
+      properties:
+        when:
+          type: string
+          format: date-time
+          readOnly: true
+        info:
+          type: string
+          readOnly: true
+        data:
+          type: string
+          readOnly: true
+          nullable: true
+        path:
+          type: string
+          format: uri
+          readOnly: true
+          nullable: true
+          maxLength: 200
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+      required:
+      - data
+      - info
+      - path
+      - pk
+      - when
+    ExtendedUser:
+      type: object
+      description: Serializer for a User with a bit more info.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        username:
+          type: string
+          description: Username
+        first_name:
+          type: string
+          description: First name of the user
+        last_name:
+          type: string
+          description: Last name of the user
+        email:
+          type: string
+          format: email
+          description: Email address of the user
+        groups:
+          type: array
+          items:
+            $ref: '#/components/schemas/Group'
+          readOnly: true
+        is_staff:
+          type: boolean
+          title: Staff
+          description: Does this user have staff permissions
+        is_superuser:
+          type: boolean
+          title: Superuser
+          description: Is this user a superuser
+        is_active:
+          type: boolean
+          title: Active
+          description: Is this user account active
+      required:
+      - email
+      - first_name
+      - groups
+      - is_active
+      - is_staff
+      - is_superuser
+      - last_name
+      - pk
+      - username
+    FailedTask:
+      type: object
+      description: Serializer for an individual failed task object.
+      properties:
+        pk:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          readOnly: true
+        func:
+          type: string
+          maxLength: 256
+        args:
+          type: string
+          readOnly: true
+          nullable: true
+        kwargs:
+          type: string
+          readOnly: true
+          nullable: true
+        started:
+          type: string
+          format: date-time
+          readOnly: true
+        stopped:
+          type: string
+          format: date-time
+          readOnly: true
+        attempt_count:
+          type: integer
+        result:
+          type: string
+      required:
+      - args
+      - func
+      - kwargs
+      - name
+      - pk
+      - result
+      - started
+      - stopped
+    GenerateBatchCode:
+      type: object
+      description: |-
+        Serializer for generating a batch code.
+
+        Any of the provided write-only fields can be used for additional context.
+      properties:
+        batch_code:
+          type: string
+          readOnly: true
+          description: Generated batch code
+        build_order:
+          type: integer
+          nullable: true
+          description: Select build order
+        item:
+          type: integer
+          nullable: true
+          title: Stock Item
+          description: Select stock item to generate batch code for
+        location:
+          type: integer
+          nullable: true
+          description: Select location to generate batch code for
+        part:
+          type: integer
+          nullable: true
+          description: Select part to generate batch code for
+        purchase_order:
+          type: integer
+          nullable: true
+          description: Select purchase order
+        quantity:
+          type: number
+          format: double
+          nullable: true
+          description: Enter quantity for batch code
+      required:
+      - batch_code
+    GenerateSerialNumber:
+      type: object
+      description: |-
+        Serializer for generating one or multiple serial numbers.
+
+        Any of the provided write-only fields can be used for additional context.
+
+        Note that in the case where multiple serial numbers are required,
+        the "serial" field will return a string with multiple serial numbers separated by a comma.
+      properties:
+        serial:
+          type: string
+          readOnly: true
+          title: Serial Number
+          description: Generated serial number
+        part:
+          type: integer
+          nullable: true
+          description: Select part to generate serial number for
+        quantity:
+          type: integer
+          default: 1
+          description: Quantity of serial numbers to generate
+      required:
+      - serial
+    GetSimpleLogin:
+      type: object
+      description: Serializer for the simple login view.
+      properties:
+        email:
+          type: string
+      required:
+      - email
+    GlobalSettings:
+      type: object
+      description: Serializer for the InvenTreeSetting model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        key:
+          type: string
+          readOnly: true
+        value:
+          type: string
+        name:
+          type: string
+          readOnly: true
+        description:
+          type: string
+          readOnly: true
+        type:
+          type: string
+          readOnly: true
+        units:
+          type: string
+          readOnly: true
+        choices:
+          type: array
+          items: {}
+          description: Returns the choices available for a given item.
+          readOnly: true
+        model_name:
+          type: string
+          readOnly: true
+        api_url:
+          type: string
+          readOnly: true
+        typ:
+          type: string
+          readOnly: true
+      required:
+      - api_url
+      - choices
+      - description
+      - key
+      - model_name
+      - name
+      - pk
+      - typ
+      - type
+      - units
+      - value
+    Group:
+      type: object
+      description: Serializer for a 'Group'.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        name:
+          type: string
+          maxLength: 150
+      required:
+      - name
+      - pk
+    Icon:
+      type: object
+      description: Serializer for an icon.
+      properties:
+        name:
+          type: string
+        category:
+          type: string
+        tags:
+          type: array
+          items:
+            type: string
+        variants:
+          type: object
+          additionalProperties:
+            type: string
+      required:
+      - category
+      - name
+      - tags
+      - variants
+    IconPackage:
+      type: object
+      description: Serializer for a list of icons.
+      properties:
+        name:
+          type: string
+        prefix:
+          type: string
+        fonts:
+          type: object
+          additionalProperties:
+            type: string
+        icons:
+          type: object
+          additionalProperties:
+            $ref: '#/components/schemas/Icon'
+      required:
+      - fonts
+      - icons
+      - name
+      - prefix
+    InitialStock:
+      type: object
+      description: Serializer for creating initial stock quantity.
+      properties:
+        quantity:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,10}(?:\.\d{0,5})?$
+          title: Initial Stock Quantity
+          description: Specify initial stock quantity for this Part. If quantity is
+            zero, no stock is added.
+        location:
+          type: integer
+          nullable: true
+          title: Initial Stock Location
+          description: Specify initial stock location for this Part
+      required:
+      - quantity
+    InitialSupplier:
+      type: object
+      description: Serializer for adding initial supplier / manufacturer information.
+      properties:
+        supplier:
+          type: integer
+          nullable: true
+          description: Select supplier (or leave blank to skip)
+        sku:
+          type: string
+          description: Supplier stock keeping unit
+          maxLength: 100
+        manufacturer:
+          type: integer
+          nullable: true
+          description: Select manufacturer (or leave blank to skip)
+        mpn:
+          type: string
+          description: Manufacturer part number
+          maxLength: 100
+    InstallStockItem:
+      type: object
+      description: Serializer for installing a stock item into a given part.
+      properties:
+        stock_item:
+          type: integer
+          description: Select stock item to install
+        quantity:
+          type: integer
+          minimum: 1
+          default: 1
+          title: Quantity to Install
+          description: Enter the quantity of items to install
+        note:
+          type: string
+          description: Add transaction note (optional)
+      required:
+      - stock_item
+    LabelOutput:
+      type: object
+      description: Serializer class for the LabelOutput model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        created:
+          type: string
+          format: date
+          readOnly: true
+        user:
+          type: integer
+          nullable: true
+        user_detail:
+          allOf:
+          - $ref: '#/components/schemas/User'
+          readOnly: true
+        model_type:
+          type: string
+          readOnly: true
+        items:
+          type: integer
+          description: Number of items to process
+        complete:
+          type: boolean
+          description: Report generation is complete
+        progress:
+          type: integer
+          description: Report generation progress
+        output:
+          type: string
+          format: uri
+        template:
+          type: integer
+          title: Label Template
+        plugin:
+          type: string
+          description: Label output plugin
+          maxLength: 100
+      required:
+      - created
+      - model_type
+      - output
+      - pk
+      - template
+      - user_detail
+    LabelPrint:
+      type: object
+      description: Serializer class for printing a label.
+      properties:
+        template:
+          type: integer
+          description: Select label template
+        plugin:
+          type: integer
+          title: Printing Plugin
+          description: Select plugin to use for label printing
+        items:
+          type: array
+          items:
+            type: integer
+          description: List of item primary keys to include in the report
+      required:
+      - items
+      - template
+    LabelTemplate:
+      type: object
+      description: Serializer class for label template model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        name:
+          type: string
+          description: Template name
+          maxLength: 100
+        description:
+          type: string
+          description: Template description
+          maxLength: 250
+        model_type:
+          $ref: '#/components/schemas/ModelType820Enum'
+        template:
+          type: string
+          format: uri
+        filters:
+          type: string
+          description: Template query filters (comma-separated list of key=value pairs)
+          maxLength: 250
+        filename_pattern:
+          type: string
+          description: Pattern for generating filenames
+          maxLength: 100
+        enabled:
+          type: boolean
+          description: Template is enabled
+        revision:
+          type: integer
+          readOnly: true
+        attach_to_model:
+          type: boolean
+          title: Attach to Model on Print
+          description: Save report output as an attachment against linked model instance
+            when printing
+        width:
+          type: number
+          format: double
+          minimum: 2
+          title: Width [mm]
+          description: Label width, specified in mm
+        height:
+          type: number
+          format: double
+          minimum: 2
+          title: Height [mm]
+          description: Label height, specified in mm
+      required:
+      - description
+      - model_type
+      - name
+      - pk
+      - revision
+      - template
+    LicenseView:
+      type: object
+      description: Serializer for license information.
+      properties:
+        backend:
+          type: string
+          readOnly: true
+          description: Backend licenses texts
+        frontend:
+          type: string
+          readOnly: true
+          description: Frontend licenses texts
+      required:
+      - backend
+      - frontend
+    Link:
+      type: object
+      description: Serializer for all possible links.
+      properties:
+        doc:
+          type: string
+          format: uri
+        code:
+          type: string
+          format: uri
+        credit:
+          type: string
+          format: uri
+        app:
+          type: string
+          format: uri
+        bug:
+          type: string
+          format: uri
+      required:
+      - app
+      - bug
+      - code
+      - credit
+      - doc
+    LocatePlugin:
+      type: object
+      description: Serializer for the LocatePluginView API endpoint.
+      properties:
+        plugin:
+          type: string
+          description: Plugin to use for location identification
+        item:
+          type: integer
+          description: StockItem to identify
+        location:
+          type: integer
+          description: StockLocation to identify
+      required:
+      - plugin
+    Location:
+      type: object
+      description: Detailed information about a stock location.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        barcode_hash:
+          type: string
+          readOnly: true
+          description: Unique hash of barcode data
+        url:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          description: Name
+          maxLength: 100
+        level:
+          type: integer
+          readOnly: true
+        description:
+          type: string
+          description: Description (optional)
+          maxLength: 250
+        parent:
+          type: integer
+          nullable: true
+          title: Parent Location
+          description: Parent stock location
+        pathstring:
+          type: string
+          readOnly: true
+          title: Path
+          description: Path
+        items:
+          type: integer
+          readOnly: true
+          title: Stock Items
+        sublocations:
+          type: integer
+          readOnly: true
+        owner:
+          type: integer
+          nullable: true
+          description: Select Owner
+        icon:
+          type: string
+          readOnly: true
+        custom_icon:
+          type: string
+          title: Icon
+          description: Icon (optional)
+          maxLength: 100
+        structural:
+          type: boolean
+          description: Stock items may not be directly located into a structural stock
+            locations, but may be located to child locations.
+        external:
+          type: boolean
+          description: This is an external stock location
+        location_type:
+          type: integer
+          nullable: true
+          description: Stock location type of this location
+        location_type_detail:
+          allOf:
+          - $ref: '#/components/schemas/StockLocationType'
+          readOnly: true
+        tags:
+          type: array
+          items:
+            type: string
+      required:
+      - barcode_hash
+      - icon
+      - items
+      - level
+      - location_type_detail
+      - name
+      - pathstring
+      - pk
+      - sublocations
+      - url
+    LocationBrief:
+      type: object
+      description: Provides a brief serializer for a StockLocation object.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        name:
+          type: string
+          description: Name
+          maxLength: 100
+        pathstring:
+          type: string
+          title: Path
+          description: Path
+          maxLength: 250
+      required:
+      - name
+      - pk
+    LocationTree:
+      type: object
+      description: Serializer for a simple tree view.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        name:
+          type: string
+          description: Name
+          maxLength: 100
+        parent:
+          type: integer
+          nullable: true
+        icon:
+          type: string
+          description: |-
+            Get the current icon used for this location.
+
+            The icon field on this model takes precedences over the possibly assigned stock location type
+          readOnly: true
+        structural:
+          type: boolean
+          description: Stock items may not be directly located into a structural stock
+            locations, but may be located to child locations.
+        sublocations:
+          type: integer
+          readOnly: true
+      required:
+      - icon
+      - name
+      - pk
+      - sublocations
+    Login:
+      type: object
+      properties:
+        username:
+          type: string
+        email:
+          type: string
+          format: email
+        password:
+          type: string
+      required:
+      - password
+    MachineConfig:
+      type: object
+      description: Serializer for a MachineConfig.
+      properties:
+        pk:
+          type: string
+          format: uuid
+          readOnly: true
+          title: Id
+        name:
+          type: string
+          description: Name of machine
+          maxLength: 255
+        machine_type:
+          type: string
+          readOnly: true
+          description: Type of machine
+        driver:
+          type: string
+          readOnly: true
+          description: Driver used for the machine
+        initialized:
+          type: boolean
+          description: Serializer method for the initialized field.
+          readOnly: true
+        active:
+          type: boolean
+          description: Machines can be disabled
+        status:
+          type: integer
+          description: Serializer method for the status field.
+          readOnly: true
+        status_model:
+          type: string
+          nullable: true
+          description: Serializer method for the status model field.
+          readOnly: true
+        status_text:
+          type: string
+          description: Serializer method for the status text field.
+          readOnly: true
+        machine_errors:
+          type: array
+          items:
+            type: string
+          description: Serializer method for the errors field.
+          readOnly: true
+        is_driver_available:
+          type: boolean
+          description: Serializer method for the is_driver_available field.
+          readOnly: true
+        restart_required:
+          type: boolean
+          description: Serializer method for the restart_required field.
+          readOnly: true
+      required:
+      - driver
+      - initialized
+      - is_driver_available
+      - machine_errors
+      - machine_type
+      - name
+      - pk
+      - restart_required
+      - status
+      - status_model
+      - status_text
+    MachineConfigCreate:
+      type: object
+      description: Serializer for creating a MachineConfig.
+      properties:
+        pk:
+          type: string
+          format: uuid
+          readOnly: true
+          title: Id
+        name:
+          type: string
+          description: Name of machine
+          maxLength: 255
+        machine_type:
+          type: string
+          description: Type of machine
+          maxLength: 255
+        driver:
+          type: string
+          description: Driver used for the machine
+          maxLength: 255
+        initialized:
+          type: boolean
+          description: Serializer method for the initialized field.
+          readOnly: true
+        active:
+          type: boolean
+          description: Machines can be disabled
+        status:
+          type: integer
+          description: Serializer method for the status field.
+          readOnly: true
+        status_model:
+          type: string
+          nullable: true
+          description: Serializer method for the status model field.
+          readOnly: true
+        status_text:
+          type: string
+          description: Serializer method for the status text field.
+          readOnly: true
+        machine_errors:
+          type: array
+          items:
+            type: string
+          description: Serializer method for the errors field.
+          readOnly: true
+        is_driver_available:
+          type: boolean
+          description: Serializer method for the is_driver_available field.
+          readOnly: true
+        restart_required:
+          type: boolean
+          description: Serializer method for the restart_required field.
+          readOnly: true
+      required:
+      - driver
+      - initialized
+      - is_driver_available
+      - machine_errors
+      - machine_type
+      - name
+      - pk
+      - restart_required
+      - status
+      - status_model
+      - status_text
+    MachineDriver:
+      type: object
+      description: Serializer for a BaseMachineDriver class.
+      properties:
+        slug:
+          type: string
+          pattern: ^[-a-zA-Z0-9_]+$
+        name:
+          type: string
+        description:
+          type: string
+        provider_file:
+          type: string
+          description: Serializer method for the provider_file field.
+          readOnly: true
+        provider_plugin:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          description: Serializer method for the provider_plugin field.
+          readOnly: true
+        is_builtin:
+          type: boolean
+          description: Serializer method for the is_builtin field.
+          readOnly: true
+        machine_type:
+          type: string
+          readOnly: true
+          pattern: ^[-a-zA-Z0-9_]+$
+        driver_errors:
+          type: array
+          items:
+            type: string
+          description: Serializer method for the errors field.
+          readOnly: true
+      required:
+      - description
+      - driver_errors
+      - is_builtin
+      - machine_type
+      - name
+      - provider_file
+      - provider_plugin
+      - slug
+    MachineRegistryError:
+      type: object
+      description: Serializer for a machine registry error.
+      properties:
+        message:
+          type: string
+      required:
+      - message
+    MachineRegistryStatus:
+      type: object
+      description: Serializer for machine registry status.
+      properties:
+        registry_errors:
+          type: array
+          items:
+            $ref: '#/components/schemas/MachineRegistryError'
+      required:
+      - registry_errors
+    MachineRestart:
+      type: object
+      description: Serializer for the machine restart response.
+      properties:
+        ok:
+          type: boolean
+      required:
+      - ok
+    MachineSetting:
+      type: object
+      description: Serializer for the MachineSetting model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        key:
+          type: string
+          readOnly: true
+        value:
+          type: string
+        name:
+          type: string
+          readOnly: true
+        description:
+          type: string
+          readOnly: true
+        type:
+          type: string
+          readOnly: true
+        choices:
+          type: array
+          items: {}
+          description: Returns the choices available for a given item.
+          readOnly: true
+        model_name:
+          type: string
+          readOnly: true
+        api_url:
+          type: string
+          readOnly: true
+        typ:
+          type: string
+          readOnly: true
+        required:
+          type: boolean
+          readOnly: true
+        config_type:
+          allOf:
+          - $ref: '#/components/schemas/ConfigTypeEnum'
+          readOnly: true
+      required:
+      - api_url
+      - choices
+      - config_type
+      - description
+      - key
+      - model_name
+      - name
+      - pk
+      - required
+      - typ
+      - type
+      - value
+    MachineType:
+      type: object
+      description: Serializer for a BaseMachineType class.
+      properties:
+        slug:
+          type: string
+          pattern: ^[-a-zA-Z0-9_]+$
+        name:
+          type: string
+        description:
+          type: string
+        provider_file:
+          type: string
+          description: Serializer method for the provider_file field.
+          readOnly: true
+        provider_plugin:
+          type: object
+          additionalProperties: {}
+          nullable: true
+          description: Serializer method for the provider_plugin field.
+          readOnly: true
+        is_builtin:
+          type: boolean
+          description: Serializer method for the is_builtin field.
+          readOnly: true
+      required:
+      - description
+      - is_builtin
+      - name
+      - provider_file
+      - provider_plugin
+      - slug
+    ManufacturerPart:
+      type: object
+      description: Serializer for ManufacturerPart object.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        part:
+          type: integer
+          title: Base Part
+          description: Select part
+        manufacturer:
+          type: integer
+        manufacturer_detail:
+          allOf:
+          - $ref: '#/components/schemas/CompanyBrief'
+          readOnly: true
+        description:
+          type: string
+          nullable: true
+          description: Manufacturer part description
+          maxLength: 250
+        MPN:
+          type: string
+          nullable: true
+          description: Manufacturer Part Number
+          maxLength: 100
+        link:
+          type: string
+          format: uri
+          nullable: true
+          description: URL for external manufacturer part link
+          maxLength: 200
+        barcode_hash:
+          type: string
+          description: Unique hash of barcode data
+          maxLength: 128
+        notes:
+          type: string
+          nullable: true
+          description: Markdown notes (optional)
+          maxLength: 50000
+        tags:
+          type: array
+          items:
+            type: string
+      required:
+      - MPN
+      - manufacturer
+      - manufacturer_detail
+      - part
+      - pk
+    ManufacturerPartParameter:
+      type: object
+      description: Serializer for the ManufacturerPartParameter model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        manufacturer_part:
+          type: integer
+        name:
+          type: string
+          description: Parameter name
+          maxLength: 500
+        value:
+          type: string
+          description: Parameter value
+          maxLength: 500
+        units:
+          type: string
+          nullable: true
+          description: Parameter units
+          maxLength: 64
+      required:
+      - manufacturer_part
+      - name
+      - pk
+      - value
+    MeUser:
+      type: object
+      description: API serializer specifically for the 'me' endpoint.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        username:
+          type: string
+          description: Username
+        first_name:
+          type: string
+          description: First name of the user
+        last_name:
+          type: string
+          description: Last name of the user
+        email:
+          type: string
+          format: email
+          description: Email address of the user
+        groups:
+          type: array
+          items:
+            $ref: '#/components/schemas/Group'
+          readOnly: true
+        is_staff:
+          type: boolean
+          title: Staff
+          description: Does this user have staff permissions
+        is_superuser:
+          type: boolean
+          title: Superuser
+          description: Is this user a superuser
+        is_active:
+          type: boolean
+          title: Active
+          description: Is this user account active
+      required:
+      - email
+      - first_name
+      - groups
+      - is_active
+      - is_staff
+      - is_superuser
+      - last_name
+      - pk
+      - username
+    Metadata:
+      type: object
+      description: Serializer class for model metadata API access.
+      properties:
+        metadata: {}
+      required:
+      - metadata
+    ModelType820Enum:
+      enum:
+      - build
+      - buildline
+      - purchaseorder
+      - salesorder
+      - salesordershipment
+      - returnorder
+      - part
+      - stockitem
+      - stocklocation
+      type: string
+      description: |-
+        * `build` - Build Order
+        * `buildline` - Build Order Line Item
+        * `purchaseorder` - Purchase Order
+        * `salesorder` - Sales Order
+        * `salesordershipment` - Sales Order Shipment
+        * `returnorder` - Return Order
+        * `part` - Part
+        * `stockitem` - Stock Item
+        * `stocklocation` - Stock Location
+    NewsFeedEntry:
+      type: object
+      description: Serializer for the NewsFeedEntry model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        feed_id:
+          type: string
+          title: Id
+          maxLength: 250
+        title:
+          type: string
+          maxLength: 250
+        link:
+          type: string
+          format: uri
+          maxLength: 250
+        published:
+          type: string
+          format: date-time
+        author:
+          type: string
+          maxLength: 250
+        summary:
+          type: string
+          maxLength: 250
+        read:
+          type: boolean
+      required:
+      - author
+      - feed_id
+      - link
+      - pk
+      - published
+      - read
+      - summary
+      - title
+    NotesImage:
+      type: object
+      description: Serializer for the NotesImage model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        image:
+          type: string
+          format: uri
+        user:
+          type: integer
+          readOnly: true
+          nullable: true
+        date:
+          type: string
+          format: date-time
+          readOnly: true
+        model_type:
+          type: string
+          nullable: true
+          description: Target model type for this image
+          maxLength: 100
+        model_id:
+          type: integer
+          nullable: true
+          description: Target model ID for this image
+      required:
+      - date
+      - image
+      - pk
+      - user
+    NotificationMessage:
+      type: object
+      description: Serializer for the InvenTreeUserSetting model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        target:
+          type: object
+          additionalProperties: {}
+          description: Function to resolve generic object reference to target.
+          readOnly: true
+        source:
+          type: object
+          additionalProperties: {}
+          description: Function to resolve generic object reference to source.
+          readOnly: true
+        user:
+          type: integer
+          readOnly: true
+        category:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          readOnly: true
+        message:
+          type: string
+          readOnly: true
+          nullable: true
+        creation:
+          type: string
+          format: date-time
+          readOnly: true
+        age:
+          type: integer
+          description: Age of the message in seconds.
+          readOnly: true
+        age_human:
+          type: string
+          description: Humanized age.
+          readOnly: true
+        read:
+          type: boolean
+      required:
+      - age
+      - age_human
+      - category
+      - creation
+      - message
+      - name
+      - pk
+      - read
+      - source
+      - target
+      - user
+    NotificationUserSetting:
+      type: object
+      description: Serializer for the PluginSetting model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        key:
+          type: string
+          readOnly: true
+        value:
+          type: string
+        name:
+          type: string
+          readOnly: true
+        description:
+          type: string
+          readOnly: true
+        type:
+          type: string
+          readOnly: true
+        choices:
+          type: array
+          items: {}
+          description: Returns the choices available for a given item.
+          readOnly: true
+        model_name:
+          type: string
+          readOnly: true
+        api_url:
+          type: string
+          readOnly: true
+        typ:
+          type: string
+          readOnly: true
+        required:
+          type: boolean
+          readOnly: true
+        method:
+          type: string
+          readOnly: true
+      required:
+      - api_url
+      - choices
+      - description
+      - key
+      - method
+      - model_name
+      - name
+      - pk
+      - required
+      - typ
+      - type
+      - value
+    NullEnum:
+      enum:
+      - null
+    OutcomeEnum:
+      enum:
+      - 10
+      - 20
+      - 30
+      - 40
+      - 50
+      - 60
+      type: integer
+      description: |-
+        * `10` - Pending
+        * `20` - Return
+        * `30` - Repair
+        * `40` - Replace
+        * `50` - Refund
+        * `60` - Reject
+    Owner:
+      type: object
+      description: Serializer for an "Owner" (either a "user" or a "group").
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        owner_id:
+          type: integer
+          nullable: true
+        name:
+          type: string
+          readOnly: true
+        label:
+          type: string
+          readOnly: true
+      required:
+      - label
+      - name
+      - pk
+    PageSizeEnum:
+      enum:
+      - A4
+      - A3
+      - Legal
+      - Letter
+      type: string
+      description: |-
+        * `A4` - A4
+        * `A3` - A3
+        * `Legal` - Legal
+        * `Letter` - Letter
+    PaginatedAddressList:
+      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/Address'
+    PaginatedAllUnitListResponseList:
+      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/AllUnitListResponse'
+    PaginatedApiTokenList:
+      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/ApiToken'
+    PaginatedAttachmentList:
+      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/Attachment'
+    PaginatedBarcodeScanResultList:
+      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/BarcodeScanResult'
+    PaginatedBomItemList:
+      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/BomItem'
+    PaginatedBomItemSubstituteList:
+      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/BomItemSubstitute'
+    PaginatedBuildItemList:
+      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/BuildItem'
+    PaginatedBuildLineList:
+      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/BuildLine'
+    PaginatedBuildList:
+      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/Build'
+    PaginatedCategoryList:
+      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/Category'
+    PaginatedCategoryParameterTemplateList:
+      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/CategoryParameterTemplate'
+    PaginatedCategoryTreeList:
+      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/CategoryTree'
+    PaginatedCompanyList:
+      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/Company'
+    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'
+    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'
+    PaginatedCustomStateList:
+      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/CustomState'
+    PaginatedCustomUnitList:
+      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/CustomUnit'
+    PaginatedDataImportColumnMapList:
+      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/DataImportColumnMap'
+    PaginatedDataImportRowList:
+      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/DataImportRow'
+    PaginatedDataImportSessionList:
+      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/DataImportSession'
+    PaginatedEmailAddressList:
+      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/EmailAddress'
+    PaginatedErrorMessageList:
+      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/ErrorMessage'
+    PaginatedFailedTaskList:
+      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/FailedTask'
+    PaginatedGlobalSettingsList:
+      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/GlobalSettings'
+    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'
+    PaginatedIconPackageList:
+      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/IconPackage'
+    PaginatedLabelOutputList:
+      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/LabelOutput'
+    PaginatedLabelTemplateList:
+      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/LabelTemplate'
+    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'
+    PaginatedLocationTreeList:
+      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/LocationTree'
+    PaginatedMachineConfigList:
+      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/MachineConfig'
+    PaginatedManufacturerPartList:
+      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/ManufacturerPart'
+    PaginatedManufacturerPartParameterList:
+      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/ManufacturerPartParameter'
+    PaginatedNewsFeedEntryList:
+      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/NewsFeedEntry'
+    PaginatedNotesImageList:
+      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/NotesImage'
+    PaginatedNotificationMessageList:
+      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/NotificationMessage'
+    PaginatedNotificationUserSettingList:
+      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/NotificationUserSetting'
+    PaginatedOwnerList:
+      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/Owner'
+    PaginatedPartInternalPriceList:
+      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/PartInternalPrice'
+    PaginatedPartList:
+      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/Part'
+    PaginatedPartParameterList:
+      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/PartParameter'
+    PaginatedPartParameterTemplateList:
+      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/PartParameterTemplate'
+    PaginatedPartRelationList:
+      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/PartRelation'
+    PaginatedPartSalePriceList:
+      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/PartSalePrice'
+    PaginatedPartStocktakeList:
+      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/PartStocktake'
+    PaginatedPartStocktakeReportList:
+      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/PartStocktakeReport'
+    PaginatedPartTestTemplateList:
+      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/PartTestTemplate'
+    PaginatedPartThumbList:
+      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/PartThumb'
+    PaginatedPendingTaskList:
+      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/PendingTask'
+    PaginatedPluginConfigList:
+      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/PluginConfig'
+    PaginatedPluginSettingList:
+      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/PluginSetting'
+    PaginatedProjectCodeList:
+      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/ProjectCode'
+    PaginatedPurchaseOrderExtraLineList:
+      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/PurchaseOrderExtraLine'
+    PaginatedPurchaseOrderLineItemList:
+      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/PurchaseOrderLineItem'
+    PaginatedPurchaseOrderList:
+      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/PurchaseOrder'
+    PaginatedReportAssetList:
+      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/ReportAsset'
+    PaginatedReportOutputList:
+      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/ReportOutput'
+    PaginatedReportSnippetList:
+      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/ReportSnippet'
+    PaginatedReportTemplateList:
+      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/ReportTemplate'
+    PaginatedReturnOrderExtraLineList:
+      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/ReturnOrderExtraLine'
+    PaginatedReturnOrderLineItemList:
+      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/ReturnOrderLineItem'
+    PaginatedReturnOrderList:
+      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/ReturnOrder'
+    PaginatedSalesOrderAllocationList:
+      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/SalesOrderAllocation'
+    PaginatedSalesOrderExtraLineList:
+      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/SalesOrderExtraLine'
+    PaginatedSalesOrderLineItemList:
+      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/SalesOrderLineItem'
+    PaginatedSalesOrderList:
+      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/SalesOrder'
+    PaginatedSalesOrderShipmentList:
+      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/SalesOrderShipment'
+    PaginatedScheduledTaskList:
+      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/ScheduledTask'
+    PaginatedSocialAccountList:
+      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/SocialAccount'
+    PaginatedSocialProviderListResponseList:
+      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/SocialProviderListResponse'
+    PaginatedStockItemList:
+      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/StockItem'
+    PaginatedStockItemTestResultList:
+      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/StockItemTestResult'
+    PaginatedStockLocationTypeList:
+      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/StockLocationType'
+    PaginatedStockTrackingList:
+      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/StockTracking'
+    PaginatedSupplierPartList:
+      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/SupplierPart'
+    PaginatedSupplierPriceBreakList:
+      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/SupplierPriceBreak'
+    PaginatedUserCreateList:
+      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/UserCreate'
+    PaginatedUserSettingsList:
+      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/UserSettings'
+    PaginatedVersionInformationList:
+      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/VersionInformation'
+    Part:
+      type: object
+      description: |-
+        Serializer for complete detail information of a part.
+
+        Used when displaying all details of a single component.
+      properties:
+        active:
+          type: boolean
+          description: Is this part active?
+        assembly:
+          type: boolean
+          description: Can this part be built from other parts?
+        barcode_hash:
+          type: string
+          readOnly: true
+          description: Unique hash of barcode data
+        category:
+          type: integer
+          nullable: true
+        category_name:
+          type: string
+          readOnly: true
+        component:
+          type: boolean
+          description: Can this part be used to build other parts?
+        creation_date:
+          type: string
+          format: date
+          readOnly: true
+          nullable: true
+        creation_user:
+          type: integer
+          nullable: true
+        default_expiry:
+          type: integer
+          minimum: 0
+          description: Expiry time (in days) for stock items of this part
+        default_location:
+          type: integer
+          nullable: true
+          description: Where is this item normally stored?
+        default_supplier:
+          type: integer
+          nullable: true
+          description: Default supplier part
+        description:
+          type: string
+          description: Part description (optional)
+          maxLength: 250
+        full_name:
+          type: string
+          description: Format a 'full name' for this Part based on the format PART_NAME_FORMAT
+            defined in InvenTree settings.
+          readOnly: true
+        image:
+          type: string
+          format: uri
+          nullable: true
+        remote_image:
+          type: string
+          format: uri
+          writeOnly: true
+          description: URL of remote image file
+        existing_image:
+          type: string
+          writeOnly: true
+          description: Filename of an existing part image
+        IPN:
+          type: string
+          default: ''
+          maxLength: 100
+        is_template:
+          type: boolean
+          description: Is this part a template part?
+        keywords:
+          type: string
+          nullable: true
+          description: Part keywords to improve visibility in search results
+          maxLength: 250
+        last_stocktake:
+          type: string
+          format: date
+          nullable: true
+        link:
+          type: string
+          format: uri
+          nullable: true
+          description: Link to external URL
+          maxLength: 200
+        locked:
+          type: boolean
+          description: Locked parts cannot be edited
+        minimum_stock:
+          type: number
+          format: double
+        name:
+          type: string
+          description: Part name
+          maxLength: 100
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        purchaseable:
+          type: boolean
+          description: Can this part be purchased from external suppliers?
+        revision:
+          type: string
+          nullable: true
+          default: ''
+          maxLength: 100
+        revision_of:
+          type: integer
+          nullable: true
+          description: Is this part a revision of another part?
+        revision_count:
+          type: integer
+          readOnly: true
+          title: Revisions
+        salable:
+          type: boolean
+          description: Can this part be sold to customers?
+        starred:
+          type: boolean
+          description: Return "true" if the part is starred by the current user.
+          readOnly: true
+        thumbnail:
+          type: string
+          readOnly: true
+        testable:
+          type: boolean
+          description: Can this part have test results recorded against it?
+        trackable:
+          type: boolean
+          description: Does this part have tracking for unique items?
+        units:
+          type: string
+          nullable: true
+          description: Units of measure for this part
+          maxLength: 20
+        variant_of:
+          type: integer
+          nullable: true
+          description: Is this part a variant of another part?
+        virtual:
+          type: boolean
+          description: Is this a virtual part, such as a software product or license?
+        pricing_min:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        pricing_max:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        pricing_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        responsible:
+          type: integer
+          nullable: true
+        allocated_to_build_orders:
+          type: number
+          format: double
+          readOnly: true
+        allocated_to_sales_orders:
+          type: number
+          format: double
+          readOnly: true
+        building:
+          type: number
+          format: double
+          readOnly: true
+        category_default_location:
+          type: integer
+          readOnly: true
+        in_stock:
+          type: number
+          format: double
+          readOnly: true
+        ordering:
+          type: number
+          format: double
+          readOnly: true
+          title: On Order
+        required_for_build_orders:
+          type: integer
+          readOnly: true
+        required_for_sales_orders:
+          type: integer
+          readOnly: true
+        stock_item_count:
+          type: integer
+          readOnly: true
+          title: Stock Items
+        suppliers:
+          type: integer
+          readOnly: true
+        total_in_stock:
+          type: number
+          format: double
+          readOnly: true
+          title: Total Stock
+        external_stock:
+          type: number
+          format: double
+          readOnly: true
+        unallocated_stock:
+          type: number
+          format: double
+          readOnly: true
+        variant_stock:
+          type: number
+          format: double
+          readOnly: true
+        duplicate:
+          allOf:
+          - $ref: '#/components/schemas/DuplicatePart'
+          writeOnly: true
+          title: Duplicate Part
+          description: Copy initial data from another Part
+        initial_stock:
+          allOf:
+          - $ref: '#/components/schemas/InitialStock'
+          writeOnly: true
+          description: Create Part with initial stock quantity
+        initial_supplier:
+          allOf:
+          - $ref: '#/components/schemas/InitialSupplier'
+          writeOnly: true
+          title: Supplier Information
+          description: Add initial supplier information for this part
+        copy_category_parameters:
+          type: boolean
+          default: true
+          description: Copy parameter templates from selected part category
+        tags:
+          type: array
+          items:
+            type: string
+      required:
+      - allocated_to_build_orders
+      - allocated_to_sales_orders
+      - barcode_hash
+      - building
+      - category_default_location
+      - category_name
+      - creation_date
+      - external_stock
+      - full_name
+      - in_stock
+      - minimum_stock
+      - name
+      - ordering
+      - pk
+      - pricing_max
+      - pricing_min
+      - pricing_updated
+      - required_for_build_orders
+      - required_for_sales_orders
+      - revision_count
+      - starred
+      - stock_item_count
+      - suppliers
+      - thumbnail
+      - total_in_stock
+      - unallocated_stock
+      - variant_stock
+    PartBrief:
+      type: object
+      description: Serializer for Part (brief detail).
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        IPN:
+          type: string
+          nullable: true
+          description: Internal Part Number
+          maxLength: 100
+        barcode_hash:
+          type: string
+          readOnly: true
+          description: Unique hash of barcode data
+        category_default_location:
+          type: integer
+          readOnly: true
+        default_location:
+          type: integer
+          nullable: true
+          description: Where is this item normally stored?
+        name:
+          type: string
+          description: Part name
+          maxLength: 100
+        revision:
+          type: string
+          nullable: true
+          default: ''
+          maxLength: 100
+        full_name:
+          type: string
+          description: Format a 'full name' for this Part based on the format PART_NAME_FORMAT
+            defined in InvenTree settings.
+          readOnly: true
+        description:
+          type: string
+          description: Part description (optional)
+          maxLength: 250
+        image:
+          type: string
+          format: uri
+          readOnly: true
+        thumbnail:
+          type: string
+          readOnly: true
+        active:
+          type: boolean
+          description: Is this part active?
+        locked:
+          type: boolean
+          description: Locked parts cannot be edited
+        assembly:
+          type: boolean
+          description: Can this part be built from other parts?
+        component:
+          type: boolean
+          description: Can this part be used to build other parts?
+        is_template:
+          type: boolean
+          description: Is this part a template part?
+        purchaseable:
+          type: boolean
+          description: Can this part be purchased from external suppliers?
+        salable:
+          type: boolean
+          description: Can this part be sold to customers?
+        testable:
+          type: boolean
+          description: Can this part have test results recorded against it?
+        trackable:
+          type: boolean
+          description: Does this part have tracking for unique items?
+        virtual:
+          type: boolean
+          description: Is this a virtual part, such as a software product or license?
+        units:
+          type: string
+          nullable: true
+          description: Units of measure for this part
+          maxLength: 20
+      required:
+      - barcode_hash
+      - category_default_location
+      - full_name
+      - image
+      - name
+      - pk
+      - thumbnail
+    PartCopyBOM:
+      type: object
+      description: Serializer for copying a BOM from another part.
+      properties:
+        part:
+          type: integer
+          description: Select part to copy BOM from
+        remove_existing:
+          type: boolean
+          default: true
+          title: Remove Existing Data
+          description: Remove existing BOM items before copying
+        include_inherited:
+          type: boolean
+          default: false
+          description: Include BOM items which are inherited from templated parts
+        skip_invalid:
+          type: boolean
+          default: false
+          title: Skip Invalid Rows
+          description: Enable this option to skip invalid rows
+        copy_substitutes:
+          type: boolean
+          default: true
+          title: Copy Substitute Parts
+          description: Copy substitute parts when duplicate BOM items
+      required:
+      - part
+    PartInternalPrice:
+      type: object
+      description: Serializer for internal prices for Part model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        part:
+          type: integer
+        quantity:
+          type: number
+          format: double
+        price:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          nullable: true
+        price_currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          title: Currency
+          description: |-
+            Purchase currency of this stock item
+
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+      required:
+      - part
+      - pk
+      - quantity
+    PartParameter:
+      type: object
+      description: JSON serializers for the PartParameter model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        part:
+          type: integer
+          description: Parent Part
+        template:
+          type: integer
+          description: Parameter Template
+        template_detail:
+          allOf:
+          - $ref: '#/components/schemas/PartParameterTemplate'
+          readOnly: true
+        data:
+          type: string
+          description: Parameter Value
+          maxLength: 500
+          minLength: 1
+        data_numeric:
+          type: number
+          format: double
+          nullable: true
+      required:
+      - data
+      - part
+      - pk
+      - template
+      - template_detail
+    PartParameterTemplate:
+      type: object
+      description: JSON serializer for the PartParameterTemplate model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        name:
+          type: string
+          description: Parameter Name
+          maxLength: 100
+        units:
+          type: string
+          description: Physical units for this parameter
+          maxLength: 25
+        description:
+          type: string
+          description: Parameter description
+          maxLength: 250
+        parts:
+          type: integer
+          readOnly: true
+          description: Number of parts using this template
+        checkbox:
+          type: boolean
+          description: Is this parameter a checkbox?
+        choices:
+          type: string
+          description: Valid choices for this parameter (comma-separated)
+          maxLength: 5000
+      required:
+      - name
+      - parts
+      - pk
+    PartPricing:
+      type: object
+      description: Serializer for Part pricing information.
+      properties:
+        currency:
+          type: string
+          readOnly: true
+          nullable: true
+        updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        scheduled_for_update:
+          type: boolean
+          readOnly: true
+        bom_cost_min:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        bom_cost_max:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        purchase_cost_min:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        purchase_cost_max:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        internal_cost_min:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        internal_cost_max:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        supplier_price_min:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        supplier_price_max:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        variant_cost_min:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        variant_cost_max:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        override_min:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          nullable: true
+          title: Minimum Price
+          description: Override calculated value for minimum price
+        override_min_currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          title: Minimum price currency
+        override_max:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          nullable: true
+          title: Maximum Price
+          description: Override calculated value for maximum price
+        override_max_currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          title: Maximum price currency
+        overall_min:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        overall_max:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        sale_price_min:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        sale_price_max:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        sale_history_min:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        sale_history_max:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        update:
+          type: boolean
+          writeOnly: true
+          nullable: true
+          default: false
+          description: Update pricing for this part
+      required:
+      - bom_cost_max
+      - bom_cost_min
+      - currency
+      - internal_cost_max
+      - internal_cost_min
+      - overall_max
+      - overall_min
+      - purchase_cost_max
+      - purchase_cost_min
+      - sale_history_max
+      - sale_history_min
+      - sale_price_max
+      - sale_price_min
+      - scheduled_for_update
+      - supplier_price_max
+      - supplier_price_min
+      - updated
+      - variant_cost_max
+      - variant_cost_min
+    PartRelation:
+      type: object
+      description: Serializer for a PartRelated model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        part_1:
+          type: integer
+        part_1_detail:
+          allOf:
+          - $ref: '#/components/schemas/Part'
+          readOnly: true
+        part_2:
+          type: integer
+          description: Select Related Part
+        part_2_detail:
+          allOf:
+          - $ref: '#/components/schemas/Part'
+          readOnly: true
+      required:
+      - part_1
+      - part_1_detail
+      - part_2
+      - part_2_detail
+      - pk
+    PartSalePrice:
+      type: object
+      description: Serializer for sale prices for Part model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        part:
+          type: integer
+        quantity:
+          type: number
+          format: double
+        price:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          nullable: true
+        price_currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          title: Currency
+          description: |-
+            Purchase currency of this stock item
+
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+      required:
+      - part
+      - pk
+      - quantity
+    PartScheduling:
+      type: object
+      description: Serializer class for a PartScheduling entry.
+      properties:
+        date:
+          type: string
+          format: date
+          nullable: true
+        quantity:
+          type: number
+          format: double
+        speculative_quantity:
+          type: number
+          format: double
+        title:
+          type: string
+        label:
+          type: string
+        model:
+          type: string
+        model_id:
+          type: integer
+      required:
+      - date
+      - label
+      - model
+      - model_id
+      - quantity
+      - title
+    PartSetCategory:
+      type: object
+      description: Serializer for changing PartCategory for multiple Part objects.
+      properties:
+        parts:
+          type: array
+          items:
+            type: integer
+            title: Parts
+        category:
+          type: integer
+          description: Select category
+      required:
+      - category
+      - parts
+    PartStocktake:
+      type: object
+      description: Serializer for the PartStocktake model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        date:
+          type: string
+          format: date
+          readOnly: true
+          description: Date stocktake was performed
+        part:
+          type: integer
+          description: Part for stocktake
+        item_count:
+          type: integer
+          description: Number of individual stock entries at time of stocktake
+        quantity:
+          type: number
+          format: double
+        cost_min:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          nullable: true
+        cost_min_currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          title: Currency
+          description: |-
+            Select currency from available options
+
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+        cost_max:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          nullable: true
+        cost_max_currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          title: Currency
+          description: |-
+            Select currency from available options
+
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+        note:
+          type: string
+          title: Notes
+          description: Additional notes
+          maxLength: 250
+        user:
+          type: integer
+          readOnly: true
+          nullable: true
+          description: User who performed this stocktake
+        user_detail:
+          allOf:
+          - $ref: '#/components/schemas/User'
+          readOnly: true
+      required:
+      - date
+      - part
+      - pk
+      - quantity
+      - user
+      - user_detail
+    PartStocktakeReport:
+      type: object
+      description: Serializer for stocktake report class.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        date:
+          type: string
+          format: date
+          readOnly: true
+        report:
+          type: string
+          format: uri
+          readOnly: true
+        part_count:
+          type: integer
+          readOnly: true
+          description: Number of parts covered by stocktake
+        user:
+          type: integer
+          readOnly: true
+          nullable: true
+          description: User who requested this stocktake report
+        user_detail:
+          allOf:
+          - $ref: '#/components/schemas/User'
+          readOnly: true
+      required:
+      - date
+      - part_count
+      - pk
+      - report
+      - user
+      - user_detail
+    PartStocktakeReportGenerate:
+      type: object
+      description: Serializer class for manually generating a new PartStocktakeReport
+        via the API.
+      properties:
+        part:
+          type: integer
+          nullable: true
+          description: Limit stocktake report to a particular part, and any variant
+            parts
+        category:
+          type: integer
+          nullable: true
+          description: Limit stocktake report to a particular part category, and any
+            child categories
+        location:
+          type: integer
+          nullable: true
+          description: Limit stocktake report to a particular stock location, and
+            any child locations
+        exclude_external:
+          type: boolean
+          default: true
+          title: Exclude External Stock
+          description: Exclude stock items in external locations
+        generate_report:
+          type: boolean
+          default: true
+          description: Generate report file containing calculated stocktake data
+        update_parts:
+          type: boolean
+          default: true
+          description: Update specified parts with calculated stocktake data
+    PartTestTemplate:
+      type: object
+      description: Serializer for the PartTestTemplate class.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        key:
+          type: string
+          readOnly: true
+        part:
+          type: integer
+        test_name:
+          type: string
+          description: Enter a name for the test
+          maxLength: 100
+        description:
+          type: string
+          nullable: true
+          title: Test Description
+          description: Enter description for this test
+          maxLength: 100
+        enabled:
+          type: boolean
+          description: Is this test enabled?
+        required:
+          type: boolean
+          description: Is this test required to pass?
+        requires_value:
+          type: boolean
+          description: Does this test require a value when adding a test result?
+        requires_attachment:
+          type: boolean
+          description: Does this test require a file attachment when adding a test
+            result?
+        results:
+          type: integer
+          readOnly: true
+          description: Number of results recorded against this template
+        choices:
+          type: string
+          description: Valid choices for this test (comma-separated)
+          maxLength: 5000
+      required:
+      - key
+      - part
+      - pk
+      - results
+      - test_name
+    PartThumb:
+      type: object
+      description: |-
+        Serializer for the 'image' field of the Part model.
+
+        Used to serve and display existing Part images.
+      properties:
+        image:
+          type: string
+          format: uri
+          readOnly: true
+        count:
+          type: integer
+          readOnly: true
+      required:
+      - count
+      - image
+    PartThumbSerializerUpdate:
+      type: object
+      description: Serializer for updating Part thumbnail.
+      properties:
+        image:
+          type: string
+          format: uri
+      required:
+      - image
+    PasswordChange:
+      type: object
+      properties:
+        new_password1:
+          type: string
+          maxLength: 128
+        new_password2:
+          type: string
+          maxLength: 128
+      required:
+      - new_password1
+      - new_password2
+    PasswordReset:
+      type: object
+      description: Serializer for requesting a password reset e-mail.
+      properties:
+        email:
+          type: string
+          format: email
+      required:
+      - email
+    PasswordResetConfirm:
+      type: object
+      description: Serializer for confirming a password reset attempt.
+      properties:
+        new_password1:
+          type: string
+          maxLength: 128
+        new_password2:
+          type: string
+          maxLength: 128
+        uid:
+          type: string
+        token:
+          type: string
+      required:
+      - new_password1
+      - new_password2
+      - token
+      - uid
+    PatchedAddress:
+      type: object
+      description: Serializer for the Address Model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        company:
+          type: integer
+          description: Select company
+        title:
+          type: string
+          title: Address title
+          description: Title describing the address entry
+          maxLength: 100
+        primary:
+          type: boolean
+          title: Primary address
+          description: Set as primary address
+        line1:
+          type: string
+          title: Line 1
+          description: Address line 1
+          maxLength: 50
+        line2:
+          type: string
+          title: Line 2
+          description: Address line 2
+          maxLength: 50
+        postal_code:
+          type: string
+          description: Postal code
+          maxLength: 10
+        postal_city:
+          type: string
+          title: City/Region
+          description: Postal code city/region
+          maxLength: 50
+        province:
+          type: string
+          title: State/Province
+          description: State or province
+          maxLength: 50
+        country:
+          type: string
+          description: Address country
+          maxLength: 50
+        shipping_notes:
+          type: string
+          title: Courier shipping notes
+          description: Notes for shipping courier
+          maxLength: 100
+        internal_shipping_notes:
+          type: string
+          description: Shipping notes for internal use
+          maxLength: 100
+        link:
+          type: string
+          format: uri
+          description: Link to address information (external)
+          maxLength: 200
+    PatchedAttachment:
+      type: object
+      description: Serializer class for the Attachment model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        attachment:
+          type: string
+          format: uri
+          nullable: true
+        filename:
+          type: string
+        link:
+          type: string
+          format: uri
+          nullable: true
+          description: Link to external URL
+          maxLength: 200
+        comment:
+          type: string
+          description: Attachment comment
+          maxLength: 250
+        upload_date:
+          type: string
+          format: date
+          readOnly: true
+        upload_user:
+          type: integer
+          readOnly: true
+          nullable: true
+          title: User
+          description: User
+        user_detail:
+          allOf:
+          - $ref: '#/components/schemas/User'
+          readOnly: true
+        file_size:
+          type: integer
+          readOnly: true
+          description: File size in bytes
+        model_type:
+          $ref: '#/components/schemas/AttachmentModelTypeEnum'
+        model_id:
+          type: integer
+        tags:
+          type: array
+          items:
+            type: string
+    PatchedBOMValidate:
+      type: object
+      description: Simple serializer class for validating a single BomItem instance.
+      properties:
+        checksum:
+          type: string
+          readOnly: true
+        valid:
+          type: boolean
+          writeOnly: true
+          default: false
+          description: Validate entire Bill of Materials
+    PatchedBomItem:
+      type: object
+      description: Serializer for BomItem object.
+      properties:
+        part:
+          type: integer
+          title: Assembly
+          description: Select the parent assembly
+        sub_part:
+          type: integer
+          title: Component
+          description: Select the component part
+        reference:
+          type: string
+          description: BOM item reference
+          maxLength: 5000
+        quantity:
+          type: number
+          format: double
+        overage:
+          type: string
+          description: Estimated build wastage quantity (absolute or percentage)
+          maxLength: 24
+        allow_variants:
+          type: boolean
+          description: Stock items for variant parts can be used for this BOM item
+        inherited:
+          type: boolean
+          title: Gets inherited
+          description: This BOM item is inherited by BOMs for variant parts
+        optional:
+          type: boolean
+          description: This BOM item is optional
+        consumable:
+          type: boolean
+          description: This BOM item is consumable (it is not tracked in build orders)
+        note:
+          type: string
+          description: BOM item notes
+          maxLength: 500
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        pricing_min:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        pricing_max:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        pricing_min_total:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        pricing_max_total:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        pricing_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        substitutes:
+          type: array
+          items:
+            $ref: '#/components/schemas/BomItemSubstitute'
+          readOnly: true
+        validated:
+          type: boolean
+          description: This BOM item has been validated
+        available_stock:
+          type: number
+          format: double
+          readOnly: true
+        available_substitute_stock:
+          type: number
+          format: double
+          readOnly: true
+        available_variant_stock:
+          type: number
+          format: double
+          readOnly: true
+        external_stock:
+          type: number
+          format: double
+          readOnly: true
+        on_order:
+          type: number
+          format: double
+          readOnly: true
+        building:
+          type: number
+          format: double
+          readOnly: true
+          title: In Production
+        can_build:
+          type: number
+          format: double
+          readOnly: true
+    PatchedBomItemSubstitute:
+      type: object
+      description: Serializer for the BomItemSubstitute class.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        bom_item:
+          type: integer
+          description: Parent BOM item
+        part:
+          type: integer
+          description: Substitute part
+        part_detail:
+          allOf:
+          - $ref: '#/components/schemas/PartBrief'
+          readOnly: true
+    PatchedBomItemValidation:
+      type: object
+      description: Simple serializer for passing a single boolean field.
+      properties:
+        valid:
+          type: boolean
+          default: false
+    PatchedBuild:
+      type: object
+      description: Serializes a Build object.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        url:
+          type: string
+          readOnly: true
+        title:
+          type: string
+          title: Description
+          description: Brief description of the build (optional)
+          maxLength: 100
+        barcode_hash:
+          type: string
+          readOnly: true
+        batch:
+          type: string
+          nullable: true
+          title: Batch Code
+          description: Batch code for this build output
+          maxLength: 100
+        creation_date:
+          type: string
+          format: date
+          readOnly: true
+        completed:
+          type: integer
+          readOnly: true
+          title: Completed items
+          description: Number of stock items which have been completed
+        completion_date:
+          type: string
+          format: date
+          nullable: true
+        destination:
+          type: integer
+          nullable: true
+          title: Destination Location
+          description: Select location where the completed items will be stored
+        parent:
+          type: integer
+          nullable: true
+          title: Parent Build
+          description: BuildOrder to which this build is allocated
+        part:
+          type: integer
+          description: Select part to build
+        part_name:
+          type: string
+          readOnly: true
+        part_detail:
+          allOf:
+          - $ref: '#/components/schemas/PartBrief'
+          readOnly: true
+        project_code:
+          type: integer
+          nullable: true
+          description: Project code for this build order
+        project_code_label:
+          type: string
+          readOnly: true
+        project_code_detail:
+          allOf:
+          - $ref: '#/components/schemas/ProjectCode'
+          readOnly: true
+        overdue:
+          type: boolean
+          readOnly: true
+        reference:
+          type: string
+        sales_order:
+          type: integer
+          nullable: true
+          title: Sales Order Reference
+          description: SalesOrder to which this build is allocated
+        quantity:
+          type: number
+          format: double
+        status:
+          allOf:
+          - $ref: '#/components/schemas/StatusC2fEnum'
+          readOnly: true
+          title: Build Status
+          description: |-
+            Build status code
+
+            * `10` - Pending
+            * `20` - Production
+            * `25` - On Hold
+            * `30` - Cancelled
+            * `40` - Complete
+        status_text:
+          type: string
+          readOnly: true
+        status_custom_key:
+          readOnly: true
+          nullable: true
+          title: Custom status key
+          description: |-
+            Additional status information for this item
+
+            * `10` - Pending
+            * `20` - Production
+            * `25` - On Hold
+            * `30` - Cancelled
+            * `40` - Complete
+          oneOf:
+          - $ref: '#/components/schemas/StatusCustomKeyC2fEnum'
+          - $ref: '#/components/schemas/NullEnum'
+        target_date:
+          type: string
+          format: date
+          nullable: true
+          title: Target completion date
+          description: Target date for build completion. Build will be overdue after
+            this date.
+        take_from:
+          type: integer
+          nullable: true
+          title: Source Location
+          description: Select location to take stock from for this build (leave blank
+            to take from any stock location)
+        notes:
+          type: string
+          nullable: true
+          description: Markdown notes (optional)
+          maxLength: 50000
+        link:
+          type: string
+          format: uri
+          title: External Link
+          description: Link to external URL
+          maxLength: 200
+        issued_by:
+          type: integer
+          nullable: true
+          description: User who issued this build order
+        issued_by_detail:
+          allOf:
+          - $ref: '#/components/schemas/User'
+          readOnly: true
+        responsible:
+          type: integer
+          nullable: true
+          description: User or group responsible for this build order
+        responsible_detail:
+          allOf:
+          - $ref: '#/components/schemas/Owner'
+          readOnly: true
+        priority:
+          type: integer
+          minimum: 0
+          title: Build Priority
+          description: Priority of this build order
+        level:
+          type: integer
+          readOnly: true
+          title: Build Level
+    PatchedBuildItem:
+      type: object
+      description: Serializes a BuildItem object, which is an allocation of a stock
+        item against a build order.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        build:
+          type: integer
+          readOnly: true
+        build_line:
+          type: integer
+          nullable: true
+        install_into:
+          type: integer
+          nullable: true
+          description: Destination stock item
+        stock_item:
+          type: integer
+          description: Source stock item
+        quantity:
+          type: number
+          format: double
+          title: Allocated Quantity
+        location:
+          type: integer
+          readOnly: true
+        location_detail:
+          allOf:
+          - $ref: '#/components/schemas/LocationBrief'
+          readOnly: true
+        part_detail:
+          allOf:
+          - $ref: '#/components/schemas/PartBrief'
+          readOnly: true
+        stock_item_detail:
+          allOf:
+          - $ref: '#/components/schemas/StockItemSerializerBrief'
+          readOnly: true
+        supplier_part_detail:
+          allOf:
+          - $ref: '#/components/schemas/SupplierPart'
+          readOnly: true
+        bom_reference:
+          type: string
+          readOnly: true
+        item_serial_number:
+          type: string
+          readOnly: true
+          title: Serial Number
+    PatchedBuildLine:
+      type: object
+      description: Serializer for a BuildItem object.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        build:
+          type: integer
+          readOnly: true
+          description: Build object
+        bom_item:
+          type: integer
+          readOnly: true
+        bom_item_detail:
+          allOf:
+          - $ref: '#/components/schemas/BomItem'
+          readOnly: true
+        part_detail:
+          allOf:
+          - $ref: '#/components/schemas/PartBrief'
+          readOnly: true
+        quantity:
+          type: number
+          format: double
+        allocations:
+          type: array
+          items:
+            $ref: '#/components/schemas/BuildItem'
+          readOnly: true
+        reference:
+          type: string
+          readOnly: true
+        consumable:
+          type: boolean
+          readOnly: true
+        optional:
+          type: boolean
+          readOnly: true
+        testable:
+          type: boolean
+          readOnly: true
+        trackable:
+          type: boolean
+          readOnly: true
+        inherited:
+          type: boolean
+          readOnly: true
+        allow_variants:
+          type: boolean
+          readOnly: true
+        part:
+          type: integer
+          readOnly: true
+        part_name:
+          type: string
+          readOnly: true
+        part_IPN:
+          type: string
+          readOnly: true
+        part_category_id:
+          type: integer
+          readOnly: true
+        allocated:
+          type: number
+          format: double
+          readOnly: true
+          title: Allocated Stock
+        in_production:
+          type: number
+          format: double
+          readOnly: true
+        on_order:
+          type: number
+          format: double
+          readOnly: true
+        available_stock:
+          type: number
+          format: double
+          readOnly: true
+        available_substitute_stock:
+          type: number
+          format: double
+          readOnly: true
+        available_variant_stock:
+          type: number
+          format: double
+          readOnly: true
+        total_available_stock:
+          type: number
+          format: double
+          readOnly: true
+        external_stock:
+          type: number
+          format: double
+          readOnly: true
+    PatchedCategory:
+      type: object
+      description: Serializer for PartCategory.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        name:
+          type: string
+          description: Name
+          maxLength: 100
+        description:
+          type: string
+          description: Description (optional)
+          maxLength: 250
+        default_location:
+          type: integer
+          nullable: true
+          description: Default location for parts in this category
+        default_keywords:
+          type: string
+          nullable: true
+          description: Default keywords for parts in this category
+          maxLength: 250
+        level:
+          type: integer
+          readOnly: true
+        parent:
+          type: integer
+          nullable: true
+          title: Parent Category
+          description: Parent part category
+        part_count:
+          type: integer
+          readOnly: true
+          title: Parts
+        subcategories:
+          type: integer
+          readOnly: true
+        pathstring:
+          type: string
+          readOnly: true
+          title: Path
+          description: Path
+        starred:
+          type: boolean
+          description: Return True if the category is directly "starred" by the current
+            user.
+          readOnly: true
+        url:
+          type: string
+          readOnly: true
+        structural:
+          type: boolean
+          description: Parts may not be directly assigned to a structural category,
+            but may be assigned to child categories.
+        icon:
+          type: string
+          description: Icon (optional)
+          maxLength: 100
+        parent_default_location:
+          type: integer
+          readOnly: true
+    PatchedCategoryParameterTemplate:
+      type: object
+      description: Serializer for the PartCategoryParameterTemplate model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        category:
+          type: integer
+          description: Part Category
+        category_detail:
+          allOf:
+          - $ref: '#/components/schemas/Category'
+          readOnly: true
+        parameter_template:
+          type: integer
+          description: Parameter Template
+        parameter_template_detail:
+          allOf:
+          - $ref: '#/components/schemas/PartParameterTemplate'
+          readOnly: true
+        default_value:
+          type: string
+          description: Default Parameter Value
+          maxLength: 500
+    PatchedCompany:
+      type: object
+      description: Serializer for Company object (full detail).
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        url:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          title: Company name
+          description: Company name
+          maxLength: 100
+        description:
+          type: string
+          title: Company description
+          description: Description of the company
+          maxLength: 500
+        website:
+          type: string
+          format: uri
+          description: Company website URL
+          maxLength: 200
+        phone:
+          type: string
+          title: Phone number
+          description: Contact phone number
+          maxLength: 50
+        address:
+          type: string
+          readOnly: true
+        email:
+          type: string
+          format: email
+          nullable: true
+          default: ''
+        currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          description: |-
+            Default currency used for this supplier
+
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+        contact:
+          type: string
+          description: Point of contact
+          maxLength: 100
+        link:
+          type: string
+          format: uri
+          description: Link to external company information
+          maxLength: 200
+        image:
+          type: string
+          format: uri
+          nullable: true
+        active:
+          type: boolean
+          description: Is this company active?
+        is_customer:
+          type: boolean
+          description: Do you sell items to this company?
+        is_manufacturer:
+          type: boolean
+          description: Does this company manufacture parts?
+        is_supplier:
+          type: boolean
+          description: Do you purchase items from this company?
+        notes:
+          type: string
+          nullable: true
+          description: Markdown notes (optional)
+          maxLength: 50000
+        parts_supplied:
+          type: integer
+          readOnly: true
+        parts_manufactured:
+          type: integer
+          readOnly: true
+        remote_image:
+          type: string
+          format: uri
+          writeOnly: true
+          description: URL of remote image file
+        address_count:
+          type: integer
+          readOnly: true
+        primary_address:
+          allOf:
+          - $ref: '#/components/schemas/Address'
+          readOnly: true
+          nullable: true
+    PatchedContact:
+      type: object
+      description: Serializer class for the Contact model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        company:
+          type: integer
+        company_name:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          maxLength: 100
+        phone:
+          type: string
+          maxLength: 100
+        email:
+          type: string
+          format: email
+          maxLength: 254
+        role:
+          type: string
+          maxLength: 100
+    PatchedCustomState:
+      type: object
+      description: Serializer for the custom state model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        key:
+          type: integer
+          description: Value that will be saved in the models database
+        name:
+          type: string
+          description: Name of the state
+          maxLength: 250
+        label:
+          type: string
+          description: Label that will be displayed in the frontend
+          maxLength: 250
+        color:
+          allOf:
+          - $ref: '#/components/schemas/ColorEnum'
+          description: |-
+            Color that will be displayed in the frontend
+
+            * `primary` - primary
+            * `secondary` - secondary
+            * `success` - success
+            * `danger` - danger
+            * `warning` - warning
+            * `info` - info
+            * `dark` - dark
+        logical_key:
+          type: integer
+          description: State logical key that is equal to this custom state in business
+            logic
+        model:
+          type: integer
+          nullable: true
+          description: Model this state is associated with
+        model_name:
+          type: string
+          readOnly: true
+        reference_status:
+          $ref: '#/components/schemas/ReferenceStatusEnum'
+    PatchedCustomUnit:
+      type: object
+      description: DRF serializer for CustomUnit model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        name:
+          type: string
+          description: Unit name
+          maxLength: 50
+        symbol:
+          type: string
+          description: Optional unit symbol
+          maxLength: 10
+        definition:
+          type: string
+          description: Unit definition
+          maxLength: 50
+    PatchedDataImportColumnMap:
+      type: object
+      description: Serializer for the DataImportColumnMap model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        session:
+          type: integer
+          readOnly: true
+          title: Import Session
+        column:
+          type: string
+          maxLength: 100
+        field:
+          type: string
+          readOnly: true
+        label:
+          type: string
+          readOnly: true
+        description:
+          type: string
+          readOnly: true
+    PatchedDataImportRow:
+      type: object
+      description: Serializer for the DataImportRow model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        session:
+          type: integer
+          readOnly: true
+          title: Import Session
+        row_index:
+          type: integer
+          readOnly: true
+        row_data:
+          readOnly: true
+          nullable: true
+          title: Original row data
+        data:
+          nullable: true
+        errors:
+          readOnly: true
+          nullable: true
+        valid:
+          type: boolean
+          readOnly: true
+        complete:
+          type: boolean
+          readOnly: true
+    PatchedDataImportSession:
+      type: object
+      description: Serializer for the DataImportSession model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        timestamp:
+          type: string
+          format: date-time
+          readOnly: true
+        data_file:
+          type: string
+          format: uri
+        model_type:
+          $ref: '#/components/schemas/DataImportSessionModelTypeEnum'
+        available_fields:
+          readOnly: true
+        status:
+          allOf:
+          - $ref: '#/components/schemas/DataImportSessionStatusEnum'
+          readOnly: true
+          description: |-
+            Import status
+
+            * `0` - Initializing
+            * `10` - Mapping Columns
+            * `20` - Importing Data
+            * `30` - Processing Data
+            * `40` - Complete
+        user:
+          type: integer
+          readOnly: true
+          nullable: true
+        user_detail:
+          allOf:
+          - $ref: '#/components/schemas/User'
+          readOnly: true
+        columns:
+          readOnly: true
+          nullable: true
+        column_mappings:
+          type: array
+          items:
+            $ref: '#/components/schemas/DataImportColumnMap'
+          readOnly: true
+        field_defaults:
+          nullable: true
+        field_overrides:
+          nullable: true
+        field_filters:
+          nullable: true
+        row_count:
+          type: integer
+          readOnly: true
+        completed_row_count:
+          type: integer
+          readOnly: true
+    PatchedErrorMessage:
+      type: object
+      description: DRF serializer for server error messages.
+      properties:
+        when:
+          type: string
+          format: date-time
+          readOnly: true
+        info:
+          type: string
+          readOnly: true
+        data:
+          type: string
+          readOnly: true
+          nullable: true
+        path:
+          type: string
+          format: uri
+          readOnly: true
+          nullable: true
+          maxLength: 200
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+    PatchedExtendedUser:
+      type: object
+      description: Serializer for a User with a bit more info.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        username:
+          type: string
+          description: Username
+        first_name:
+          type: string
+          description: First name of the user
+        last_name:
+          type: string
+          description: Last name of the user
+        email:
+          type: string
+          format: email
+          description: Email address of the user
+        groups:
+          type: array
+          items:
+            $ref: '#/components/schemas/Group'
+          readOnly: true
+        is_staff:
+          type: boolean
+          title: Staff
+          description: Does this user have staff permissions
+        is_superuser:
+          type: boolean
+          title: Superuser
+          description: Is this user a superuser
+        is_active:
+          type: boolean
+          title: Active
+          description: Is this user account active
+    PatchedGlobalSettings:
+      type: object
+      description: Serializer for the InvenTreeSetting model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        key:
+          type: string
+          readOnly: true
+        value:
+          type: string
+        name:
+          type: string
+          readOnly: true
+        description:
+          type: string
+          readOnly: true
+        type:
+          type: string
+          readOnly: true
+        units:
+          type: string
+          readOnly: true
+        choices:
+          type: array
+          items: {}
+          description: Returns the choices available for a given item.
+          readOnly: true
+        model_name:
+          type: string
+          readOnly: true
+        api_url:
+          type: string
+          readOnly: true
+        typ:
+          type: string
+          readOnly: true
+    PatchedGroup:
+      type: object
+      description: Serializer for a 'Group'.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        name:
+          type: string
+          maxLength: 150
+    PatchedLabelTemplate:
+      type: object
+      description: Serializer class for label template model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        name:
+          type: string
+          description: Template name
+          maxLength: 100
+        description:
+          type: string
+          description: Template description
+          maxLength: 250
+        model_type:
+          $ref: '#/components/schemas/ModelType820Enum'
+        template:
+          type: string
+          format: uri
+        filters:
+          type: string
+          description: Template query filters (comma-separated list of key=value pairs)
+          maxLength: 250
+        filename_pattern:
+          type: string
+          description: Pattern for generating filenames
+          maxLength: 100
+        enabled:
+          type: boolean
+          description: Template is enabled
+        revision:
+          type: integer
+          readOnly: true
+        attach_to_model:
+          type: boolean
+          title: Attach to Model on Print
+          description: Save report output as an attachment against linked model instance
+            when printing
+        width:
+          type: number
+          format: double
+          minimum: 2
+          title: Width [mm]
+          description: Label width, specified in mm
+        height:
+          type: number
+          format: double
+          minimum: 2
+          title: Height [mm]
+          description: Label height, specified in mm
+    PatchedLocation:
+      type: object
+      description: Detailed information about a stock location.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        barcode_hash:
+          type: string
+          readOnly: true
+          description: Unique hash of barcode data
+        url:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          description: Name
+          maxLength: 100
+        level:
+          type: integer
+          readOnly: true
+        description:
+          type: string
+          description: Description (optional)
+          maxLength: 250
+        parent:
+          type: integer
+          nullable: true
+          title: Parent Location
+          description: Parent stock location
+        pathstring:
+          type: string
+          readOnly: true
+          title: Path
+          description: Path
+        items:
+          type: integer
+          readOnly: true
+          title: Stock Items
+        sublocations:
+          type: integer
+          readOnly: true
+        owner:
+          type: integer
+          nullable: true
+          description: Select Owner
+        icon:
+          type: string
+          readOnly: true
+        custom_icon:
+          type: string
+          title: Icon
+          description: Icon (optional)
+          maxLength: 100
+        structural:
+          type: boolean
+          description: Stock items may not be directly located into a structural stock
+            locations, but may be located to child locations.
+        external:
+          type: boolean
+          description: This is an external stock location
+        location_type:
+          type: integer
+          nullable: true
+          description: Stock location type of this location
+        location_type_detail:
+          allOf:
+          - $ref: '#/components/schemas/StockLocationType'
+          readOnly: true
+        tags:
+          type: array
+          items:
+            type: string
+    PatchedMachineConfig:
+      type: object
+      description: Serializer for a MachineConfig.
+      properties:
+        pk:
+          type: string
+          format: uuid
+          readOnly: true
+          title: Id
+        name:
+          type: string
+          description: Name of machine
+          maxLength: 255
+        machine_type:
+          type: string
+          readOnly: true
+          description: Type of machine
+        driver:
+          type: string
+          readOnly: true
+          description: Driver used for the machine
+        initialized:
+          type: boolean
+          description: Serializer method for the initialized field.
+          readOnly: true
+        active:
+          type: boolean
+          description: Machines can be disabled
+        status:
+          type: integer
+          description: Serializer method for the status field.
+          readOnly: true
+        status_model:
+          type: string
+          nullable: true
+          description: Serializer method for the status model field.
+          readOnly: true
+        status_text:
+          type: string
+          description: Serializer method for the status text field.
+          readOnly: true
+        machine_errors:
+          type: array
+          items:
+            type: string
+          description: Serializer method for the errors field.
+          readOnly: true
+        is_driver_available:
+          type: boolean
+          description: Serializer method for the is_driver_available field.
+          readOnly: true
+        restart_required:
+          type: boolean
+          description: Serializer method for the restart_required field.
+          readOnly: true
+    PatchedMachineSetting:
+      type: object
+      description: Serializer for the MachineSetting model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        key:
+          type: string
+          readOnly: true
+        value:
+          type: string
+        name:
+          type: string
+          readOnly: true
+        description:
+          type: string
+          readOnly: true
+        type:
+          type: string
+          readOnly: true
+        choices:
+          type: array
+          items: {}
+          description: Returns the choices available for a given item.
+          readOnly: true
+        model_name:
+          type: string
+          readOnly: true
+        api_url:
+          type: string
+          readOnly: true
+        typ:
+          type: string
+          readOnly: true
+        required:
+          type: boolean
+          readOnly: true
+        config_type:
+          allOf:
+          - $ref: '#/components/schemas/ConfigTypeEnum'
+          readOnly: true
+    PatchedManufacturerPart:
+      type: object
+      description: Serializer for ManufacturerPart object.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        part:
+          type: integer
+          title: Base Part
+          description: Select part
+        part_detail:
+          allOf:
+          - $ref: '#/components/schemas/PartBrief'
+          readOnly: true
+        manufacturer:
+          type: integer
+        manufacturer_detail:
+          allOf:
+          - $ref: '#/components/schemas/CompanyBrief'
+          readOnly: true
+        description:
+          type: string
+          nullable: true
+          description: Manufacturer part description
+          maxLength: 250
+        MPN:
+          type: string
+          nullable: true
+          description: Manufacturer Part Number
+          maxLength: 100
+        link:
+          type: string
+          format: uri
+          nullable: true
+          description: URL for external manufacturer part link
+          maxLength: 200
+        barcode_hash:
+          type: string
+          description: Unique hash of barcode data
+          maxLength: 128
+        notes:
+          type: string
+          nullable: true
+          description: Markdown notes (optional)
+          maxLength: 50000
+        tags:
+          type: array
+          items:
+            type: string
+    PatchedManufacturerPartParameter:
+      type: object
+      description: Serializer for the ManufacturerPartParameter model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        manufacturer_part:
+          type: integer
+        name:
+          type: string
+          description: Parameter name
+          maxLength: 500
+        value:
+          type: string
+          description: Parameter value
+          maxLength: 500
+        units:
+          type: string
+          nullable: true
+          description: Parameter units
+          maxLength: 64
+    PatchedMeUser:
+      type: object
+      description: API serializer specifically for the 'me' endpoint.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        username:
+          type: string
+          description: Username
+        first_name:
+          type: string
+          description: First name of the user
+        last_name:
+          type: string
+          description: Last name of the user
+        email:
+          type: string
+          format: email
+          description: Email address of the user
+        groups:
+          type: array
+          items:
+            $ref: '#/components/schemas/Group'
+          readOnly: true
+        is_staff:
+          type: boolean
+          title: Staff
+          description: Does this user have staff permissions
+        is_superuser:
+          type: boolean
+          title: Superuser
+          description: Is this user a superuser
+        is_active:
+          type: boolean
+          title: Active
+          description: Is this user account active
+    PatchedMetadata:
+      type: object
+      description: Serializer class for model metadata API access.
+      properties:
+        metadata: {}
+    PatchedNewsFeedEntry:
+      type: object
+      description: Serializer for the NewsFeedEntry model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        feed_id:
+          type: string
+          title: Id
+          maxLength: 250
+        title:
+          type: string
+          maxLength: 250
+        link:
+          type: string
+          format: uri
+          maxLength: 250
+        published:
+          type: string
+          format: date-time
+        author:
+          type: string
+          maxLength: 250
+        summary:
+          type: string
+          maxLength: 250
+        read:
+          type: boolean
+    PatchedNotificationMessage:
+      type: object
+      description: Serializer for the InvenTreeUserSetting model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        target:
+          type: object
+          additionalProperties: {}
+          description: Function to resolve generic object reference to target.
+          readOnly: true
+        source:
+          type: object
+          additionalProperties: {}
+          description: Function to resolve generic object reference to source.
+          readOnly: true
+        user:
+          type: integer
+          readOnly: true
+        category:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          readOnly: true
+        message:
+          type: string
+          readOnly: true
+          nullable: true
+        creation:
+          type: string
+          format: date-time
+          readOnly: true
+        age:
+          type: integer
+          description: Age of the message in seconds.
+          readOnly: true
+        age_human:
+          type: string
+          description: Humanized age.
+          readOnly: true
+        read:
+          type: boolean
+    PatchedNotificationUserSetting:
+      type: object
+      description: Serializer for the PluginSetting model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        key:
+          type: string
+          readOnly: true
+        value:
+          type: string
+        name:
+          type: string
+          readOnly: true
+        description:
+          type: string
+          readOnly: true
+        type:
+          type: string
+          readOnly: true
+        choices:
+          type: array
+          items: {}
+          description: Returns the choices available for a given item.
+          readOnly: true
+        model_name:
+          type: string
+          readOnly: true
+        api_url:
+          type: string
+          readOnly: true
+        typ:
+          type: string
+          readOnly: true
+        required:
+          type: boolean
+          readOnly: true
+        method:
+          type: string
+          readOnly: true
+    PatchedPart:
+      type: object
+      description: |-
+        Serializer for complete detail information of a part.
+
+        Used when displaying all details of a single component.
+      properties:
+        active:
+          type: boolean
+          description: Is this part active?
+        assembly:
+          type: boolean
+          description: Can this part be built from other parts?
+        barcode_hash:
+          type: string
+          readOnly: true
+          description: Unique hash of barcode data
+        category:
+          type: integer
+          nullable: true
+        category_name:
+          type: string
+          readOnly: true
+        component:
+          type: boolean
+          description: Can this part be used to build other parts?
+        creation_date:
+          type: string
+          format: date
+          readOnly: true
+          nullable: true
+        creation_user:
+          type: integer
+          nullable: true
+        default_expiry:
+          type: integer
+          minimum: 0
+          description: Expiry time (in days) for stock items of this part
+        default_location:
+          type: integer
+          nullable: true
+          description: Where is this item normally stored?
+        default_supplier:
+          type: integer
+          nullable: true
+          description: Default supplier part
+        description:
+          type: string
+          description: Part description (optional)
+          maxLength: 250
+        full_name:
+          type: string
+          description: Format a 'full name' for this Part based on the format PART_NAME_FORMAT
+            defined in InvenTree settings.
+          readOnly: true
+        image:
+          type: string
+          format: uri
+          nullable: true
+        remote_image:
+          type: string
+          format: uri
+          writeOnly: true
+          description: URL of remote image file
+        existing_image:
+          type: string
+          writeOnly: true
+          description: Filename of an existing part image
+        IPN:
+          type: string
+          default: ''
+          maxLength: 100
+        is_template:
+          type: boolean
+          description: Is this part a template part?
+        keywords:
+          type: string
+          nullable: true
+          description: Part keywords to improve visibility in search results
+          maxLength: 250
+        last_stocktake:
+          type: string
+          format: date
+          nullable: true
+        link:
+          type: string
+          format: uri
+          nullable: true
+          description: Link to external URL
+          maxLength: 200
+        locked:
+          type: boolean
+          description: Locked parts cannot be edited
+        minimum_stock:
+          type: number
+          format: double
+        name:
+          type: string
+          description: Part name
+          maxLength: 100
+        notes:
+          type: string
+          nullable: true
+          description: Markdown notes (optional)
+          maxLength: 50000
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        purchaseable:
+          type: boolean
+          description: Can this part be purchased from external suppliers?
+        revision:
+          type: string
+          nullable: true
+          default: ''
+          maxLength: 100
+        revision_of:
+          type: integer
+          nullable: true
+          description: Is this part a revision of another part?
+        revision_count:
+          type: integer
+          readOnly: true
+          title: Revisions
+        salable:
+          type: boolean
+          description: Can this part be sold to customers?
+        starred:
+          type: boolean
+          description: Return "true" if the part is starred by the current user.
+          readOnly: true
+        thumbnail:
+          type: string
+          readOnly: true
+        testable:
+          type: boolean
+          description: Can this part have test results recorded against it?
+        trackable:
+          type: boolean
+          description: Does this part have tracking for unique items?
+        units:
+          type: string
+          nullable: true
+          description: Units of measure for this part
+          maxLength: 20
+        variant_of:
+          type: integer
+          nullable: true
+          description: Is this part a variant of another part?
+        virtual:
+          type: boolean
+          description: Is this a virtual part, such as a software product or license?
+        pricing_min:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        pricing_max:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        pricing_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        responsible:
+          type: integer
+          nullable: true
+        allocated_to_build_orders:
+          type: number
+          format: double
+          readOnly: true
+        allocated_to_sales_orders:
+          type: number
+          format: double
+          readOnly: true
+        building:
+          type: number
+          format: double
+          readOnly: true
+        category_default_location:
+          type: integer
+          readOnly: true
+        in_stock:
+          type: number
+          format: double
+          readOnly: true
+        ordering:
+          type: number
+          format: double
+          readOnly: true
+          title: On Order
+        required_for_build_orders:
+          type: integer
+          readOnly: true
+        required_for_sales_orders:
+          type: integer
+          readOnly: true
+        stock_item_count:
+          type: integer
+          readOnly: true
+          title: Stock Items
+        suppliers:
+          type: integer
+          readOnly: true
+        total_in_stock:
+          type: number
+          format: double
+          readOnly: true
+          title: Total Stock
+        external_stock:
+          type: number
+          format: double
+          readOnly: true
+        unallocated_stock:
+          type: number
+          format: double
+          readOnly: true
+        variant_stock:
+          type: number
+          format: double
+          readOnly: true
+        tags:
+          type: array
+          items:
+            type: string
+    PatchedPartInternalPrice:
+      type: object
+      description: Serializer for internal prices for Part model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        part:
+          type: integer
+        quantity:
+          type: number
+          format: double
+        price:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          nullable: true
+        price_currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          title: Currency
+          description: |-
+            Purchase currency of this stock item
+
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+    PatchedPartParameter:
+      type: object
+      description: JSON serializers for the PartParameter model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        part:
+          type: integer
+          description: Parent Part
+        template:
+          type: integer
+          description: Parameter Template
+        template_detail:
+          allOf:
+          - $ref: '#/components/schemas/PartParameterTemplate'
+          readOnly: true
+        data:
+          type: string
+          description: Parameter Value
+          maxLength: 500
+          minLength: 1
+        data_numeric:
+          type: number
+          format: double
+          nullable: true
+    PatchedPartParameterTemplate:
+      type: object
+      description: JSON serializer for the PartParameterTemplate model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        name:
+          type: string
+          description: Parameter Name
+          maxLength: 100
+        units:
+          type: string
+          description: Physical units for this parameter
+          maxLength: 25
+        description:
+          type: string
+          description: Parameter description
+          maxLength: 250
+        parts:
+          type: integer
+          readOnly: true
+          description: Number of parts using this template
+        checkbox:
+          type: boolean
+          description: Is this parameter a checkbox?
+        choices:
+          type: string
+          description: Valid choices for this parameter (comma-separated)
+          maxLength: 5000
+    PatchedPartPricing:
+      type: object
+      description: Serializer for Part pricing information.
+      properties:
+        currency:
+          type: string
+          readOnly: true
+          nullable: true
+        updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        scheduled_for_update:
+          type: boolean
+          readOnly: true
+        bom_cost_min:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        bom_cost_max:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        purchase_cost_min:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        purchase_cost_max:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        internal_cost_min:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        internal_cost_max:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        supplier_price_min:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        supplier_price_max:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        variant_cost_min:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        variant_cost_max:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        override_min:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          nullable: true
+          title: Minimum Price
+          description: Override calculated value for minimum price
+        override_min_currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          title: Minimum price currency
+        override_max:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          nullable: true
+          title: Maximum Price
+          description: Override calculated value for maximum price
+        override_max_currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          title: Maximum price currency
+        overall_min:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        overall_max:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        sale_price_min:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        sale_price_max:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        sale_history_min:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        sale_history_max:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        update:
+          type: boolean
+          writeOnly: true
+          nullable: true
+          default: false
+          description: Update pricing for this part
+    PatchedPartRelation:
+      type: object
+      description: Serializer for a PartRelated model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        part_1:
+          type: integer
+        part_1_detail:
+          allOf:
+          - $ref: '#/components/schemas/Part'
+          readOnly: true
+        part_2:
+          type: integer
+          description: Select Related Part
+        part_2_detail:
+          allOf:
+          - $ref: '#/components/schemas/Part'
+          readOnly: true
+    PatchedPartSalePrice:
+      type: object
+      description: Serializer for sale prices for Part model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        part:
+          type: integer
+        quantity:
+          type: number
+          format: double
+        price:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          nullable: true
+        price_currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          title: Currency
+          description: |-
+            Purchase currency of this stock item
+
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+    PatchedPartStocktake:
+      type: object
+      description: Serializer for the PartStocktake model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        date:
+          type: string
+          format: date
+          readOnly: true
+          description: Date stocktake was performed
+        part:
+          type: integer
+          description: Part for stocktake
+        item_count:
+          type: integer
+          description: Number of individual stock entries at time of stocktake
+        quantity:
+          type: number
+          format: double
+        cost_min:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          nullable: true
+        cost_min_currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          title: Currency
+          description: |-
+            Select currency from available options
+
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+        cost_max:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          nullable: true
+        cost_max_currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          title: Currency
+          description: |-
+            Select currency from available options
+
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+        note:
+          type: string
+          title: Notes
+          description: Additional notes
+          maxLength: 250
+        user:
+          type: integer
+          readOnly: true
+          nullable: true
+          description: User who performed this stocktake
+        user_detail:
+          allOf:
+          - $ref: '#/components/schemas/User'
+          readOnly: true
+    PatchedPartStocktakeReport:
+      type: object
+      description: Serializer for stocktake report class.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        date:
+          type: string
+          format: date
+          readOnly: true
+        report:
+          type: string
+          format: uri
+          readOnly: true
+        part_count:
+          type: integer
+          readOnly: true
+          description: Number of parts covered by stocktake
+        user:
+          type: integer
+          readOnly: true
+          nullable: true
+          description: User who requested this stocktake report
+        user_detail:
+          allOf:
+          - $ref: '#/components/schemas/User'
+          readOnly: true
+    PatchedPartTestTemplate:
+      type: object
+      description: Serializer for the PartTestTemplate class.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        key:
+          type: string
+          readOnly: true
+        part:
+          type: integer
+        test_name:
+          type: string
+          description: Enter a name for the test
+          maxLength: 100
+        description:
+          type: string
+          nullable: true
+          title: Test Description
+          description: Enter description for this test
+          maxLength: 100
+        enabled:
+          type: boolean
+          description: Is this test enabled?
+        required:
+          type: boolean
+          description: Is this test required to pass?
+        requires_value:
+          type: boolean
+          description: Does this test require a value when adding a test result?
+        requires_attachment:
+          type: boolean
+          description: Does this test require a file attachment when adding a test
+            result?
+        results:
+          type: integer
+          readOnly: true
+          description: Number of results recorded against this template
+        choices:
+          type: string
+          description: Valid choices for this test (comma-separated)
+          maxLength: 5000
+    PatchedPartThumbSerializerUpdate:
+      type: object
+      description: Serializer for updating Part thumbnail.
+      properties:
+        image:
+          type: string
+          format: uri
+    PatchedPluginActivate:
+      type: object
+      description: Serializer for activating or deactivating a plugin.
+      properties:
+        active:
+          type: boolean
+          default: true
+          title: Activate Plugin
+          description: Activate this plugin
+    PatchedPluginSetting:
+      type: object
+      description: Serializer for the PluginSetting model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        key:
+          type: string
+          readOnly: true
+        value:
+          type: string
+        name:
+          type: string
+          readOnly: true
+        description:
+          type: string
+          readOnly: true
+        type:
+          type: string
+          readOnly: true
+        choices:
+          type: array
+          items: {}
+          description: Returns the choices available for a given item.
+          readOnly: true
+        model_name:
+          type: string
+          readOnly: true
+        api_url:
+          type: string
+          readOnly: true
+        typ:
+          type: string
+          readOnly: true
+        required:
+          type: boolean
+          readOnly: true
+        plugin:
+          type: string
+          readOnly: true
+    PatchedPluginUninstall:
+      type: object
+      description: Serializer for uninstalling a plugin.
+      properties:
+        delete_config:
+          type: boolean
+          default: true
+          title: Delete configuration
+          description: Delete the plugin configuration from the database
+    PatchedProjectCode:
+      type: object
+      description: Serializer for the ProjectCode model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        code:
+          type: string
+          title: Project Code
+          description: Unique project code
+          maxLength: 50
+        description:
+          type: string
+          description: Project description
+          maxLength: 200
+        responsible:
+          type: integer
+          nullable: true
+          description: User or group responsible for this project
+        responsible_detail:
+          allOf:
+          - $ref: '#/components/schemas/Owner'
+          readOnly: true
+    PatchedPurchaseOrder:
+      type: object
+      description: Serializer for a PurchaseOrder object.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        creation_date:
+          type: string
+          format: date
+          nullable: true
+        target_date:
+          type: string
+          format: date
+          nullable: true
+          description: Expected date for order delivery. Order will be overdue after
+            this date.
+        description:
+          type: string
+          description: Order description (optional)
+          maxLength: 250
+        line_items:
+          type: integer
+          readOnly: true
+        completed_lines:
+          type: integer
+          readOnly: true
+        link:
+          type: string
+          format: uri
+          description: Link to external page
+          maxLength: 200
+        project_code:
+          type: integer
+          nullable: true
+          description: Select project code for this order
+        project_code_label:
+          type: string
+          readOnly: true
+        project_code_detail:
+          allOf:
+          - $ref: '#/components/schemas/ProjectCode'
+          readOnly: true
+        reference:
+          type: string
+        responsible:
+          type: integer
+          nullable: true
+          description: User or group responsible for this order
+        responsible_detail:
+          allOf:
+          - $ref: '#/components/schemas/Owner'
+          readOnly: true
+        contact:
+          type: integer
+          nullable: true
+          description: Point of contact for this order
+        contact_detail:
+          allOf:
+          - $ref: '#/components/schemas/Contact'
+          readOnly: true
+        address:
+          type: integer
+          nullable: true
+          description: Company address for this order
+        address_detail:
+          allOf:
+          - $ref: '#/components/schemas/AddressBrief'
+          readOnly: true
+        status:
+          type: integer
+          readOnly: true
+          title: Order Status
+        status_text:
+          type: string
+          readOnly: true
+        status_custom_key:
+          readOnly: true
+          nullable: true
+          title: Custom status key
+          description: |-
+            Additional status information for this item
+
+            * `10` - Pending
+            * `20` - Placed
+            * `25` - On Hold
+            * `30` - Complete
+            * `40` - Cancelled
+            * `50` - Lost
+            * `60` - Returned
+          oneOf:
+          - $ref: '#/components/schemas/PurchaseOrderStatusCustomKeyEnum'
+          - $ref: '#/components/schemas/NullEnum'
+        notes:
+          type: string
+          nullable: true
+          description: Markdown notes (optional)
+          maxLength: 50000
+        barcode_hash:
+          type: string
+          readOnly: true
+        overdue:
+          type: boolean
+          readOnly: true
+        duplicate:
+          allOf:
+          - $ref: '#/components/schemas/DuplicateOrder'
+          writeOnly: true
+          title: Duplicate Order
+          description: Specify options for duplicating this order
+        issue_date:
+          type: string
+          format: date
+          readOnly: true
+          nullable: true
+          description: Date order was issued
+        complete_date:
+          type: string
+          format: date
+          readOnly: true
+          nullable: true
+          title: Completion Date
+          description: Date order was completed
+        supplier:
+          type: integer
+          nullable: true
+          description: Company from which the items are being ordered
+        supplier_reference:
+          type: string
+          description: Supplier order reference code
+          maxLength: 64
+        supplier_name:
+          type: string
+          readOnly: true
+        total_price:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        order_currency:
+          nullable: true
+          description: |-
+            Currency for this order (leave blank to use company default)
+
+            * `` - ---------
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+          oneOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          - $ref: '#/components/schemas/BlankEnum'
+          - $ref: '#/components/schemas/NullEnum'
+    PatchedPurchaseOrderExtraLine:
+      type: object
+      description: Serializer for a PurchaseOrderExtraLine object.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        description:
+          type: string
+          description: Line item description (optional)
+          maxLength: 250
+        quantity:
+          type: number
+          format: double
+        reference:
+          type: string
+          description: Line item reference
+          maxLength: 100
+        notes:
+          type: string
+          description: Line item notes
+          maxLength: 500
+        context:
+          nullable: true
+          description: Additional context for this line
+        order:
+          type: integer
+          description: Purchase Order
+        price:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          nullable: true
+        price_currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          title: Currency
+          description: |-
+            Select currency from available options
+
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+        link:
+          type: string
+          format: uri
+          description: Link to external page
+          maxLength: 200
+    PatchedPurchaseOrderLineItem:
+      type: object
+      description: Serializer class for the PurchaseOrderLineItem model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        part:
+          type: integer
+          nullable: true
+          title: Supplier Part
+        quantity:
+          type: number
+          format: double
+          minimum: 0
+        reference:
+          type: string
+          description: Line item reference
+          maxLength: 100
+        notes:
+          type: string
+          description: Line item notes
+          maxLength: 500
+        order:
+          type: integer
+          description: Purchase Order
+        overdue:
+          type: boolean
+          readOnly: true
+        received:
+          type: number
+          format: double
+          readOnly: true
+          default: 0.0
+        purchase_price:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          nullable: true
+        purchase_price_currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          title: Currency
+          description: |-
+            Purchase price currency
+
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+        auto_pricing:
+          type: boolean
+          default: true
+          description: Automatically calculate purchase price based on supplier part
+            data
+        destination:
+          type: integer
+          nullable: true
+          description: Where does the Purchaser want this item to be stored?
+        destination_detail:
+          allOf:
+          - $ref: '#/components/schemas/LocationBrief'
+          readOnly: true
+        target_date:
+          type: string
+          format: date
+          nullable: true
+          description: Target date for this line item (leave blank to use the target
+            date from the order)
+        total_price:
+          type: number
+          format: double
+          readOnly: true
+        link:
+          type: string
+          format: uri
+          description: Link to external page
+          maxLength: 200
+        merge_items:
+          type: boolean
+          writeOnly: true
+          default: true
+          description: Merge items with the same part, destination and target date
+            into one line item
+        sku:
+          type: string
+          readOnly: true
+        mpn:
+          type: string
+          readOnly: true
+        ipn:
+          type: string
+          readOnly: true
+          title: Internal Part Number
+        internal_part:
+          type: integer
+          readOnly: true
+        internal_part_name:
+          type: string
+          readOnly: true
+    PatchedReportAsset:
+      type: object
+      description: Serializer class for the ReportAsset model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        asset:
+          type: string
+          format: uri
+        description:
+          type: string
+          description: Asset file description
+          maxLength: 250
+    PatchedReportSnippet:
+      type: object
+      description: Serializer class for the ReportSnippet model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        snippet:
+          type: string
+          format: uri
+        description:
+          type: string
+          description: Snippet file description
+          maxLength: 250
+    PatchedReportTemplate:
+      type: object
+      description: Serializer class for report template model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        name:
+          type: string
+          description: Template name
+          maxLength: 100
+        description:
+          type: string
+          description: Template description
+          maxLength: 250
+        model_type:
+          $ref: '#/components/schemas/ModelType820Enum'
+        template:
+          type: string
+          format: uri
+        filters:
+          type: string
+          description: Template query filters (comma-separated list of key=value pairs)
+          maxLength: 250
+        filename_pattern:
+          type: string
+          description: Pattern for generating filenames
+          maxLength: 100
+        enabled:
+          type: boolean
+          description: Template is enabled
+        revision:
+          type: integer
+          readOnly: true
+        attach_to_model:
+          type: boolean
+          title: Attach to Model on Print
+          description: Save report output as an attachment against linked model instance
+            when printing
+        page_size:
+          allOf:
+          - $ref: '#/components/schemas/PageSizeEnum'
+          default: A4
+        landscape:
+          type: boolean
+          description: Render report in landscape orientation
+    PatchedReturnOrder:
+      type: object
+      description: Serializer for the ReturnOrder model class.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        creation_date:
+          type: string
+          format: date
+          nullable: true
+        target_date:
+          type: string
+          format: date
+          nullable: true
+          description: Expected date for order delivery. Order will be overdue after
+            this date.
+        description:
+          type: string
+          description: Order description (optional)
+          maxLength: 250
+        line_items:
+          type: integer
+          readOnly: true
+        completed_lines:
+          type: integer
+          readOnly: true
+        link:
+          type: string
+          format: uri
+          description: Link to external page
+          maxLength: 200
+        project_code:
+          type: integer
+          nullable: true
+          description: Select project code for this order
+        project_code_label:
+          type: string
+          readOnly: true
+        project_code_detail:
+          allOf:
+          - $ref: '#/components/schemas/ProjectCode'
+          readOnly: true
+        reference:
+          type: string
+        responsible:
+          type: integer
+          nullable: true
+          description: User or group responsible for this order
+        responsible_detail:
+          allOf:
+          - $ref: '#/components/schemas/Owner'
+          readOnly: true
+        contact:
+          type: integer
+          nullable: true
+          description: Point of contact for this order
+        contact_detail:
+          allOf:
+          - $ref: '#/components/schemas/Contact'
+          readOnly: true
+        address:
+          type: integer
+          nullable: true
+          description: Company address for this order
+        address_detail:
+          allOf:
+          - $ref: '#/components/schemas/AddressBrief'
+          readOnly: true
+        status:
+          type: integer
+          readOnly: true
+          title: Order Status
+        status_text:
+          type: string
+          readOnly: true
+        status_custom_key:
+          readOnly: true
+          nullable: true
+          title: Custom status key
+          description: |-
+            Additional status information for this item
+
+            * `10` - Pending
+            * `20` - In Progress
+            * `25` - On Hold
+            * `30` - Complete
+            * `40` - Cancelled
+          oneOf:
+          - $ref: '#/components/schemas/ReturnOrderStatusCustomKeyEnum'
+          - $ref: '#/components/schemas/NullEnum'
+        notes:
+          type: string
+          nullable: true
+          description: Markdown notes (optional)
+          maxLength: 50000
+        barcode_hash:
+          type: string
+          readOnly: true
+        overdue:
+          type: boolean
+          readOnly: true
+        duplicate:
+          allOf:
+          - $ref: '#/components/schemas/DuplicateOrder'
+          writeOnly: true
+          title: Duplicate Order
+          description: Specify options for duplicating this order
+        customer:
+          type: integer
+          nullable: true
+          description: Company from which items are being returned
+        customer_reference:
+          type: string
+          description: Customer order reference code
+          maxLength: 64
+        order_currency:
+          nullable: true
+          description: |-
+            Currency for this order (leave blank to use company default)
+
+            * `` - ---------
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+          oneOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          - $ref: '#/components/schemas/BlankEnum'
+          - $ref: '#/components/schemas/NullEnum'
+        total_price:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+    PatchedReturnOrderExtraLine:
+      type: object
+      description: Serializer for a ReturnOrderExtraLine object.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        description:
+          type: string
+          description: Line item description (optional)
+          maxLength: 250
+        quantity:
+          type: number
+          format: double
+        reference:
+          type: string
+          description: Line item reference
+          maxLength: 100
+        notes:
+          type: string
+          description: Line item notes
+          maxLength: 500
+        context:
+          nullable: true
+          description: Additional context for this line
+        order:
+          type: integer
+          description: Return Order
+        price:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          nullable: true
+        price_currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          title: Currency
+          description: |-
+            Select currency from available options
+
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+        link:
+          type: string
+          format: uri
+          description: Link to external page
+          maxLength: 200
+    PatchedReturnOrderLineItem:
+      type: object
+      description: Serializer for a ReturnOrderLineItem object.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        order:
+          type: integer
+          description: Return Order
+        item:
+          type: integer
+          description: Select item to return from customer
+        item_detail:
+          allOf:
+          - $ref: '#/components/schemas/StockItem'
+          readOnly: true
+        received_date:
+          type: string
+          format: date
+          nullable: true
+          description: The date this this return item was received
+        outcome:
+          allOf:
+          - $ref: '#/components/schemas/OutcomeEnum'
+          description: |-
+            Outcome for this line item
+
+            * `10` - Pending
+            * `20` - Return
+            * `30` - Repair
+            * `40` - Replace
+            * `50` - Refund
+            * `60` - Reject
+        price:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          nullable: true
+        price_currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          title: Currency
+          description: |-
+            Line price currency
+
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+        link:
+          type: string
+          format: uri
+          description: Link to external page
+          maxLength: 200
+        reference:
+          type: string
+          description: Line item reference
+          maxLength: 100
+        notes:
+          type: string
+          description: Line item notes
+          maxLength: 500
+        target_date:
+          type: string
+          format: date
+          nullable: true
+          description: Target date for this line item (leave blank to use the target
+            date from the order)
+    PatchedSalesOrder:
+      type: object
+      description: Serializer for the SalesOrder model class.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        creation_date:
+          type: string
+          format: date
+          nullable: true
+        target_date:
+          type: string
+          format: date
+          nullable: true
+          description: Expected date for order delivery. Order will be overdue after
+            this date.
+        description:
+          type: string
+          description: Order description (optional)
+          maxLength: 250
+        line_items:
+          type: integer
+          readOnly: true
+        completed_lines:
+          type: integer
+          readOnly: true
+        link:
+          type: string
+          format: uri
+          description: Link to external page
+          maxLength: 200
+        project_code:
+          type: integer
+          nullable: true
+          description: Select project code for this order
+        project_code_label:
+          type: string
+          readOnly: true
+        project_code_detail:
+          allOf:
+          - $ref: '#/components/schemas/ProjectCode'
+          readOnly: true
+        reference:
+          type: string
+        responsible:
+          type: integer
+          nullable: true
+          description: User or group responsible for this order
+        responsible_detail:
+          allOf:
+          - $ref: '#/components/schemas/Owner'
+          readOnly: true
+        contact:
+          type: integer
+          nullable: true
+          description: Point of contact for this order
+        contact_detail:
+          allOf:
+          - $ref: '#/components/schemas/Contact'
+          readOnly: true
+        address:
+          type: integer
+          nullable: true
+          description: Company address for this order
+        address_detail:
+          allOf:
+          - $ref: '#/components/schemas/AddressBrief'
+          readOnly: true
+        status:
+          type: integer
+          readOnly: true
+          title: Order Status
+        status_text:
+          type: string
+          readOnly: true
+        status_custom_key:
+          readOnly: true
+          nullable: true
+          title: Custom status key
+          description: |-
+            Additional status information for this item
+
+            * `10` - Pending
+            * `15` - In Progress
+            * `20` - Shipped
+            * `25` - On Hold
+            * `30` - Complete
+            * `40` - Cancelled
+            * `50` - Lost
+            * `60` - Returned
+          oneOf:
+          - $ref: '#/components/schemas/SalesOrderStatusCustomKeyEnum'
+          - $ref: '#/components/schemas/NullEnum'
+        notes:
+          type: string
+          nullable: true
+          description: Markdown notes (optional)
+          maxLength: 50000
+        barcode_hash:
+          type: string
+          readOnly: true
+        overdue:
+          type: boolean
+          readOnly: true
+        duplicate:
+          allOf:
+          - $ref: '#/components/schemas/DuplicateOrder'
+          writeOnly: true
+          title: Duplicate Order
+          description: Specify options for duplicating this order
+        customer:
+          type: integer
+          nullable: true
+          description: Company to which the items are being sold
+        customer_reference:
+          type: string
+          description: Customer order reference code
+          maxLength: 64
+        shipment_date:
+          type: string
+          format: date
+          readOnly: true
+          nullable: true
+        total_price:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        order_currency:
+          nullable: true
+          description: |-
+            Currency for this order (leave blank to use company default)
+
+            * `` - ---------
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+          oneOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          - $ref: '#/components/schemas/BlankEnum'
+          - $ref: '#/components/schemas/NullEnum'
+    PatchedSalesOrderAllocation:
+      type: object
+      description: |-
+        Serializer for the SalesOrderAllocation model.
+
+        This includes some fields from the related model objects.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        line:
+          type: integer
+        serial:
+          type: string
+          readOnly: true
+        quantity:
+          type: number
+          format: double
+        location:
+          type: integer
+          readOnly: true
+        item:
+          type: integer
+          description: Select stock item to allocate
+        item_detail:
+          allOf:
+          - $ref: '#/components/schemas/StockItemSerializerBrief'
+          readOnly: true
+        order:
+          type: integer
+          readOnly: true
+        part:
+          type: integer
+          readOnly: true
+        part_detail:
+          allOf:
+          - $ref: '#/components/schemas/PartBrief'
+          readOnly: true
+        shipment:
+          type: integer
+          description: Sales order shipment reference
+        shipment_detail:
+          allOf:
+          - $ref: '#/components/schemas/SalesOrderShipment'
+          readOnly: true
+    PatchedSalesOrderExtraLine:
+      type: object
+      description: Serializer for a SalesOrderExtraLine object.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        description:
+          type: string
+          description: Line item description (optional)
+          maxLength: 250
+        quantity:
+          type: number
+          format: double
+        reference:
+          type: string
+          description: Line item reference
+          maxLength: 100
+        notes:
+          type: string
+          description: Line item notes
+          maxLength: 500
+        context:
+          nullable: true
+          description: Additional context for this line
+        order:
+          type: integer
+          description: Sales Order
+        price:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          nullable: true
+        price_currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          title: Currency
+          description: |-
+            Select currency from available options
+
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+        link:
+          type: string
+          format: uri
+          description: Link to external page
+          maxLength: 200
+    PatchedSalesOrderLineItem:
+      type: object
+      description: Serializer for a SalesOrderLineItem object.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        allocated:
+          type: number
+          format: double
+          readOnly: true
+        quantity:
+          type: number
+          format: double
+        reference:
+          type: string
+          description: Line item reference
+          maxLength: 100
+        notes:
+          type: string
+          description: Line item notes
+          maxLength: 500
+        order:
+          type: integer
+          description: Sales Order
+        overdue:
+          type: boolean
+          readOnly: true
+        part:
+          type: integer
+          nullable: true
+          description: Part
+        sale_price:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          nullable: true
+        sale_price_currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          title: Currency
+          description: |-
+            Sale price currency
+
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+        shipped:
+          type: number
+          format: double
+          readOnly: true
+        target_date:
+          type: string
+          format: date
+          nullable: true
+          description: Target date for this line item (leave blank to use the target
+            date from the order)
+        link:
+          type: string
+          format: uri
+          description: Link to external page
+          maxLength: 200
+        available_stock:
+          type: number
+          format: double
+          readOnly: true
+        available_variant_stock:
+          type: number
+          format: double
+          readOnly: true
+        building:
+          type: number
+          format: double
+          readOnly: true
+          title: In Production
+        on_order:
+          type: number
+          format: double
+          readOnly: true
+    PatchedSalesOrderShipment:
+      type: object
+      description: Serializer for the SalesOrderShipment class.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        order:
+          type: integer
+          description: Sales Order
+        order_detail:
+          allOf:
+          - $ref: '#/components/schemas/SalesOrder'
+          readOnly: true
+        allocated_items:
+          type: integer
+          readOnly: true
+        shipment_date:
+          type: string
+          format: date
+          nullable: true
+          description: Date of shipment
+        delivery_date:
+          type: string
+          format: date
+          nullable: true
+          description: Date of delivery of shipment
+        checked_by:
+          type: integer
+          nullable: true
+          description: User who checked this shipment
+        reference:
+          type: string
+          default: '1'
+          title: Shipment
+          description: Shipment number
+          maxLength: 100
+        tracking_number:
+          type: string
+          description: Shipment tracking information
+          maxLength: 100
+        invoice_number:
+          type: string
+          description: Reference number for associated invoice
+          maxLength: 100
+        link:
+          type: string
+          format: uri
+          description: Link to external page
+          maxLength: 200
+        notes:
+          type: string
+          nullable: true
+          description: Markdown notes (optional)
+          maxLength: 50000
+    PatchedStockItem:
+      type: object
+      description: |-
+        Serializer for a StockItem.
+
+        - Includes serialization for the linked part
+        - Includes serialization for the item location
+      properties:
+        batch:
+          type: string
+          nullable: true
+          title: Batch Code
+          description: Batch code for this stock item
+          maxLength: 100
+        belongs_to:
+          type: integer
+          nullable: true
+          title: Installed In
+          description: Is this item installed in another item?
+        build:
+          type: integer
+          nullable: true
+          title: Source Build
+          description: Build for this stock item
+        consumed_by:
+          type: integer
+          nullable: true
+          description: Build order which consumed this stock item
+        customer:
+          type: integer
+          nullable: true
+          description: Customer
+        delete_on_deplete:
+          type: boolean
+          description: Delete this Stock Item when stock is depleted
+        expiry_date:
+          type: string
+          format: date
+          nullable: true
+          description: Expiry date for stock item. Stock will be considered expired
+            after this date
+        is_building:
+          type: boolean
+        link:
+          type: string
+          format: uri
+          title: External Link
+          description: Link to external URL
+          maxLength: 200
+        location:
+          type: integer
+          nullable: true
+          title: Stock Location
+          description: Where is this stock item located?
+        location_name:
+          type: string
+          readOnly: true
+        location_detail:
+          allOf:
+          - $ref: '#/components/schemas/LocationBrief'
+          readOnly: true
+        notes:
+          type: string
+          nullable: true
+          description: Markdown notes (optional)
+          maxLength: 50000
+        owner:
+          type: integer
+          nullable: true
+          description: Select Owner
+        packaging:
+          type: string
+          nullable: true
+          description: Packaging this stock item is stored in
+          maxLength: 50
+        parent:
+          type: integer
+          readOnly: true
+          title: Parent Item
+          description: Parent stock item
+        part:
+          type: integer
+          description: Base Part
+        part_detail:
+          allOf:
+          - $ref: '#/components/schemas/PartBrief'
+          readOnly: true
+        purchase_order:
+          type: integer
+          nullable: true
+          title: Source Purchase Order
+          description: Purchase order for this stock item
+        purchase_order_reference:
+          type: string
+          readOnly: true
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        quantity:
+          type: number
+          format: double
+        sales_order:
+          type: integer
+          nullable: true
+          title: Destination Sales Order
+        sales_order_reference:
+          type: string
+          readOnly: true
+        serial:
+          type: string
+          nullable: true
+          title: Serial Number
+          description: Serial number for this item
+          maxLength: 100
+        status:
+          allOf:
+          - $ref: '#/components/schemas/Status2a7Enum'
+          minimum: 0
+        status_text:
+          type: string
+          readOnly: true
+        status_custom_key:
+          nullable: true
+          title: Custom status key
+          description: |-
+            Additional status information for this item
+
+            * `10` - OK
+            * `50` - Attention needed
+            * `55` - Damaged
+            * `60` - Destroyed
+            * `65` - Rejected
+            * `70` - Lost
+            * `75` - Quarantined
+            * `85` - Returned
+          oneOf:
+          - $ref: '#/components/schemas/StatusCustomKey2a7Enum'
+          - $ref: '#/components/schemas/NullEnum'
+        stocktake_date:
+          type: string
+          format: date
+          readOnly: true
+          nullable: true
+        supplier_part:
+          type: integer
+          nullable: true
+          description: Select a matching supplier part for this stock item
+        sku:
+          type: string
+          readOnly: true
+        supplier_part_detail:
+          allOf:
+          - $ref: '#/components/schemas/SupplierPart'
+          readOnly: true
+        barcode_hash:
+          type: string
+          readOnly: true
+          description: Unique hash of barcode data
+        updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+          description: Timestamp of last update
+        purchase_price:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          nullable: true
+          description: Purchase price of this stock item, per unit or pack
+        purchase_price_currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          title: Currency
+          description: |-
+            Purchase currency of this stock item
+
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+        use_pack_size:
+          type: boolean
+          writeOnly: true
+          nullable: true
+          description: 'Use pack size when adding: the quantity defined is the number
+            of packs'
+        allocated:
+          type: number
+          format: double
+          readOnly: true
+          title: Allocated Quantity
+        expired:
+          type: boolean
+          readOnly: true
+        installed_items:
+          type: integer
+          readOnly: true
+        child_items:
+          type: integer
+          readOnly: true
+        stale:
+          type: boolean
+          readOnly: true
+        tracking_items:
+          type: integer
+          readOnly: true
+        tags:
+          type: array
+          items:
+            type: string
+    PatchedStockItemTestResult:
+      type: object
+      description: Serializer for the StockItemTestResult model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        stock_item:
+          type: integer
+        result:
+          type: boolean
+          description: Test result
+        value:
+          type: string
+          description: Test output value
+          maxLength: 500
+        attachment:
+          type: string
+          format: uri
+          nullable: true
+          description: Test result attachment
+        notes:
+          type: string
+          description: Test notes
+          maxLength: 500
+        test_station:
+          type: string
+          description: The identifier of the test station where the test was performed
+          maxLength: 500
+        started_datetime:
+          type: string
+          format: date-time
+          nullable: true
+          title: Started
+          description: The timestamp of the test start
+        finished_datetime:
+          type: string
+          format: date-time
+          nullable: true
+          title: Finished
+          description: The timestamp of the test finish
+        user:
+          type: integer
+          readOnly: true
+          nullable: true
+        date:
+          type: string
+          format: date-time
+          readOnly: true
+        template:
+          type: integer
+          nullable: true
+          title: Test template for this result
+          description: Template
+    PatchedStockLocationType:
+      type: object
+      description: Serializer for StockLocationType model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        name:
+          type: string
+          description: Name
+          maxLength: 100
+        description:
+          type: string
+          description: Description (optional)
+          maxLength: 250
+        icon:
+          type: string
+          description: Default icon for all locations that have no icon set (optional)
+          maxLength: 100
+        location_count:
+          type: integer
+          readOnly: true
+    PatchedSupplierPart:
+      type: object
+      description: Serializer for SupplierPart object.
+      properties:
+        available:
+          type: number
+          format: double
+        availability_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+          description: Date of last update of availability data
+        description:
+          type: string
+          nullable: true
+          description: Supplier part description
+          maxLength: 250
+        in_stock:
+          type: number
+          format: double
+          readOnly: true
+        link:
+          type: string
+          format: uri
+          nullable: true
+          description: URL for external supplier part link
+          maxLength: 200
+        active:
+          type: boolean
+          description: Is this supplier part active?
+        manufacturer:
+          type: string
+          readOnly: true
+        manufacturer_detail:
+          allOf:
+          - $ref: '#/components/schemas/CompanyBrief'
+          readOnly: true
+        manufacturer_part:
+          type: integer
+          nullable: true
+          description: Select manufacturer part
+        manufacturer_part_detail:
+          allOf:
+          - $ref: '#/components/schemas/ManufacturerPart'
+          readOnly: true
+        MPN:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          readOnly: true
+        note:
+          type: string
+          nullable: true
+          description: Notes
+          maxLength: 100
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        barcode_hash:
+          type: string
+          readOnly: true
+          description: Unique hash of barcode data
+        packaging:
+          type: string
+          nullable: true
+          description: Part packaging
+          maxLength: 50
+        pack_quantity:
+          type: string
+          description: Total quantity supplied in a single pack. Leave empty for single
+            items.
+          maxLength: 25
+        pack_quantity_native:
+          type: number
+          format: double
+          readOnly: true
+        part:
+          type: integer
+          title: Base Part
+          description: Select part
+        part_detail:
+          allOf:
+          - $ref: '#/components/schemas/PartBrief'
+          readOnly: true
+        SKU:
+          type: string
+          description: Supplier stock keeping unit
+          maxLength: 100
+        supplier:
+          type: integer
+        supplier_detail:
+          allOf:
+          - $ref: '#/components/schemas/CompanyBrief'
+          readOnly: true
+        url:
+          type: string
+          readOnly: true
+        updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        notes:
+          type: string
+          nullable: true
+          description: Markdown notes (optional)
+          maxLength: 50000
+        tags:
+          type: array
+          items:
+            type: string
+    PatchedSupplierPriceBreak:
+      type: object
+      description: Serializer for SupplierPriceBreak object.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        part:
+          type: integer
+        quantity:
+          type: number
+          format: double
+        price:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          nullable: true
+        price_currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          title: Currency
+          description: |-
+            Select currency from available options
+
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+        supplier:
+          type: integer
+          readOnly: true
+        updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+          description: Timestamp of last update
+    PatchedUserDetails:
+      type: object
+      description: User model w/o password
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        username:
+          type: string
+          description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_
+            only.
+          pattern: ^[\w.@+-]+$
+          maxLength: 150
+        email:
+          type: string
+          format: email
+          readOnly: true
+          title: Email address
+        first_name:
+          type: string
+          maxLength: 150
+        last_name:
+          type: string
+          maxLength: 150
+    PatchedUserSettings:
+      type: object
+      description: Serializer for the InvenTreeUserSetting model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        key:
+          type: string
+          readOnly: true
+        value:
+          type: string
+        name:
+          type: string
+          readOnly: true
+        description:
+          type: string
+          readOnly: true
+        user:
+          type: integer
+          readOnly: true
+        type:
+          type: string
+          readOnly: true
+        units:
+          type: string
+          readOnly: true
+        choices:
+          type: array
+          items: {}
+          description: Returns the choices available for a given item.
+          readOnly: true
+        model_name:
+          type: string
+          readOnly: true
+        api_url:
+          type: string
+          readOnly: true
+        typ:
+          type: string
+          readOnly: true
+    PendingTask:
+      type: object
+      description: Serializer for an individual pending task object.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        key:
+          type: string
+          description: Name of the target cluster
+          maxLength: 100
+        lock:
+          type: string
+          format: date-time
+          description: Lock time
+        task_id:
+          type: string
+          description: Unique task ID
+        name:
+          type: string
+          description: Task name
+        func:
+          type: string
+          title: Function
+          description: Function name
+        args:
+          type: string
+          title: Arguments
+          description: Task arguments
+        kwargs:
+          type: string
+          title: Keyword Arguments
+          description: Task keyword arguments
+      required:
+      - args
+      - func
+      - key
+      - kwargs
+      - lock
+      - name
+      - pk
+      - task_id
+    PluginActivate:
+      type: object
+      description: Serializer for activating or deactivating a plugin.
+      properties:
+        active:
+          type: boolean
+          default: true
+          title: Activate Plugin
+          description: Activate this plugin
+    PluginAdminDetail:
+      type: object
+      description: Serializer for a PluginConfig with admin details.
+      properties:
+        source:
+          type: string
+          nullable: true
+          title: Source File
+          description: Path to the source file for admin integration
+        context:
+          nullable: true
+          description: Optional context data for the admin integration
+      required:
+      - context
+      - source
+    PluginConfig:
+      type: object
+      description: Serializer for a PluginConfig.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        key:
+          type: string
+          readOnly: true
+          description: Key of plugin
+        name:
+          type: string
+          nullable: true
+          description: PluginName of the plugin
+          maxLength: 255
+        package_name:
+          type: string
+          nullable: true
+          description: Name of the installed package, if the plugin was installed
+            via PIP
+          maxLength: 255
+        active:
+          type: boolean
+          description: Is the plugin active
+        meta:
+          type: object
+          additionalProperties: {}
+          readOnly: true
+        mixins:
+          type: object
+          additionalProperties: {}
+          readOnly: true
+        is_builtin:
+          type: boolean
+          description: Return True if this is a 'builtin' plugin.
+          readOnly: true
+        is_sample:
+          type: boolean
+          description: Is this plugin a sample app?
+          readOnly: true
+        is_installed:
+          type: boolean
+          description: |-
+            Simple check to determine if this plugin is installed.
+
+            A plugin might not be installed if it has been removed from the system,
+            but the PluginConfig associated with it still exists.
+          readOnly: true
+        is_package:
+          type: boolean
+          description: Return True if this is a 'package' plugin.
+          readOnly: true
+      required:
+      - is_builtin
+      - is_installed
+      - is_package
+      - is_sample
+      - key
+      - meta
+      - mixins
+      - pk
+    PluginConfigInstall:
+      type: object
+      description: Serializer for installing a new plugin.
+      properties:
+        url:
+          type: string
+          title: Source URL
+          description: Source for the package - this can be a custom registry or a
+            VCS path
+        packagename:
+          type: string
+          title: Package Name
+          description: Name for the Plugin Package - can also contain a version indicator
+        version:
+          type: string
+          description: Version specifier for the plugin. Leave blank for latest version.
+        confirm:
+          type: boolean
+          title: Confirm plugin installation
+          description: This will install this plugin now into the current instance.
+            The instance will go into maintenance.
+      required:
+      - confirm
+    PluginPanel:
+      type: object
+      description: Serializer for a plugin panel.
+      properties:
+        plugin:
+          type: string
+          title: Plugin Key
+        name:
+          type: string
+          title: Panel Name
+        label:
+          type: string
+          title: Panel Title
+        icon:
+          type: string
+          title: Panel Icon
+        content:
+          type: string
+          title: Panel Content (HTML)
+        context:
+          nullable: true
+          title: Panel Context (JSON)
+        source:
+          type: string
+          title: Panel Source (javascript)
+      required:
+      - label
+      - name
+      - plugin
+    PluginRegistryError:
+      type: object
+      description: Serializer for a plugin registry error.
+      properties:
+        stage:
+          type: string
+        name:
+          type: string
+        message:
+          type: string
+      required:
+      - message
+      - name
+      - stage
+    PluginRegistryStatus:
+      type: object
+      description: Serializer for plugin registry status.
+      properties:
+        active_plugins:
+          type: integer
+          readOnly: true
+        registry_errors:
+          type: array
+          items:
+            $ref: '#/components/schemas/PluginRegistryError'
+      required:
+      - active_plugins
+      - registry_errors
+    PluginReload:
+      type: object
+      description: Serializer for remotely forcing plugin registry reload.
+      properties:
+        full_reload:
+          type: boolean
+          default: false
+          description: Perform a full reload of the plugin registry
+        force_reload:
+          type: boolean
+          default: false
+          description: Force a reload of the plugin registry, even if it is already
+            loaded
+        collect_plugins:
+          type: boolean
+          default: false
+          description: Collect plugins and add them to the registry
+    PluginSetting:
+      type: object
+      description: Serializer for the PluginSetting model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        key:
+          type: string
+          readOnly: true
+        value:
+          type: string
+        name:
+          type: string
+          readOnly: true
+        description:
+          type: string
+          readOnly: true
+        type:
+          type: string
+          readOnly: true
+        choices:
+          type: array
+          items: {}
+          description: Returns the choices available for a given item.
+          readOnly: true
+        model_name:
+          type: string
+          readOnly: true
+        api_url:
+          type: string
+          readOnly: true
+        typ:
+          type: string
+          readOnly: true
+        required:
+          type: boolean
+          readOnly: true
+        plugin:
+          type: string
+          readOnly: true
+      required:
+      - api_url
+      - choices
+      - description
+      - key
+      - model_name
+      - name
+      - pk
+      - plugin
+      - required
+      - typ
+      - type
+      - value
+    PluginUIFeature:
+      type: object
+      description: Serializer for a plugin ui feature.
+      properties:
+        feature_type:
+          type: string
+        options:
+          type: object
+          additionalProperties: {}
+          title: Feature Options
+        source:
+          type: string
+          title: Feature Source (javascript)
+      required:
+      - feature_type
+      - options
+      - source
+    PluginUninstall:
+      type: object
+      description: Serializer for uninstalling a plugin.
+      properties:
+        delete_config:
+          type: boolean
+          default: true
+          title: Delete configuration
+          description: Delete the plugin configuration from the database
+    Preferred:
+      type: object
+      description: Serializer for the preferred serializer session setting.
+      properties:
+        preferred_method:
+          $ref: '#/components/schemas/PreferredMethodEnum'
+        pui:
+          type: boolean
+          description: Return true if preferred method is PUI.
+          readOnly: true
+        cui:
+          type: boolean
+          description: Return true if preferred method is CUI.
+          readOnly: true
+      required:
+      - cui
+      - preferred_method
+      - pui
+    PreferredMethodEnum:
+      enum:
+      - cui
+      - pui
+      type: string
+      description: |-
+        * `cui` - cui
+        * `pui` - pui
+    ProjectCode:
+      type: object
+      description: Serializer for the ProjectCode model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        code:
+          type: string
+          title: Project Code
+          description: Unique project code
+          maxLength: 50
+        description:
+          type: string
+          description: Project description
+          maxLength: 200
+        responsible:
+          type: integer
+          nullable: true
+          description: User or group responsible for this project
+        responsible_detail:
+          allOf:
+          - $ref: '#/components/schemas/Owner'
+          readOnly: true
+      required:
+      - code
+      - pk
+      - responsible_detail
+    PurchaseOrder:
+      type: object
+      description: Serializer for a PurchaseOrder object.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        creation_date:
+          type: string
+          format: date
+          nullable: true
+        target_date:
+          type: string
+          format: date
+          nullable: true
+          description: Expected date for order delivery. Order will be overdue after
+            this date.
+        description:
+          type: string
+          description: Order description (optional)
+          maxLength: 250
+        line_items:
+          type: integer
+          readOnly: true
+        completed_lines:
+          type: integer
+          readOnly: true
+        link:
+          type: string
+          format: uri
+          description: Link to external page
+          maxLength: 200
+        project_code:
+          type: integer
+          nullable: true
+          description: Select project code for this order
+        project_code_label:
+          type: string
+          readOnly: true
+        project_code_detail:
+          allOf:
+          - $ref: '#/components/schemas/ProjectCode'
+          readOnly: true
+        reference:
+          type: string
+        responsible:
+          type: integer
+          nullable: true
+          description: User or group responsible for this order
+        responsible_detail:
+          allOf:
+          - $ref: '#/components/schemas/Owner'
+          readOnly: true
+        contact:
+          type: integer
+          nullable: true
+          description: Point of contact for this order
+        contact_detail:
+          allOf:
+          - $ref: '#/components/schemas/Contact'
+          readOnly: true
+        address:
+          type: integer
+          nullable: true
+          description: Company address for this order
+        address_detail:
+          allOf:
+          - $ref: '#/components/schemas/AddressBrief'
+          readOnly: true
+        status:
+          type: integer
+          readOnly: true
+          title: Order Status
+        status_text:
+          type: string
+          readOnly: true
+        status_custom_key:
+          readOnly: true
+          nullable: true
+          title: Custom status key
+          description: |-
+            Additional status information for this item
+
+            * `10` - Pending
+            * `20` - Placed
+            * `25` - On Hold
+            * `30` - Complete
+            * `40` - Cancelled
+            * `50` - Lost
+            * `60` - Returned
+          oneOf:
+          - $ref: '#/components/schemas/PurchaseOrderStatusCustomKeyEnum'
+          - $ref: '#/components/schemas/NullEnum'
+        barcode_hash:
+          type: string
+          readOnly: true
+        overdue:
+          type: boolean
+          readOnly: true
+        duplicate:
+          allOf:
+          - $ref: '#/components/schemas/DuplicateOrder'
+          writeOnly: true
+          title: Duplicate Order
+          description: Specify options for duplicating this order
+        issue_date:
+          type: string
+          format: date
+          readOnly: true
+          nullable: true
+          description: Date order was issued
+        complete_date:
+          type: string
+          format: date
+          readOnly: true
+          nullable: true
+          title: Completion Date
+          description: Date order was completed
+        supplier:
+          type: integer
+          nullable: true
+          description: Company from which the items are being ordered
+        supplier_reference:
+          type: string
+          description: Supplier order reference code
+          maxLength: 64
+        supplier_name:
+          type: string
+          readOnly: true
+        total_price:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        order_currency:
+          nullable: true
+          description: |-
+            Currency for this order (leave blank to use company default)
+
+            * `` - ---------
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+          oneOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          - $ref: '#/components/schemas/BlankEnum'
+          - $ref: '#/components/schemas/NullEnum'
+      required:
+      - address_detail
+      - barcode_hash
+      - complete_date
+      - completed_lines
+      - contact_detail
+      - issue_date
+      - line_items
+      - overdue
+      - pk
+      - project_code_detail
+      - project_code_label
+      - reference
+      - responsible_detail
+      - status
+      - status_custom_key
+      - status_text
+      - supplier
+      - supplier_name
+      - total_price
+    PurchaseOrderComplete:
+      type: object
+      description: Serializer for completing a purchase order.
+      properties:
+        accept_incomplete:
+          type: boolean
+          default: false
+          description: Allow order to be closed with incomplete line items
+    PurchaseOrderExtraLine:
+      type: object
+      description: Serializer for a PurchaseOrderExtraLine object.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        description:
+          type: string
+          description: Line item description (optional)
+          maxLength: 250
+        quantity:
+          type: number
+          format: double
+        reference:
+          type: string
+          description: Line item reference
+          maxLength: 100
+        notes:
+          type: string
+          description: Line item notes
+          maxLength: 500
+        context:
+          nullable: true
+          description: Additional context for this line
+        order:
+          type: integer
+          description: Purchase Order
+        price:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          nullable: true
+        price_currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          title: Currency
+          description: |-
+            Select currency from available options
+
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+        link:
+          type: string
+          format: uri
+          description: Link to external page
+          maxLength: 200
+      required:
+      - order
+      - pk
+      - quantity
+    PurchaseOrderLineItem:
+      type: object
+      description: Serializer class for the PurchaseOrderLineItem model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        part:
+          type: integer
+          nullable: true
+          title: Supplier Part
+        quantity:
+          type: number
+          format: double
+          minimum: 0
+        reference:
+          type: string
+          description: Line item reference
+          maxLength: 100
+        notes:
+          type: string
+          description: Line item notes
+          maxLength: 500
+        order:
+          type: integer
+          description: Purchase Order
+        overdue:
+          type: boolean
+          readOnly: true
+        received:
+          type: number
+          format: double
+          readOnly: true
+          default: 0.0
+        purchase_price:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          nullable: true
+        purchase_price_currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          title: Currency
+          description: |-
+            Purchase price currency
+
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+        auto_pricing:
+          type: boolean
+          default: true
+          description: Automatically calculate purchase price based on supplier part
+            data
+        destination:
+          type: integer
+          nullable: true
+          description: Where does the Purchaser want this item to be stored?
+        destination_detail:
+          allOf:
+          - $ref: '#/components/schemas/LocationBrief'
+          readOnly: true
+        target_date:
+          type: string
+          format: date
+          nullable: true
+          description: Target date for this line item (leave blank to use the target
+            date from the order)
+        total_price:
+          type: number
+          format: double
+          readOnly: true
+        link:
+          type: string
+          format: uri
+          description: Link to external page
+          maxLength: 200
+        merge_items:
+          type: boolean
+          writeOnly: true
+          default: true
+          description: Merge items with the same part, destination and target date
+            into one line item
+        sku:
+          type: string
+          readOnly: true
+        mpn:
+          type: string
+          readOnly: true
+        ipn:
+          type: string
+          readOnly: true
+          title: Internal Part Number
+        internal_part:
+          type: integer
+          readOnly: true
+        internal_part_name:
+          type: string
+          readOnly: true
+      required:
+      - destination_detail
+      - internal_part
+      - internal_part_name
+      - ipn
+      - mpn
+      - order
+      - overdue
+      - part
+      - pk
+      - quantity
+      - received
+      - sku
+      - total_price
+    PurchaseOrderLineItemReceive:
+      type: object
+      description: A serializer for receiving a single purchase order line item against
+        a purchase order.
+      properties:
+        line_item:
+          type: integer
+        location:
+          type: integer
+          nullable: true
+          description: Select destination location for received items
+        quantity:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,10}(?:\.\d{0,5})?$
+        batch_code:
+          type: string
+          default: ''
+          description: Enter batch code for incoming stock items
+        serial_numbers:
+          type: string
+          default: ''
+          description: Enter serial numbers for incoming stock items
+        status:
+          allOf:
+          - $ref: '#/components/schemas/Status2a7Enum'
+          default: 10
+        packaging:
+          type: string
+          default: ''
+          description: Override packaging information for incoming stock items
+        note:
+          type: string
+          default: ''
+          description: Additional note for incoming stock items
+        barcode:
+          type: string
+          nullable: true
+          default: ''
+          description: Scanned barcode
+      required:
+      - line_item
+      - quantity
+    PurchaseOrderReceive:
+      type: object
+      description: Serializer for receiving items against a PurchaseOrder.
+      properties:
+        items:
+          type: array
+          items:
+            $ref: '#/components/schemas/PurchaseOrderLineItemReceive'
+        location:
+          type: integer
+          nullable: true
+          description: Select destination location for received items
+      required:
+      - items
+      - location
+    PurchaseOrderStatusCustomKeyEnum:
+      enum:
+      - 10
+      - 20
+      - 25
+      - 30
+      - 40
+      - 50
+      - 60
+      type: integer
+      description: |-
+        * `10` - Pending
+        * `20` - Placed
+        * `25` - On Hold
+        * `30` - Complete
+        * `40` - Cancelled
+        * `50` - Lost
+        * `60` - Returned
+    ReferenceStatusEnum:
+      enum:
+      - BuildStatus
+      - DataImportStatusCode
+      - MachineStatus
+      - PurchaseOrderStatus
+      - ReturnOrderLineStatus
+      - ReturnOrderStatus
+      - SalesOrderStatus
+      - StockHistoryCode
+      - StockStatus
+      type: string
+      description: |-
+        * `BuildStatus` - BuildStatus
+        * `DataImportStatusCode` - DataImportStatusCode
+        * `MachineStatus` - MachineStatus
+        * `PurchaseOrderStatus` - PurchaseOrderStatus
+        * `ReturnOrderLineStatus` - ReturnOrderLineStatus
+        * `ReturnOrderStatus` - ReturnOrderStatus
+        * `SalesOrderStatus` - SalesOrderStatus
+        * `StockHistoryCode` - StockHistoryCode
+        * `StockStatus` - StockStatus
+    Register:
+      type: object
+      properties:
+        username:
+          type: string
+          maxLength: 150
+          minLength: 1
+        email:
+          type: string
+          format: email
+        password1:
+          type: string
+          writeOnly: true
+        password2:
+          type: string
+          writeOnly: true
+      required:
+      - password1
+      - password2
+      - username
+    ReportAsset:
+      type: object
+      description: Serializer class for the ReportAsset model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        asset:
+          type: string
+          format: uri
+        description:
+          type: string
+          description: Asset file description
+          maxLength: 250
+      required:
+      - asset
+      - description
+      - pk
+    ReportOutput:
+      type: object
+      description: Serializer class for the ReportOutput model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        created:
+          type: string
+          format: date
+          readOnly: true
+        user:
+          type: integer
+          nullable: true
+        user_detail:
+          allOf:
+          - $ref: '#/components/schemas/User'
+          readOnly: true
+        model_type:
+          type: string
+          readOnly: true
+        items:
+          type: integer
+          description: Number of items to process
+        complete:
+          type: boolean
+          description: Report generation is complete
+        progress:
+          type: integer
+          description: Report generation progress
+        output:
+          type: string
+          format: uri
+        template:
+          type: integer
+          title: Report Template
+      required:
+      - created
+      - model_type
+      - output
+      - pk
+      - template
+      - user_detail
+    ReportPrint:
+      type: object
+      description: Serializer class for printing a report.
+      properties:
+        template:
+          type: integer
+          description: Select report template
+        items:
+          type: array
+          items:
+            type: integer
+          description: List of item primary keys to include in the report
+      required:
+      - items
+      - template
+    ReportSnippet:
+      type: object
+      description: Serializer class for the ReportSnippet model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        snippet:
+          type: string
+          format: uri
+        description:
+          type: string
+          description: Snippet file description
+          maxLength: 250
+      required:
+      - description
+      - pk
+      - snippet
+    ReportTemplate:
+      type: object
+      description: Serializer class for report template model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        name:
+          type: string
+          description: Template name
+          maxLength: 100
+        description:
+          type: string
+          description: Template description
+          maxLength: 250
+        model_type:
+          $ref: '#/components/schemas/ModelType820Enum'
+        template:
+          type: string
+          format: uri
+        filters:
+          type: string
+          description: Template query filters (comma-separated list of key=value pairs)
+          maxLength: 250
+        filename_pattern:
+          type: string
+          description: Pattern for generating filenames
+          maxLength: 100
+        enabled:
+          type: boolean
+          description: Template is enabled
+        revision:
+          type: integer
+          readOnly: true
+        attach_to_model:
+          type: boolean
+          title: Attach to Model on Print
+          description: Save report output as an attachment against linked model instance
+            when printing
+        page_size:
+          allOf:
+          - $ref: '#/components/schemas/PageSizeEnum'
+          default: A4
+        landscape:
+          type: boolean
+          description: Render report in landscape orientation
+      required:
+      - description
+      - model_type
+      - name
+      - pk
+      - revision
+      - template
+    ResendEmailVerification:
+      type: object
+      properties:
+        email:
+          type: string
+          format: email
+    RestAuthDetail:
+      type: object
+      properties:
+        detail:
+          type: string
+          readOnly: true
+      required:
+      - detail
+    ReturnOrder:
+      type: object
+      description: Serializer for the ReturnOrder model class.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        creation_date:
+          type: string
+          format: date
+          nullable: true
+        target_date:
+          type: string
+          format: date
+          nullable: true
+          description: Expected date for order delivery. Order will be overdue after
+            this date.
+        description:
+          type: string
+          description: Order description (optional)
+          maxLength: 250
+        line_items:
+          type: integer
+          readOnly: true
+        completed_lines:
+          type: integer
+          readOnly: true
+        link:
+          type: string
+          format: uri
+          description: Link to external page
+          maxLength: 200
+        project_code:
+          type: integer
+          nullable: true
+          description: Select project code for this order
+        project_code_label:
+          type: string
+          readOnly: true
+        project_code_detail:
+          allOf:
+          - $ref: '#/components/schemas/ProjectCode'
+          readOnly: true
+        reference:
+          type: string
+        responsible:
+          type: integer
+          nullable: true
+          description: User or group responsible for this order
+        responsible_detail:
+          allOf:
+          - $ref: '#/components/schemas/Owner'
+          readOnly: true
+        contact:
+          type: integer
+          nullable: true
+          description: Point of contact for this order
+        contact_detail:
+          allOf:
+          - $ref: '#/components/schemas/Contact'
+          readOnly: true
+        address:
+          type: integer
+          nullable: true
+          description: Company address for this order
+        address_detail:
+          allOf:
+          - $ref: '#/components/schemas/AddressBrief'
+          readOnly: true
+        status:
+          type: integer
+          readOnly: true
+          title: Order Status
+        status_text:
+          type: string
+          readOnly: true
+        status_custom_key:
+          readOnly: true
+          nullable: true
+          title: Custom status key
+          description: |-
+            Additional status information for this item
+
+            * `10` - Pending
+            * `20` - In Progress
+            * `25` - On Hold
+            * `30` - Complete
+            * `40` - Cancelled
+          oneOf:
+          - $ref: '#/components/schemas/ReturnOrderStatusCustomKeyEnum'
+          - $ref: '#/components/schemas/NullEnum'
+        barcode_hash:
+          type: string
+          readOnly: true
+        overdue:
+          type: boolean
+          readOnly: true
+        duplicate:
+          allOf:
+          - $ref: '#/components/schemas/DuplicateOrder'
+          writeOnly: true
+          title: Duplicate Order
+          description: Specify options for duplicating this order
+        customer:
+          type: integer
+          nullable: true
+          description: Company from which items are being returned
+        customer_reference:
+          type: string
+          description: Customer order reference code
+          maxLength: 64
+        order_currency:
+          nullable: true
+          description: |-
+            Currency for this order (leave blank to use company default)
+
+            * `` - ---------
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+          oneOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          - $ref: '#/components/schemas/BlankEnum'
+          - $ref: '#/components/schemas/NullEnum'
+        total_price:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+      required:
+      - address_detail
+      - barcode_hash
+      - completed_lines
+      - contact_detail
+      - line_items
+      - overdue
+      - pk
+      - project_code_detail
+      - project_code_label
+      - reference
+      - responsible_detail
+      - status
+      - status_custom_key
+      - status_text
+      - total_price
+    ReturnOrderExtraLine:
+      type: object
+      description: Serializer for a ReturnOrderExtraLine object.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        description:
+          type: string
+          description: Line item description (optional)
+          maxLength: 250
+        quantity:
+          type: number
+          format: double
+        reference:
+          type: string
+          description: Line item reference
+          maxLength: 100
+        notes:
+          type: string
+          description: Line item notes
+          maxLength: 500
+        context:
+          nullable: true
+          description: Additional context for this line
+        order:
+          type: integer
+          description: Return Order
+        price:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          nullable: true
+        price_currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          title: Currency
+          description: |-
+            Select currency from available options
+
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+        link:
+          type: string
+          format: uri
+          description: Link to external page
+          maxLength: 200
+      required:
+      - order
+      - pk
+      - quantity
+    ReturnOrderLineItem:
+      type: object
+      description: Serializer for a ReturnOrderLineItem object.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        order:
+          type: integer
+          description: Return Order
+        item:
+          type: integer
+          description: Select item to return from customer
+        item_detail:
+          allOf:
+          - $ref: '#/components/schemas/StockItem'
+          readOnly: true
+        received_date:
+          type: string
+          format: date
+          nullable: true
+          description: The date this this return item was received
+        outcome:
+          allOf:
+          - $ref: '#/components/schemas/OutcomeEnum'
+          description: |-
+            Outcome for this line item
+
+            * `10` - Pending
+            * `20` - Return
+            * `30` - Repair
+            * `40` - Replace
+            * `50` - Refund
+            * `60` - Reject
+        price:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          nullable: true
+        price_currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          title: Currency
+          description: |-
+            Line price currency
+
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+        link:
+          type: string
+          format: uri
+          description: Link to external page
+          maxLength: 200
+        reference:
+          type: string
+          description: Line item reference
+          maxLength: 100
+        notes:
+          type: string
+          description: Line item notes
+          maxLength: 500
+        target_date:
+          type: string
+          format: date
+          nullable: true
+          description: Target date for this line item (leave blank to use the target
+            date from the order)
+      required:
+      - item
+      - item_detail
+      - order
+      - pk
+    ReturnOrderLineItemReceive:
+      type: object
+      description: Serializer for receiving a single line item against a ReturnOrder.
+      properties:
+        item:
+          type: integer
+          title: Return order line item
+      required:
+      - item
+    ReturnOrderReceive:
+      type: object
+      description: Serializer for receiving items against a ReturnOrder.
+      properties:
+        items:
+          type: array
+          items:
+            $ref: '#/components/schemas/ReturnOrderLineItemReceive'
+        location:
+          type: integer
+          description: Select destination location for received items
+      required:
+      - items
+      - location
+    ReturnOrderStatusCustomKeyEnum:
+      enum:
+      - 10
+      - 20
+      - 25
+      - 30
+      - 40
+      type: integer
+      description: |-
+        * `10` - Pending
+        * `20` - In Progress
+        * `25` - On Hold
+        * `30` - Complete
+        * `40` - Cancelled
+    ReturnStockItem:
+      type: object
+      description: DRF serializer for returning a stock item from a customer.
+      properties:
+        location:
+          type: integer
+          description: Destination location for returned item
+        notes:
+          type: string
+          description: Add transaction note (optional)
+      required:
+      - location
+    Role:
+      type: object
+      description: Serializer for a roles associated with a given user.
+      properties:
+        user:
+          type: integer
+        username:
+          type: string
+          description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_
+            only.
+          pattern: ^[\w.@+-]+$
+          maxLength: 150
+        roles:
+          type: object
+          additionalProperties: {}
+          description: Roles associated with the user.
+          readOnly: true
+        permissions:
+          type: object
+          additionalProperties: {}
+          description: Permissions associated with the user.
+          readOnly: true
+        is_staff:
+          type: boolean
+          title: Staff status
+          description: Designates whether the user can log into this admin site.
+        is_superuser:
+          type: boolean
+          title: Superuser status
+          description: Designates that this user has all permissions without explicitly
+            assigning them.
+      required:
+      - permissions
+      - roles
+      - user
+      - username
+    SalePriceCurrencyEnum:
+      enum:
+      - AUD
+      - CNY
+      - EUR
+      - USD
+      type: string
+      description: |-
+        * `AUD` - Australian Dollar
+        * `CNY` - Chinese Yuan
+        * `EUR` - Euro
+        * `USD` - US Dollar
+    SalesOrder:
+      type: object
+      description: Serializer for the SalesOrder model class.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        creation_date:
+          type: string
+          format: date
+          nullable: true
+        target_date:
+          type: string
+          format: date
+          nullable: true
+          description: Expected date for order delivery. Order will be overdue after
+            this date.
+        description:
+          type: string
+          description: Order description (optional)
+          maxLength: 250
+        line_items:
+          type: integer
+          readOnly: true
+        completed_lines:
+          type: integer
+          readOnly: true
+        link:
+          type: string
+          format: uri
+          description: Link to external page
+          maxLength: 200
+        project_code:
+          type: integer
+          nullable: true
+          description: Select project code for this order
+        project_code_label:
+          type: string
+          readOnly: true
+        project_code_detail:
+          allOf:
+          - $ref: '#/components/schemas/ProjectCode'
+          readOnly: true
+        reference:
+          type: string
+        responsible:
+          type: integer
+          nullable: true
+          description: User or group responsible for this order
+        responsible_detail:
+          allOf:
+          - $ref: '#/components/schemas/Owner'
+          readOnly: true
+        contact:
+          type: integer
+          nullable: true
+          description: Point of contact for this order
+        contact_detail:
+          allOf:
+          - $ref: '#/components/schemas/Contact'
+          readOnly: true
+        address:
+          type: integer
+          nullable: true
+          description: Company address for this order
+        address_detail:
+          allOf:
+          - $ref: '#/components/schemas/AddressBrief'
+          readOnly: true
+        status:
+          type: integer
+          readOnly: true
+          title: Order Status
+        status_text:
+          type: string
+          readOnly: true
+        status_custom_key:
+          readOnly: true
+          nullable: true
+          title: Custom status key
+          description: |-
+            Additional status information for this item
+
+            * `10` - Pending
+            * `15` - In Progress
+            * `20` - Shipped
+            * `25` - On Hold
+            * `30` - Complete
+            * `40` - Cancelled
+            * `50` - Lost
+            * `60` - Returned
+          oneOf:
+          - $ref: '#/components/schemas/SalesOrderStatusCustomKeyEnum'
+          - $ref: '#/components/schemas/NullEnum'
+        barcode_hash:
+          type: string
+          readOnly: true
+        overdue:
+          type: boolean
+          readOnly: true
+        duplicate:
+          allOf:
+          - $ref: '#/components/schemas/DuplicateOrder'
+          writeOnly: true
+          title: Duplicate Order
+          description: Specify options for duplicating this order
+        customer:
+          type: integer
+          nullable: true
+          description: Company to which the items are being sold
+        customer_reference:
+          type: string
+          description: Customer order reference code
+          maxLength: 64
+        shipment_date:
+          type: string
+          format: date
+          readOnly: true
+          nullable: true
+        total_price:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          readOnly: true
+          nullable: true
+        order_currency:
+          nullable: true
+          description: |-
+            Currency for this order (leave blank to use company default)
+
+            * `` - ---------
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+          oneOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          - $ref: '#/components/schemas/BlankEnum'
+          - $ref: '#/components/schemas/NullEnum'
+      required:
+      - address_detail
+      - barcode_hash
+      - completed_lines
+      - contact_detail
+      - line_items
+      - overdue
+      - pk
+      - project_code_detail
+      - project_code_label
+      - reference
+      - responsible_detail
+      - shipment_date
+      - status
+      - status_custom_key
+      - status_text
+      - total_price
+    SalesOrderAllocation:
+      type: object
+      description: |-
+        Serializer for the SalesOrderAllocation model.
+
+        This includes some fields from the related model objects.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        line:
+          type: integer
+        serial:
+          type: string
+          readOnly: true
+        quantity:
+          type: number
+          format: double
+        location:
+          type: integer
+          readOnly: true
+        item:
+          type: integer
+          description: Select stock item to allocate
+        order:
+          type: integer
+          readOnly: true
+        part:
+          type: integer
+          readOnly: true
+        shipment:
+          type: integer
+          description: Sales order shipment reference
+        shipment_detail:
+          allOf:
+          - $ref: '#/components/schemas/SalesOrderShipment'
+          readOnly: true
+      required:
+      - item
+      - line
+      - location
+      - order
+      - part
+      - pk
+      - quantity
+      - serial
+      - shipment
+      - shipment_detail
+    SalesOrderComplete:
+      type: object
+      description: DRF serializer for manually marking a sales order as complete.
+      properties:
+        accept_incomplete:
+          type: boolean
+          default: false
+          description: Allow order to be closed with incomplete line items
+    SalesOrderExtraLine:
+      type: object
+      description: Serializer for a SalesOrderExtraLine object.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        description:
+          type: string
+          description: Line item description (optional)
+          maxLength: 250
+        quantity:
+          type: number
+          format: double
+        reference:
+          type: string
+          description: Line item reference
+          maxLength: 100
+        notes:
+          type: string
+          description: Line item notes
+          maxLength: 500
+        context:
+          nullable: true
+          description: Additional context for this line
+        order:
+          type: integer
+          description: Sales Order
+        price:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          nullable: true
+        price_currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          title: Currency
+          description: |-
+            Select currency from available options
+
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+        link:
+          type: string
+          format: uri
+          description: Link to external page
+          maxLength: 200
+      required:
+      - order
+      - pk
+      - quantity
+    SalesOrderLineItem:
+      type: object
+      description: Serializer for a SalesOrderLineItem object.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        allocated:
+          type: number
+          format: double
+          readOnly: true
+        quantity:
+          type: number
+          format: double
+        reference:
+          type: string
+          description: Line item reference
+          maxLength: 100
+        notes:
+          type: string
+          description: Line item notes
+          maxLength: 500
+        order:
+          type: integer
+          description: Sales Order
+        overdue:
+          type: boolean
+          readOnly: true
+        part:
+          type: integer
+          nullable: true
+          description: Part
+        sale_price:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          nullable: true
+        sale_price_currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          title: Currency
+          description: |-
+            Sale price currency
+
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+        shipped:
+          type: number
+          format: double
+          readOnly: true
+        target_date:
+          type: string
+          format: date
+          nullable: true
+          description: Target date for this line item (leave blank to use the target
+            date from the order)
+        link:
+          type: string
+          format: uri
+          description: Link to external page
+          maxLength: 200
+        available_stock:
+          type: number
+          format: double
+          readOnly: true
+        available_variant_stock:
+          type: number
+          format: double
+          readOnly: true
+        building:
+          type: number
+          format: double
+          readOnly: true
+          title: In Production
+        on_order:
+          type: number
+          format: double
+          readOnly: true
+      required:
+      - allocated
+      - available_stock
+      - available_variant_stock
+      - building
+      - on_order
+      - order
+      - overdue
+      - pk
+      - quantity
+      - shipped
+    SalesOrderSerialAllocation:
+      type: object
+      description: DRF serializer for allocation of serial numbers against a sales
+        order / shipment.
+      properties:
+        line_item:
+          type: integer
+        quantity:
+          type: integer
+          minimum: 1
+        serial_numbers:
+          type: string
+          description: Enter serial numbers to allocate
+        shipment:
+          type: integer
+      required:
+      - line_item
+      - quantity
+      - serial_numbers
+      - shipment
+    SalesOrderShipment:
+      type: object
+      description: Serializer for the SalesOrderShipment class.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        order:
+          type: integer
+          description: Sales Order
+        order_detail:
+          allOf:
+          - $ref: '#/components/schemas/SalesOrder'
+          readOnly: true
+        allocated_items:
+          type: integer
+          readOnly: true
+        shipment_date:
+          type: string
+          format: date
+          nullable: true
+          description: Date of shipment
+        delivery_date:
+          type: string
+          format: date
+          nullable: true
+          description: Date of delivery of shipment
+        checked_by:
+          type: integer
+          nullable: true
+          description: User who checked this shipment
+        reference:
+          type: string
+          default: '1'
+          title: Shipment
+          description: Shipment number
+          maxLength: 100
+        tracking_number:
+          type: string
+          description: Shipment tracking information
+          maxLength: 100
+        invoice_number:
+          type: string
+          description: Reference number for associated invoice
+          maxLength: 100
+        link:
+          type: string
+          format: uri
+          description: Link to external page
+          maxLength: 200
+        notes:
+          type: string
+          nullable: true
+          description: Markdown notes (optional)
+          maxLength: 50000
+      required:
+      - allocated_items
+      - order
+      - order_detail
+      - pk
+    SalesOrderShipmentAllocation:
+      type: object
+      description: DRF serializer for allocation of stock items against a sales order
+        / shipment.
+      properties:
+        items:
+          type: array
+          items:
+            $ref: '#/components/schemas/SalesOrderShipmentAllocationItem'
+        shipment:
+          type: integer
+      required:
+      - items
+      - shipment
+    SalesOrderShipmentAllocationItem:
+      type: object
+      description: A serializer for allocating a single stock-item against a SalesOrder
+        shipment.
+      properties:
+        line_item:
+          type: integer
+          title: Stock Item
+        stock_item:
+          type: integer
+        quantity:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,10}(?:\.\d{0,5})?$
+      required:
+      - line_item
+      - quantity
+      - stock_item
+    SalesOrderShipmentComplete:
+      type: object
+      description: Serializer for completing (shipping) a SalesOrderShipment.
+      properties:
+        shipment_date:
+          type: string
+          format: date
+          nullable: true
+          description: Date of shipment
+        delivery_date:
+          type: string
+          format: date
+          nullable: true
+          description: Date of delivery of shipment
+        tracking_number:
+          type: string
+          description: Shipment tracking information
+          maxLength: 100
+        invoice_number:
+          type: string
+          description: Reference number for associated invoice
+          maxLength: 100
+        link:
+          type: string
+          format: uri
+          description: Link to external page
+          maxLength: 200
+    SalesOrderStatusCustomKeyEnum:
+      enum:
+      - 10
+      - 15
+      - 20
+      - 25
+      - 30
+      - 40
+      - 50
+      - 60
+      type: integer
+      description: |-
+        * `10` - Pending
+        * `15` - In Progress
+        * `20` - Shipped
+        * `25` - On Hold
+        * `30` - Complete
+        * `40` - Cancelled
+        * `50` - Lost
+        * `60` - Returned
+    ScheduleTypeEnum:
+      enum:
+      - O
+      - I
+      - H
+      - D
+      - W
+      - BW
+      - M
+      - BM
+      - Q
+      - Y
+      - C
+      type: string
+      description: |-
+        * `O` - Once
+        * `I` - Minutes
+        * `H` - Hourly
+        * `D` - Daily
+        * `W` - Weekly
+        * `BW` - Biweekly
+        * `M` - Monthly
+        * `BM` - Bimonthly
+        * `Q` - Quarterly
+        * `Y` - Yearly
+        * `C` - Cron
+    ScheduledTask:
+      type: object
+      description: Serializer for an individual scheduled task object.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        name:
+          type: string
+          nullable: true
+          maxLength: 100
+        func:
+          type: string
+          description: e.g. module.tasks.function
+          maxLength: 256
+        args:
+          type: string
+          nullable: true
+          description: e.g. 1, 2, 'John'
+        kwargs:
+          type: string
+          nullable: true
+          description: e.g. x=1, y=2, name='John'
+        schedule_type:
+          $ref: '#/components/schemas/ScheduleTypeEnum'
+        repeats:
+          type: integer
+          description: n = n times, -1 = forever
+        last_run:
+          type: string
+          format: date-time
+        next_run:
+          type: string
+          format: date-time
+          nullable: true
+        success:
+          type: boolean
+        task:
+          type: string
+          readOnly: true
+          nullable: true
+      required:
+      - func
+      - last_run
+      - pk
+      - success
+      - task
+    SerializeStockItem:
+      type: object
+      description: |-
+        A DRF serializer for "serializing" a StockItem.
+
+        (Sorry for the confusing naming...)
+
+        Here, "serializing" means splitting out a single StockItem,
+        into multiple single-quantity items with an assigned serial number
+
+        Note: The base StockItem object is provided to the serializer context
+      properties:
+        quantity:
+          type: integer
+          minimum: 0
+          description: Enter number of stock items to serialize
+        serial_numbers:
+          type: string
+          description: Enter serial numbers for new items
+        destination:
+          type: integer
+          title: Location
+          description: Destination stock location
+        notes:
+          type: string
+          description: Optional note field
+      required:
+      - destination
+      - quantity
+      - serial_numbers
+    SocialAccount:
+      type: object
+      description: serialize allauth SocialAccounts for use with a REST API
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        provider:
+          type: string
+          maxLength: 200
+        uid:
+          type: string
+          maxLength: 191
+        last_login:
+          type: string
+          format: date-time
+          readOnly: true
+        date_joined:
+          type: string
+          format: date-time
+          readOnly: true
+      required:
+      - date_joined
+      - id
+      - last_login
+      - provider
+      - uid
+    SocialConnect:
+      type: object
+      properties:
+        access_token:
+          type: string
+        code:
+          type: string
+        id_token:
+          type: string
+    SocialProvider:
+      type: object
+      description: Serializer for the SocialProviderListResponseSerializer.
+      properties:
+        id:
+          type: string
+        name:
+          type: string
+        configured:
+          type: boolean
+        login:
+          type: string
+          format: uri
+        connect:
+          type: string
+          format: uri
+        display_name:
+          type: string
+      required:
+      - configured
+      - connect
+      - display_name
+      - id
+      - login
+      - name
+    SocialProviderListResponse:
+      type: object
+      description: Serializer for the SocialProviderListView.
+      properties:
+        sso_enabled:
+          type: boolean
+        sso_registration:
+          type: boolean
+        mfa_required:
+          type: boolean
+        providers:
+          type: array
+          items:
+            $ref: '#/components/schemas/SocialProvider'
+        registration_enabled:
+          type: boolean
+        password_forgotten_enabled:
+          type: boolean
+      required:
+      - mfa_required
+      - password_forgotten_enabled
+      - providers
+      - registration_enabled
+      - sso_enabled
+      - sso_registration
+    Status2a7Enum:
+      enum:
+      - 10
+      - 50
+      - 55
+      - 60
+      - 65
+      - 70
+      - 75
+      - 85
+      type: integer
+      description: |-
+        * `10` - OK
+        * `50` - Attention needed
+        * `55` - Damaged
+        * `60` - Destroyed
+        * `65` - Rejected
+        * `70` - Lost
+        * `75` - Quarantined
+        * `85` - Returned
+    StatusC2fEnum:
+      enum:
+      - 10
+      - 20
+      - 25
+      - 30
+      - 40
+      type: integer
+      description: |-
+        * `10` - Pending
+        * `20` - Production
+        * `25` - On Hold
+        * `30` - Cancelled
+        * `40` - Complete
+    StatusCustomKey2a7Enum:
+      enum:
+      - 10
+      - 50
+      - 55
+      - 60
+      - 65
+      - 70
+      - 75
+      - 85
+      type: integer
+      description: |-
+        * `10` - OK
+        * `50` - Attention needed
+        * `55` - Damaged
+        * `60` - Destroyed
+        * `65` - Rejected
+        * `70` - Lost
+        * `75` - Quarantined
+        * `85` - Returned
+    StatusCustomKeyC2fEnum:
+      enum:
+      - 10
+      - 20
+      - 25
+      - 30
+      - 40
+      type: integer
+      description: |-
+        * `10` - Pending
+        * `20` - Production
+        * `25` - On Hold
+        * `30` - Cancelled
+        * `40` - Complete
+    StockAdd:
+      type: object
+      description: Serializer for adding stock to stock item(s).
+      properties:
+        items:
+          type: array
+          items:
+            $ref: '#/components/schemas/StockAdjustmentItem'
+        notes:
+          type: string
+          description: Stock transaction notes
+      required:
+      - items
+    StockAdjustmentItem:
+      type: object
+      description: |-
+        Serializer for a single StockItem within a stock adjument request.
+
+        Required Fields:
+            - item: StockItem object
+            - quantity: Numerical quantity
+
+        Optional Fields (may be used by external tools)
+            - status: Change StockItem status code
+            - packaging: Change StockItem packaging
+            - batch: Change StockItem batch code
+
+        The optional fields can be used to adjust values for individual stock items
+      properties:
+        pk:
+          type: integer
+          title: stock_item
+          description: StockItem primary key value
+        quantity:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,10}(?:\.\d{0,5})?$
+        batch:
+          type: string
+          title: Batch Code
+          description: Batch code for this stock item
+          maxLength: 100
+        status:
+          description: |-
+            Stock item status code
+
+            * `None` - No Change
+            * `10` - OK
+            * `50` - Attention needed
+            * `55` - Damaged
+            * `60` - Destroyed
+            * `65` - Rejected
+            * `70` - Lost
+            * `75` - Quarantined
+            * `85` - Returned
+          oneOf:
+          - $ref: '#/components/schemas/Status2a7Enum'
+          - $ref: '#/components/schemas/BlankEnum'
+          - $ref: '#/components/schemas/NullEnum'
+        packaging:
+          type: string
+          description: Packaging this stock item is stored in
+          maxLength: 50
+      required:
+      - pk
+      - quantity
+    StockAssignment:
+      type: object
+      description: |-
+        Serializer for assigning one (or more) stock items to a customer.
+
+        This is a manual assignment process, separate for (for example) a Sales Order
+      properties:
+        items:
+          type: array
+          items:
+            $ref: '#/components/schemas/StockAssignmentItem'
+        customer:
+          type: integer
+          description: Customer to assign stock items
+        notes:
+          type: string
+          description: Stock assignment notes
+      required:
+      - customer
+      - items
+    StockAssignmentItem:
+      type: object
+      description: |-
+        Serializer for a single StockItem with in StockAssignment request.
+
+        Here, the particular StockItem is being assigned (manually) to a customer
+
+        Fields:
+            - item: StockItem object
+      properties:
+        item:
+          type: integer
+          title: Stock Item
+      required:
+      - item
+    StockChangeStatus:
+      type: object
+      description: Serializer for changing status of multiple StockItem objects.
+      properties:
+        items:
+          type: array
+          items:
+            type: integer
+            title: Stock Items
+          title: Stock Items
+          description: Select stock items to change status
+        status:
+          allOf:
+          - $ref: '#/components/schemas/Status2a7Enum'
+          default: 10
+        note:
+          type: string
+          title: Notes
+          description: Add transaction note (optional)
+      required:
+      - items
+    StockCount:
+      type: object
+      description: Serializer for counting stock items.
+      properties:
+        items:
+          type: array
+          items:
+            $ref: '#/components/schemas/StockAdjustmentItem'
+        notes:
+          type: string
+          description: Stock transaction notes
+      required:
+      - items
+    StockItem:
+      type: object
+      description: |-
+        Serializer for a StockItem.
+
+        - Includes serialization for the linked part
+        - Includes serialization for the item location
+      properties:
+        batch:
+          type: string
+          nullable: true
+          title: Batch Code
+          description: Batch code for this stock item
+          maxLength: 100
+        belongs_to:
+          type: integer
+          nullable: true
+          title: Installed In
+          description: Is this item installed in another item?
+        build:
+          type: integer
+          nullable: true
+          title: Source Build
+          description: Build for this stock item
+        consumed_by:
+          type: integer
+          nullable: true
+          description: Build order which consumed this stock item
+        customer:
+          type: integer
+          nullable: true
+          description: Customer
+        delete_on_deplete:
+          type: boolean
+          description: Delete this Stock Item when stock is depleted
+        expiry_date:
+          type: string
+          format: date
+          nullable: true
+          description: Expiry date for stock item. Stock will be considered expired
+            after this date
+        is_building:
+          type: boolean
+        link:
+          type: string
+          format: uri
+          title: External Link
+          description: Link to external URL
+          maxLength: 200
+        location:
+          type: integer
+          nullable: true
+          title: Stock Location
+          description: Where is this stock item located?
+        location_name:
+          type: string
+          readOnly: true
+        notes:
+          type: string
+          nullable: true
+          description: Markdown notes (optional)
+          maxLength: 50000
+        owner:
+          type: integer
+          nullable: true
+          description: Select Owner
+        packaging:
+          type: string
+          nullable: true
+          description: Packaging this stock item is stored in
+          maxLength: 50
+        parent:
+          type: integer
+          readOnly: true
+          title: Parent Item
+          description: Parent stock item
+        part:
+          type: integer
+          description: Base Part
+        purchase_order:
+          type: integer
+          nullable: true
+          title: Source Purchase Order
+          description: Purchase order for this stock item
+        purchase_order_reference:
+          type: string
+          readOnly: true
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        quantity:
+          type: number
+          format: double
+        sales_order:
+          type: integer
+          nullable: true
+          title: Destination Sales Order
+        sales_order_reference:
+          type: string
+          readOnly: true
+        serial:
+          type: string
+          nullable: true
+          title: Serial Number
+          description: Serial number for this item
+          maxLength: 100
+        status:
+          allOf:
+          - $ref: '#/components/schemas/Status2a7Enum'
+          minimum: 0
+        status_text:
+          type: string
+          readOnly: true
+        status_custom_key:
+          nullable: true
+          title: Custom status key
+          description: |-
+            Additional status information for this item
+
+            * `10` - OK
+            * `50` - Attention needed
+            * `55` - Damaged
+            * `60` - Destroyed
+            * `65` - Rejected
+            * `70` - Lost
+            * `75` - Quarantined
+            * `85` - Returned
+          oneOf:
+          - $ref: '#/components/schemas/StatusCustomKey2a7Enum'
+          - $ref: '#/components/schemas/NullEnum'
+        stocktake_date:
+          type: string
+          format: date
+          readOnly: true
+          nullable: true
+        supplier_part:
+          type: integer
+          nullable: true
+          description: Select a matching supplier part for this stock item
+        sku:
+          type: string
+          readOnly: true
+        barcode_hash:
+          type: string
+          readOnly: true
+          description: Unique hash of barcode data
+        updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+          description: Timestamp of last update
+        purchase_price:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          nullable: true
+          description: Purchase price of this stock item, per unit or pack
+        purchase_price_currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          title: Currency
+          description: |-
+            Purchase currency of this stock item
+
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+        use_pack_size:
+          type: boolean
+          writeOnly: true
+          nullable: true
+          description: 'Use pack size when adding: the quantity defined is the number
+            of packs'
+        allocated:
+          type: number
+          format: double
+          readOnly: true
+          title: Allocated Quantity
+        expired:
+          type: boolean
+          readOnly: true
+        installed_items:
+          type: integer
+          readOnly: true
+        child_items:
+          type: integer
+          readOnly: true
+        stale:
+          type: boolean
+          readOnly: true
+        tracking_items:
+          type: integer
+          readOnly: true
+        tags:
+          type: array
+          items:
+            type: string
+      required:
+      - allocated
+      - barcode_hash
+      - child_items
+      - expired
+      - installed_items
+      - location_name
+      - parent
+      - part
+      - pk
+      - purchase_order_reference
+      - quantity
+      - sales_order_reference
+      - sku
+      - stale
+      - status_text
+      - stocktake_date
+      - tracking_items
+      - updated
+    StockItemSerializerBrief:
+      type: object
+      description: Brief serializers for a StockItem.
+      properties:
+        part:
+          type: integer
+          title: Base Part
+          description: Base part
+        part_name:
+          type: string
+          readOnly: true
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        location:
+          type: integer
+          nullable: true
+          title: Stock Location
+          description: Where is this stock item located?
+        quantity:
+          type: number
+          format: double
+        serial:
+          type: string
+          nullable: true
+          title: Serial Number
+          description: Serial number for this item
+          maxLength: 100
+        batch:
+          type: string
+          nullable: true
+          title: Batch Code
+          description: Batch code for this stock item
+          maxLength: 100
+        supplier_part:
+          type: integer
+          nullable: true
+          description: Select a matching supplier part for this stock item
+        barcode_hash:
+          type: string
+          readOnly: true
+          description: Unique hash of barcode data
+      required:
+      - barcode_hash
+      - part
+      - part_name
+      - pk
+      - quantity
+    StockItemTestResult:
+      type: object
+      description: Serializer for the StockItemTestResult model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        stock_item:
+          type: integer
+        result:
+          type: boolean
+          description: Test result
+        value:
+          type: string
+          description: Test output value
+          maxLength: 500
+        attachment:
+          type: string
+          format: uri
+          nullable: true
+          description: Test result attachment
+        notes:
+          type: string
+          description: Test notes
+          maxLength: 500
+        test_station:
+          type: string
+          description: The identifier of the test station where the test was performed
+          maxLength: 500
+        started_datetime:
+          type: string
+          format: date-time
+          nullable: true
+          title: Started
+          description: The timestamp of the test start
+        finished_datetime:
+          type: string
+          format: date-time
+          nullable: true
+          title: Finished
+          description: The timestamp of the test finish
+        user:
+          type: integer
+          readOnly: true
+          nullable: true
+        date:
+          type: string
+          format: date-time
+          readOnly: true
+        template:
+          type: integer
+          nullable: true
+          title: Test template for this result
+          description: Template
+      required:
+      - date
+      - pk
+      - stock_item
+      - user
+    StockLocationType:
+      type: object
+      description: Serializer for StockLocationType model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        name:
+          type: string
+          description: Name
+          maxLength: 100
+        description:
+          type: string
+          description: Description (optional)
+          maxLength: 250
+        icon:
+          type: string
+          description: Default icon for all locations that have no icon set (optional)
+          maxLength: 100
+        location_count:
+          type: integer
+          readOnly: true
+      required:
+      - location_count
+      - name
+      - pk
+    StockMerge:
+      type: object
+      description: Serializer for merging two (or more) stock items together.
+      properties:
+        items:
+          type: array
+          items:
+            $ref: '#/components/schemas/StockMergeItem'
+        location:
+          type: integer
+          description: Destination stock location
+        notes:
+          type: string
+          description: Stock merging notes
+        allow_mismatched_suppliers:
+          type: boolean
+          description: Allow stock items with different supplier parts to be merged
+        allow_mismatched_status:
+          type: boolean
+          description: Allow stock items with different status codes to be merged
+      required:
+      - items
+      - location
+    StockMergeItem:
+      type: object
+      description: |-
+        Serializer for a single StockItem within the StockMergeSerializer class.
+
+        Here, the individual StockItem is being checked for merge compatibility.
+      properties:
+        item:
+          type: integer
+          title: Stock Item
+      required:
+      - item
+    StockRemove:
+      type: object
+      description: Serializer for removing stock from stock item(s).
+      properties:
+        items:
+          type: array
+          items:
+            $ref: '#/components/schemas/StockAdjustmentItem'
+        notes:
+          type: string
+          description: Stock transaction notes
+      required:
+      - items
+    StockTracking:
+      type: object
+      description: Serializer for StockItemTracking model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        item:
+          type: integer
+        date:
+          type: string
+          format: date-time
+          readOnly: true
+        deltas:
+          readOnly: true
+        label:
+          type: string
+          readOnly: true
+        notes:
+          type: string
+          nullable: true
+          description: Entry notes
+          maxLength: 512
+        tracking_type:
+          type: integer
+          readOnly: true
+        user:
+          type: integer
+          readOnly: true
+          nullable: true
+      required:
+      - date
+      - deltas
+      - item
+      - label
+      - pk
+      - tracking_type
+      - user
+    StockTransfer:
+      type: object
+      description: Serializer for transferring (moving) stock item(s).
+      properties:
+        items:
+          type: array
+          items:
+            $ref: '#/components/schemas/StockAdjustmentItem'
+        notes:
+          type: string
+          description: Stock transaction notes
+        location:
+          type: integer
+          description: Destination stock location
+      required:
+      - items
+      - location
+    SupplierPart:
+      type: object
+      description: Serializer for SupplierPart object.
+      properties:
+        description:
+          type: string
+          nullable: true
+          description: Supplier part description
+          maxLength: 250
+        in_stock:
+          type: number
+          format: double
+          readOnly: true
+        link:
+          type: string
+          format: uri
+          nullable: true
+          description: URL for external supplier part link
+          maxLength: 200
+        active:
+          type: boolean
+          description: Is this supplier part active?
+        manufacturer:
+          type: string
+          readOnly: true
+        manufacturer_part:
+          type: integer
+          nullable: true
+          description: Select manufacturer part
+        MPN:
+          type: string
+          readOnly: true
+        name:
+          type: string
+          readOnly: true
+        note:
+          type: string
+          nullable: true
+          description: Notes
+          maxLength: 100
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        barcode_hash:
+          type: string
+          readOnly: true
+          description: Unique hash of barcode data
+        packaging:
+          type: string
+          nullable: true
+          description: Part packaging
+          maxLength: 50
+        pack_quantity:
+          type: string
+          description: Total quantity supplied in a single pack. Leave empty for single
+            items.
+          maxLength: 25
+        pack_quantity_native:
+          type: number
+          format: double
+          readOnly: true
+        part:
+          type: integer
+          title: Base Part
+          description: Select part
+        SKU:
+          type: string
+          description: Supplier stock keeping unit
+          maxLength: 100
+        supplier:
+          type: integer
+        url:
+          type: string
+          readOnly: true
+        updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+        notes:
+          type: string
+          nullable: true
+          description: Markdown notes (optional)
+          maxLength: 50000
+      required:
+      - MPN
+      - SKU
+      - barcode_hash
+      - in_stock
+      - manufacturer
+      - name
+      - pack_quantity_native
+      - part
+      - pk
+      - supplier
+      - updated
+      - url
+    SupplierPriceBreak:
+      type: object
+      description: Serializer for SupplierPriceBreak object.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        part:
+          type: integer
+        quantity:
+          type: number
+          format: double
+        price:
+          type: string
+          format: decimal
+          pattern: ^-?\d{0,13}(?:\.\d{0,6})?$
+          nullable: true
+        price_currency:
+          allOf:
+          - $ref: '#/components/schemas/SalePriceCurrencyEnum'
+          title: Currency
+          description: |-
+            Select currency from available options
+
+            * `AUD` - Australian Dollar
+            * `CNY` - Chinese Yuan
+            * `EUR` - Euro
+            * `USD` - US Dollar
+        supplier:
+          type: integer
+          readOnly: true
+        updated:
+          type: string
+          format: date-time
+          readOnly: true
+          nullable: true
+          description: Timestamp of last update
+      required:
+      - part
+      - pk
+      - price
+      - quantity
+      - supplier
+      - updated
+    TestStatistics:
+      type: object
+      description: DRF serializer class for the test statistics.
+      properties:
+        results:
+          type: array
+          items:
+            type: object
+            additionalProperties: {}
+          readOnly: true
+      required:
+      - results
+    Token:
+      type: object
+      description: Serializer for Token model.
+      properties:
+        key:
+          type: string
+          maxLength: 100
+          minLength: 50
+    UninstallStockItem:
+      type: object
+      description: API serializers for uninstalling an installed item from a stock
+        item.
+      properties:
+        location:
+          type: integer
+          description: Destination location for uninstalled item
+        note:
+          type: string
+          title: Notes
+          description: Add transaction note (optional)
+      required:
+      - location
+    Unit:
+      type: object
+      description: Serializer for the AllUnitListResponseSerializer.
+      properties:
+        name:
+          type: string
+        is_alias:
+          type: boolean
+        compatible_units:
+          type: array
+          items:
+            type: string
+        isdimensionless:
+          type: boolean
+      required:
+      - compatible_units
+      - is_alias
+      - isdimensionless
+      - name
+    User:
+      type: object
+      description: Serializer for a User.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        username:
+          type: string
+          description: Username
+        first_name:
+          type: string
+          description: First name of the user
+        last_name:
+          type: string
+          description: Last name of the user
+        email:
+          type: string
+          format: email
+          description: Email address of the user
+      required:
+      - email
+      - first_name
+      - last_name
+      - pk
+      - username
+    UserCreate:
+      type: object
+      description: Serializer for creating a new User.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        username:
+          type: string
+          description: Username
+        first_name:
+          type: string
+          description: First name of the user
+        last_name:
+          type: string
+          description: Last name of the user
+        email:
+          type: string
+          format: email
+          description: Email address of the user
+        groups:
+          type: array
+          items:
+            $ref: '#/components/schemas/Group'
+          readOnly: true
+        is_staff:
+          type: boolean
+          title: Staff
+          description: Does this user have staff permissions
+        is_superuser:
+          type: boolean
+          title: Superuser
+          description: Is this user a superuser
+        is_active:
+          type: boolean
+          title: Active
+          description: Is this user account active
+      required:
+      - email
+      - first_name
+      - groups
+      - is_active
+      - is_staff
+      - is_superuser
+      - last_name
+      - pk
+      - username
+    UserDetails:
+      type: object
+      description: User model w/o password
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        username:
+          type: string
+          description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_
+            only.
+          pattern: ^[\w.@+-]+$
+          maxLength: 150
+        email:
+          type: string
+          format: email
+          readOnly: true
+          title: Email address
+        first_name:
+          type: string
+          maxLength: 150
+        last_name:
+          type: string
+          maxLength: 150
+      required:
+      - email
+      - pk
+      - username
+    UserSettings:
+      type: object
+      description: Serializer for the InvenTreeUserSetting model.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        key:
+          type: string
+          readOnly: true
+        value:
+          type: string
+        name:
+          type: string
+          readOnly: true
+        description:
+          type: string
+          readOnly: true
+        user:
+          type: integer
+          readOnly: true
+        type:
+          type: string
+          readOnly: true
+        units:
+          type: string
+          readOnly: true
+        choices:
+          type: array
+          items: {}
+          description: Returns the choices available for a given item.
+          readOnly: true
+        model_name:
+          type: string
+          readOnly: true
+        api_url:
+          type: string
+          readOnly: true
+        typ:
+          type: string
+          readOnly: true
+      required:
+      - api_url
+      - choices
+      - description
+      - key
+      - model_name
+      - name
+      - pk
+      - typ
+      - type
+      - units
+      - user
+      - value
+    VerifyEmail:
+      type: object
+      properties:
+        key:
+          type: string
+          writeOnly: true
+      required:
+      - key
+    Version:
+      type: object
+      description: Serializer for server version.
+      properties:
+        server:
+          type: string
+        api:
+          type: integer
+        commit_hash:
+          type: string
+        commit_date:
+          type: string
+        commit_branch:
+          type: string
+        python:
+          type: string
+        django:
+          type: string
+      required:
+      - api
+      - commit_branch
+      - commit_date
+      - commit_hash
+      - django
+      - python
+      - server
+    VersionInformation:
+      type: object
+      description: Serializer for a single version.
+      properties:
+        version:
+          type: string
+        date:
+          type: string
+        gh:
+          type: string
+        text:
+          type: string
+        latest:
+          type: boolean
+      required:
+      - date
+      - gh
+      - latest
+      - text
+      - version
+    VersionView:
+      type: object
+      description: Serializer for a single version.
+      properties:
+        dev:
+          type: boolean
+        up_to_date:
+          type: boolean
+        version:
+          $ref: '#/components/schemas/Version'
+        links:
+          $ref: '#/components/schemas/Link'
+      required:
+      - dev
+      - links
+      - up_to_date
+      - version
+  securitySchemes:
+    basicAuth:
+      type: http
+      scheme: basic
+    cookieAuth:
+      type: apiKey
+      in: cookie
+      name: sessionid
+    tokenAuth:
+      type: apiKey
+      in: header
+      name: Authorization
+      description: Token-based authentication with required prefix "Token"
+servers:
+- url: http://localhost:8000
+externalDocs:
+  description: More information about InvenTree in the official docs
+  url: https://docs.inventree.org