diff --git a/export/308/api.yaml b/export/308/api.yaml
new file mode 100644
index 0000000..86781fc
--- /dev/null
+++ b/export/308/api.yaml
@@ -0,0 +1,34669 @@
+openapi: 3.0.3
+info:
+  title: InvenTree API
+  version: '308'
+  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/:
+    get:
+      operationId: root_retrieve
+      description: Serve current server information.
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      - {}
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/InfoApi'
+          description: InvenTree server information
+  /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
+      description: |-
+        Registers a new user.
+
+        Accepts the following POST parameters: username, email, password1, password2.
+      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/Register'
+          description: ''
+  /api/auth/registration/resend-email/:
+    post:
+      operationId: auth_registration_resend_email_create
+      description: |-
+        Resends another email to an unverified email.
+
+        Accepts the following POST parameter: email.
+      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
+      description: |-
+        Verifies the email associated with the provided key.
+
+        Accepts the following POST parameter: key.
+      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: category
+        schema:
+          type: string
+        description: Category
+      - in: query
+        name: completed_after
+        schema:
+          type: string
+          format: date
+        description: Completed after
+      - in: query
+        name: completed_before
+        schema:
+          type: string
+          format: date
+        description: Completed before
+      - in: query
+        name: created_after
+        schema:
+          type: string
+          format: date
+        description: Created after
+      - in: query
+        name: created_before
+        schema:
+          type: string
+          format: date
+        description: Created before
+      - in: query
+        name: has_project_code
+        schema:
+          type: boolean
+        description: has_project_code
+      - in: query
+        name: has_start_date
+        schema:
+          type: boolean
+        description: Has start date
+      - in: query
+        name: has_target_date
+        schema:
+          type: boolean
+        description: Has target date
+      - in: query
+        name: include_variants
+        schema:
+          type: boolean
+        description: Include Variants
+      - 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: outstanding
+        schema:
+          type: boolean
+        description: Build is outstanding
+      - 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
+        description: Part
+      - 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: start_date_after
+        schema:
+          type: string
+          format: date
+        description: Start date after
+      - in: query
+        name: start_date_before
+        schema:
+          type: string
+          format: date
+        description: Start date before
+      - in: query
+        name: status
+        schema:
+          type: integer
+        description: Order Status
+      - in: query
+        name: target_date_after
+        schema:
+          type: string
+          format: date
+        description: Target date after
+      - in: query
+        name: target_date_before
+        schema:
+          type: string
+          format: date
+        description: Target date before
+      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
+        description: Build Order
+      - in: query
+        name: build_line
+        schema:
+          type: integer
+      - in: query
+        name: include_variants
+        schema:
+          type: boolean
+        description: Include Variants
+      - 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
+        description: Part
+      - 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
+      - in: query
+        name: order_outstanding
+        schema:
+          type: boolean
+        description: Order Outstanding
+      - 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
+      - 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':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GenericStateClass'
+          description: ''
+        '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
+      - in: query
+        name: company
+        schema:
+          type: string
+        description: Company
+      - in: query
+        name: has_stock
+        schema:
+          type: boolean
+        description: Has Stock
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: manufacturer
+        schema:
+          type: integer
+        description: Manufacturer
+      - 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':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GenericStateClass'
+          description: ''
+        '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
+      - in: query
+        name: model
+        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: reference_status
+        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
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      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: completed_after
+        schema:
+          type: string
+          format: date
+        description: Completed After
+      - in: query
+        name: completed_before
+        schema:
+          type: string
+          format: date
+        description: Completed Before
+      - in: query
+        name: created_after
+        schema:
+          type: string
+          format: date
+        description: Created After
+      - in: query
+        name: created_before
+        schema:
+          type: string
+          format: date
+        description: Created Before
+      - in: query
+        name: created_by
+        schema:
+          type: integer
+        description: Created By
+      - in: query
+        name: has_project_code
+        schema:
+          type: boolean
+        description: Has Project Code
+      - in: query
+        name: has_start_date
+        schema:
+          type: boolean
+        description: Has Start Date
+      - in: query
+        name: has_target_date
+        schema:
+          type: boolean
+        description: Has Target Date
+      - 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: part
+        schema:
+          type: string
+        description: Part
+      - 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: start_date_after
+        schema:
+          type: string
+          format: date
+        description: Start Date After
+      - in: query
+        name: start_date_before
+        schema:
+          type: string
+          format: date
+        description: Start Date Before
+      - in: query
+        name: status
+        schema:
+          type: integer
+        description: Order Status
+      - in: query
+        name: supplier
+        schema:
+          type: integer
+      - in: query
+        name: supplier_part
+        schema:
+          type: string
+        description: Supplier Part
+      - in: query
+        name: target_date_after
+        schema:
+          type: string
+          format: date
+        description: Target Date After
+      - in: query
+        name: target_date_before
+        schema:
+          type: string
+          format: date
+        description: Target Date Before
+      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: string
+        description: Internal Part
+      - in: query
+        name: has_pricing
+        schema:
+          type: boolean
+        description: Has Pricing
+      - in: query
+        name: include_variants
+        schema:
+          type: boolean
+        description: Include Variants
+      - 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
+            - expiry_date: stock item expiry date (optional)
+            - 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':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GenericStateClass'
+          description: ''
+        '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: completed_after
+        schema:
+          type: string
+          format: date
+        description: Completed After
+      - in: query
+        name: completed_before
+        schema:
+          type: string
+          format: date
+        description: Completed Before
+      - in: query
+        name: created_after
+        schema:
+          type: string
+          format: date
+        description: Created After
+      - in: query
+        name: created_before
+        schema:
+          type: string
+          format: date
+        description: Created Before
+      - in: query
+        name: created_by
+        schema:
+          type: integer
+        description: Created By
+      - in: query
+        name: customer
+        schema:
+          type: integer
+      - in: query
+        name: has_project_code
+        schema:
+          type: boolean
+        description: Has Project Code
+      - in: query
+        name: has_start_date
+        schema:
+          type: boolean
+        description: Has Start Date
+      - in: query
+        name: has_target_date
+        schema:
+          type: boolean
+        description: Has Target Date
+      - in: query
+        name: include_variants
+        schema:
+          type: boolean
+        description: Include Variants
+      - 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: part
+        schema:
+          type: string
+      - 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: start_date_after
+        schema:
+          type: string
+          format: date
+        description: Start Date After
+      - in: query
+        name: start_date_before
+        schema:
+          type: string
+          format: date
+        description: Start Date Before
+      - in: query
+        name: status
+        schema:
+          type: integer
+        description: Order Status
+      - in: query
+        name: target_date_after
+        schema:
+          type: string
+          format: date
+        description: Target Date After
+      - in: query
+        name: target_date_before
+        schema:
+          type: string
+          format: date
+        description: Target Date Before
+      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':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GenericStateClass'
+          description: ''
+        '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':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GenericStateClass'
+          description: ''
+        '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: completed_after
+        schema:
+          type: string
+          format: date
+        description: Completed After
+      - in: query
+        name: completed_before
+        schema:
+          type: string
+          format: date
+        description: Completed Before
+      - in: query
+        name: created_after
+        schema:
+          type: string
+          format: date
+        description: Created After
+      - in: query
+        name: created_before
+        schema:
+          type: string
+          format: date
+        description: Created Before
+      - in: query
+        name: created_by
+        schema:
+          type: integer
+        description: Created By
+      - in: query
+        name: customer
+        schema:
+          type: integer
+      - in: query
+        name: has_project_code
+        schema:
+          type: boolean
+        description: Has Project Code
+      - in: query
+        name: has_start_date
+        schema:
+          type: boolean
+        description: Has Start Date
+      - in: query
+        name: has_target_date
+        schema:
+          type: boolean
+        description: Has Target Date
+      - in: query
+        name: include_variants
+        schema:
+          type: boolean
+        description: Include Variants
+      - 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: part
+        schema:
+          type: string
+      - 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: start_date_after
+        schema:
+          type: string
+          format: date
+        description: Start Date After
+      - in: query
+        name: start_date_before
+        schema:
+          type: string
+          format: date
+        description: Start Date Before
+      - in: query
+        name: status
+        schema:
+          type: integer
+        description: Order Status
+      - in: query
+        name: target_date_after
+        schema:
+          type: string
+          format: date
+        description: Target Date After
+      - in: query
+        name: target_date_before
+        schema:
+          type: string
+          format: date
+        description: Target Date Before
+      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: assigned_to_shipment
+        schema:
+          type: boolean
+        description: Has Shipment
+      - in: query
+        name: include_variants
+        schema:
+          type: boolean
+        description: Include Variants
+      - in: query
+        name: item
+        schema:
+          type: integer
+      - name: limit
+        required: false
+        in: query
+        description: Number of results to return per page.
+        schema:
+          type: integer
+      - in: query
+        name: line
+        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: string
+        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: allocated
+        schema:
+          type: boolean
+        description: Allocated
+      - 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_outstanding
+        schema:
+          type: boolean
+        description: Order Outstanding
+      - 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':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GenericStateClass'
+          description: ''
+        '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
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      - in: query
+        name: part
+        schema:
+          type: string
+        description: Part
+      - in: query
+        name: part_1
+        schema:
+          type: integer
+      - in: query
+        name: part_2
+        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/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/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
+      - name: ordering
+        required: false
+        in: query
+        description: Which field to use when ordering the results.
+        schema:
+          type: string
+      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/selection/:
+    get:
+      operationId: selection_list
+      description: List view for SelectionList 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:
+      - selection
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedSelectionListList'
+          description: ''
+    post:
+      operationId: selection_create
+      description: List view for SelectionList objects.
+      tags:
+      - selection
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/SelectionList'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/SelectionList'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/SelectionList'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SelectionList'
+          description: ''
+  /api/selection/{id}/:
+    get:
+      operationId: selection_retrieve
+      description: Detail view for a SelectionList object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - selection
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SelectionList'
+          description: ''
+    put:
+      operationId: selection_update
+      description: Detail view for a SelectionList object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - selection
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/SelectionList'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/SelectionList'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/SelectionList'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SelectionList'
+          description: ''
+    patch:
+      operationId: selection_partial_update
+      description: Detail view for a SelectionList object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - selection
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedSelectionList'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedSelectionList'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedSelectionList'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SelectionList'
+          description: ''
+    delete:
+      operationId: selection_destroy
+      description: Detail view for a SelectionList object.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - selection
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /api/selection/{id}/entry/:
+    get:
+      operationId: selection_entry_list
+      description: List view for SelectionEntry objects.
+      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:
+      - selection
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PaginatedSelectionEntryList'
+          description: ''
+    post:
+      operationId: selection_entry_create
+      description: List view for SelectionEntry objects.
+      parameters:
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - selection
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/SelectionEntry'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/SelectionEntry'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/SelectionEntry'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SelectionEntry'
+          description: ''
+  /api/selection/{id}/entry/{entrypk}/:
+    get:
+      operationId: selection_entry_retrieve
+      description: Detail view for a SelectionEntry object.
+      parameters:
+      - in: path
+        name: entrypk
+        schema:
+          type: integer
+        required: true
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - selection
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SelectionEntry'
+          description: ''
+    put:
+      operationId: selection_entry_update
+      description: Detail view for a SelectionEntry object.
+      parameters:
+      - in: path
+        name: entrypk
+        schema:
+          type: integer
+        required: true
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - selection
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/SelectionEntry'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/SelectionEntry'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/SelectionEntry'
+        required: true
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SelectionEntry'
+          description: ''
+    patch:
+      operationId: selection_entry_partial_update
+      description: Detail view for a SelectionEntry object.
+      parameters:
+      - in: path
+        name: entrypk
+        schema:
+          type: integer
+        required: true
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - selection
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PatchedSelectionEntry'
+          application/x-www-form-urlencoded:
+            schema:
+              $ref: '#/components/schemas/PatchedSelectionEntry'
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/PatchedSelectionEntry'
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SelectionEntry'
+          description: ''
+    delete:
+      operationId: selection_entry_destroy
+      description: Detail view for a SelectionEntry object.
+      parameters:
+      - in: path
+        name: entrypk
+        schema:
+          type: integer
+        required: true
+      - in: path
+        name: id
+        schema:
+          type: integer
+        required: true
+      tags:
+      - selection
+      security:
+      - tokenAuth: []
+      - basicAuth: []
+      - cookieAuth: []
+      responses:
+        '204':
+          description: No response body
+  /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
+        schema:
+          type: boolean
+        description: Consumed by Build Order
+      - 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_after
+        schema:
+          type: string
+          format: date
+        description: Expiry date after
+      - in: query
+        name: expiry_before
+        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: include_variants
+        schema:
+          type: boolean
+        description: Include Variants
+      - 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
+        schema:
+          type: integer
+        description: Part
+      - 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: stocktake_after
+        schema:
+          type: string
+          format: date
+        description: Stocktake After
+      - in: query
+        name: stocktake_before
+        schema:
+          type: string
+          format: date
+        description: Stocktake Before
+      - 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 a single StockItem instance.
+      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 a single StockItem instance.
+      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 a single StockItem instance.
+      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 a single StockItem instance.
+      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':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GenericStateClass'
+          description: ''
+        '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':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GenericStateClass'
+          description: ''
+        '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/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/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
+        supplier:
+          type: integer
+          nullable: true
+          description: Supplier to receive items from
+        purchase_order:
+          type: integer
+          nullable: true
+          description: PurchaseOrder to receive items against
+        location:
+          type: integer
+          nullable: true
+          description: Location to receive items into
+        line_item:
+          type: integer
+          nullable: true
+          description: Purchase order line item to receive items against
+        auto_allocate:
+          type: boolean
+          default: true
+          description: Automatically allocate stock items to the purchase order
+      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
+        start_date:
+          type: string
+          format: date
+          nullable: true
+          title: Build start date
+          description: Scheduled start date for this build order
+        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: Cancel 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
+        build_detail:
+          allOf:
+          - $ref: '#/components/schemas/Build'
+          readOnly: true
+          title: Build
+        location_detail:
+          allOf:
+          - $ref: '#/components/schemas/LocationBrief'
+          readOnly: true
+          title: Location
+        part_detail:
+          allOf:
+          - $ref: '#/components/schemas/PartBrief'
+          readOnly: true
+          title: Part
+        stock_item_detail:
+          allOf:
+          - $ref: '#/components/schemas/StockItemSerializerBrief'
+          readOnly: true
+          title: Stock Item
+        supplier_part_detail:
+          allOf:
+          - $ref: '#/components/schemas/SupplierPart'
+          readOnly: true
+          title: Supplier Part
+        bom_reference:
+          type: string
+          readOnly: true
+      required:
+      - bom_reference
+      - build
+      - build_detail
+      - build_line
+      - install_into
+      - 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
+        quantity:
+          type: number
+          format: double
+        part:
+          type: integer
+          readOnly: true
+        build_reference:
+          type: string
+          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
+        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
+        external_stock:
+          type: number
+          format: double
+          readOnly: true
+        allocations:
+          type: array
+          items:
+            $ref: '#/components/schemas/BuildItem'
+          readOnly: true
+        bom_item_detail:
+          allOf:
+          - $ref: '#/components/schemas/BomItem'
+          readOnly: true
+          title: BOM Item
+        part_detail:
+          allOf:
+          - $ref: '#/components/schemas/PartBrief'
+          readOnly: true
+          title: Part
+      required:
+      - allocated
+      - allocations
+      - allow_variants
+      - available_stock
+      - available_substitute_stock
+      - available_variant_stock
+      - bom_item
+      - bom_item_detail
+      - build
+      - build_reference
+      - consumable
+      - external_stock
+      - in_production
+      - inherited
+      - on_order
+      - optional
+      - part
+      - part_detail
+      - pk
+      - quantity
+      - reference
+      - testable
+      - 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: Build output with 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: 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
+          title: Value
+          description: Numerical 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_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
+    Customize:
+      type: object
+      description: Serializer for customize field.
+      properties:
+        logo:
+          type: string
+        splash:
+          type: string
+        login_message:
+          type: string
+      required:
+      - login_message
+      - logo
+      - splash
+    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
+    DefaultLocaleEnum:
+      enum:
+      - ar
+      - bg
+      - cs
+      - da
+      - de
+      - el
+      - en
+      - es
+      - es-mx
+      - et
+      - fa
+      - fi
+      - fr
+      - he
+      - hi
+      - hu
+      - it
+      - ja
+      - ko
+      - lt
+      - lv
+      - nl
+      - 'no'
+      - pl
+      - pt
+      - pt-br
+      - ro
+      - ru
+      - sk
+      - sl
+      - sr
+      - sv
+      - th
+      - tr
+      - uk
+      - vi
+      - zh-hans
+      - zh-hant
+      type: string
+      description: |-
+        * `ar` - ar
+        * `bg` - bg
+        * `cs` - cs
+        * `da` - da
+        * `de` - de
+        * `el` - el
+        * `en` - en
+        * `es` - es
+        * `es-mx` - es-mx
+        * `et` - et
+        * `fa` - fa
+        * `fi` - fi
+        * `fr` - fr
+        * `he` - he
+        * `hi` - hi
+        * `hu` - hu
+        * `it` - it
+        * `ja` - ja
+        * `ko` - ko
+        * `lt` - lt
+        * `lv` - lv
+        * `nl` - nl
+        * `no` - no
+        * `pl` - pl
+        * `pt` - pt
+        * `pt-br` - pt-br
+        * `ro` - ro
+        * `ru` - ru
+        * `sk` - sk
+        * `sl` - sl
+        * `sr` - sr
+        * `sv` - sv
+        * `th` - th
+        * `tr` - tr
+        * `uk` - uk
+        * `vi` - vi
+        * `zh-hans` - zh-hans
+        * `zh-hant` - zh-hant
+    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
+    GenericStateClass:
+      type: object
+      description: API serializer for generic state class information.
+      properties:
+        status_class:
+          type: string
+          readOnly: true
+          title: Class
+        values:
+          type: object
+          additionalProperties:
+            $ref: '#/components/schemas/GenericStateValue'
+      required:
+      - status_class
+      - values
+    GenericStateValue:
+      type: object
+      description: API serializer for generic state information.
+      properties:
+        key:
+          type: integer
+        logical_key:
+          type: string
+        name:
+          type: string
+        label:
+          type: string
+        color:
+          type: string
+        custom:
+          type: boolean
+      required:
+      - key
+      - label
+      - name
+    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
+          nullable: true
+        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
+    InfoApi:
+      type: object
+      description: InvenTree server information - some information might be blanked
+        if called without elevated credentials.
+      properties:
+        server:
+          type: string
+          readOnly: true
+        version:
+          type: string
+          readOnly: true
+        instance:
+          type: string
+          readOnly: true
+        apiVersion:
+          type: integer
+          readOnly: true
+        worker_running:
+          type: boolean
+          readOnly: true
+        worker_count:
+          type: integer
+          readOnly: true
+        worker_pending_tasks:
+          type: integer
+          readOnly: true
+        plugins_enabled:
+          type: boolean
+          readOnly: true
+        plugins_install_disabled:
+          type: boolean
+          readOnly: true
+        active_plugins:
+          readOnly: true
+        email_configured:
+          type: boolean
+          readOnly: true
+        debug_mode:
+          type: boolean
+          readOnly: true
+        docker_mode:
+          type: boolean
+          readOnly: true
+        default_locale:
+          allOf:
+          - $ref: '#/components/schemas/DefaultLocaleEnum'
+          readOnly: true
+        customize:
+          allOf:
+          - $ref: '#/components/schemas/Customize'
+          readOnly: true
+        system_health:
+          type: boolean
+          readOnly: true
+        database:
+          type: string
+          readOnly: true
+        platform:
+          type: string
+          readOnly: true
+        installer:
+          type: string
+          readOnly: true
+        target:
+          type: string
+          readOnly: true
+        django_admin:
+          type: string
+          readOnly: true
+      required:
+      - active_plugins
+      - apiVersion
+      - customize
+      - database
+      - debug_mode
+      - default_locale
+      - django_admin
+      - docker_mode
+      - email_configured
+      - installer
+      - instance
+      - platform
+      - plugins_enabled
+      - plugins_install_disabled
+      - server
+      - system_health
+      - target
+      - version
+      - worker_count
+      - worker_pending_tasks
+      - worker_running
+    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
+        template_detail:
+          allOf:
+          - $ref: '#/components/schemas/LabelTemplate'
+          readOnly: true
+      required:
+      - created
+      - model_type
+      - output
+      - pk
+      - template
+      - template_detail
+      - user_detail
+    LabelPrint:
+      type: object
+      description: Serializer class for printing a label.
+      properties:
+        template:
+          type: integer
+          description: Select label template
+        plugin:
+          type: string
+          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
+          nullable: true
+        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
+        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
+      - 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
+          nullable: true
+        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'
+    PaginatedSelectionEntryList:
+      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/SelectionEntry'
+    PaginatedSelectionListList:
+      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/SelectionList'
+    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?
+        default_expiry:
+          type: integer
+          minimum: 0
+          description: Expiry time (in days) for stock items of this part
+        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
+        selectionlist:
+          type: integer
+          nullable: true
+          title: Selection List
+          description: Selection list for this parameter
+      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
+        note:
+          type: string
+          description: Note for this relationship
+          maxLength: 500
+      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
+        start_date:
+          type: string
+          format: date
+          nullable: true
+          title: Build start date
+          description: Scheduled start date for this build order
+        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
+        build_detail:
+          allOf:
+          - $ref: '#/components/schemas/Build'
+          readOnly: true
+          title: Build
+        location_detail:
+          allOf:
+          - $ref: '#/components/schemas/LocationBrief'
+          readOnly: true
+          title: Location
+        part_detail:
+          allOf:
+          - $ref: '#/components/schemas/PartBrief'
+          readOnly: true
+          title: Part
+        stock_item_detail:
+          allOf:
+          - $ref: '#/components/schemas/StockItemSerializerBrief'
+          readOnly: true
+          title: Stock Item
+        supplier_part_detail:
+          allOf:
+          - $ref: '#/components/schemas/SupplierPart'
+          readOnly: true
+          title: Supplier Part
+        bom_reference:
+          type: string
+          readOnly: true
+    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
+        quantity:
+          type: number
+          format: double
+        part:
+          type: integer
+          readOnly: true
+        build_reference:
+          type: string
+          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
+        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
+        external_stock:
+          type: number
+          format: double
+          readOnly: true
+        allocations:
+          type: array
+          items:
+            $ref: '#/components/schemas/BuildItem'
+          readOnly: true
+        bom_item_detail:
+          allOf:
+          - $ref: '#/components/schemas/BomItem'
+          readOnly: true
+          title: BOM Item
+        part_detail:
+          allOf:
+          - $ref: '#/components/schemas/PartBrief'
+          readOnly: true
+          title: Part
+    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
+          title: Value
+          description: Numerical 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
+          nullable: true
+        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
+          nullable: true
+        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
+          nullable: true
+        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
+        selectionlist:
+          type: integer
+          nullable: true
+          title: Selection List
+          description: Selection list for this parameter
+    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
+        note:
+          type: string
+          description: Note for this relationship
+          maxLength: 500
+    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
+          nullable: true
+        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
+        created_by:
+          allOf:
+          - $ref: '#/components/schemas/User'
+          readOnly: true
+        creation_date:
+          type: string
+          format: date
+          nullable: true
+        start_date:
+          type: string
+          format: date
+          nullable: true
+          description: Scheduled start date for this order
+        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'
+        destination:
+          type: integer
+          nullable: true
+          description: Destination for received items
+    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: Destination for received items
+        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
+        created_by:
+          allOf:
+          - $ref: '#/components/schemas/User'
+          readOnly: true
+        creation_date:
+          type: string
+          format: date
+          nullable: true
+        start_date:
+          type: string
+          format: date
+          nullable: true
+          description: Scheduled start date for this order
+        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
+        issue_date:
+          type: string
+          format: date
+          nullable: true
+          description: Date order was issued
+        complete_date:
+          type: string
+          format: date
+          nullable: true
+          title: Completion Date
+          description: Date order was completed
+        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
+        quantity:
+          type: number
+          format: double
+          description: Quantity to return
+        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
+        created_by:
+          allOf:
+          - $ref: '#/components/schemas/User'
+          readOnly: true
+        creation_date:
+          type: string
+          format: date
+          nullable: true
+        start_date:
+          type: string
+          format: date
+          nullable: true
+          description: Scheduled start date for this order
+        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'
+        shipments_count:
+          type: integer
+          readOnly: true
+          title: Shipments
+        completed_shipments_count:
+          type: integer
+          readOnly: true
+          title: Completed Shipments
+    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
+        item:
+          type: integer
+          description: Select stock item to allocate
+        quantity:
+          type: number
+          format: double
+        shipment:
+          type: integer
+          nullable: true
+          description: Sales order shipment reference
+        line:
+          type: integer
+          readOnly: true
+        part:
+          type: integer
+          readOnly: true
+        order:
+          type: integer
+          readOnly: true
+        serial:
+          type: string
+          readOnly: true
+        location:
+          type: integer
+          readOnly: true
+        item_detail:
+          allOf:
+          - $ref: '#/components/schemas/StockItemSerializerBrief'
+          readOnly: true
+        part_detail:
+          allOf:
+          - $ref: '#/components/schemas/PartBrief'
+          readOnly: true
+        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
+    PatchedSelectionEntry:
+      type: object
+      description: Serializer for a selection entry.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        value:
+          type: string
+          description: Value of the selection list entry
+          maxLength: 255
+        label:
+          type: string
+          description: Label for the selection list entry
+          maxLength: 255
+        description:
+          type: string
+          description: Description of the selection list entry
+          maxLength: 250
+        active:
+          type: boolean
+          description: Is this selection list entry active?
+        list:
+          type: integer
+          nullable: true
+          title: Selection List
+          description: Selection list to which this entry belongs
+    PatchedSelectionList:
+      type: object
+      description: Serializer for a selection list.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        name:
+          type: string
+          description: Name of the selection list
+          maxLength: 100
+        description:
+          type: string
+          description: Description of the selection list
+          maxLength: 250
+        active:
+          type: boolean
+          description: Can this selection list be used?
+        locked:
+          type: boolean
+          description: Is this selection list locked?
+        source_plugin:
+          type: integer
+          nullable: true
+          description: Plugin which provides the selection list
+        source_string:
+          type: string
+          description: Optional string identifying the source used for this list
+          maxLength: 1000
+        default:
+          allOf:
+          - $ref: '#/components/schemas/SelectionEntry'
+          readOnly: true
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          description: Date and time that the selection list was created
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          description: Date and time that the selection list was last updated
+        choices:
+          type: array
+          items:
+            $ref: '#/components/schemas/SelectionEntry'
+        entry_count:
+          type: integer
+          readOnly: true
+    PatchedStockItem:
+      type: object
+      description: |-
+        Serializer for a StockItem.
+
+        - Includes serialization for the linked part
+        - Includes serialization for the item location
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        part:
+          type: integer
+          description: Base Part
+        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
+        location:
+          type: integer
+          nullable: true
+          title: Stock Location
+          description: Where is this stock item located?
+        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
+        in_stock:
+          type: boolean
+          readOnly: true
+        is_building:
+          type: boolean
+        link:
+          type: string
+          format: uri
+          title: External Link
+          description: Link to external URL
+          maxLength: 200
+        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
+        purchase_order:
+          type: integer
+          nullable: true
+          title: Source Purchase Order
+          description: Purchase order for this stock item
+        purchase_order_reference:
+          type: string
+          readOnly: true
+        sales_order:
+          type: integer
+          nullable: true
+          title: Destination Sales Order
+        sales_order_reference:
+          type: string
+          readOnly: true
+        status:
+          allOf:
+          - $ref: '#/components/schemas/Status2a7Enum'
+          minimum: 0
+        status_text:
+          type: string
+          readOnly: true
+          title: Status
+        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'
+        supplier_part:
+          type: integer
+          nullable: true
+          description: Select a matching supplier part for this stock item
+        SKU:
+          type: string
+          readOnly: true
+          title: Supplier Part Number
+        MPN:
+          type: string
+          readOnly: true
+          title: Manufacturer Part Number
+        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
+        stocktake_date:
+          type: string
+          format: date
+          readOnly: true
+          nullable: true
+        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
+        part_detail:
+          allOf:
+          - $ref: '#/components/schemas/PartBrief'
+          readOnly: true
+          title: Part
+    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
+        on_order:
+          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_part:
+          type: integer
+          nullable: true
+          description: Select manufacturer part
+        MPN:
+          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
+        supplier_detail:
+          allOf:
+          - $ref: '#/components/schemas/CompanyBrief'
+          readOnly: true
+          title: Supplier
+        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
+          nullable: true
+        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
+    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
+          nullable: true
+        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:
+        plugin_name:
+          type: string
+        feature_type:
+          type: string
+        key:
+          type: string
+          title: Feature Label
+        title:
+          type: string
+          title: Feature Title
+        description:
+          type: string
+          title: Feature Description
+        icon:
+          type: string
+          title: Feature Icon
+        options:
+          type: object
+          additionalProperties: {}
+          title: Feature Options
+        context:
+          type: object
+          additionalProperties: {}
+          title: Feature Context
+        source:
+          type: string
+          title: Feature Source (javascript)
+      required:
+      - feature_type
+      - key
+      - plugin_name
+      - 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
+    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
+        created_by:
+          allOf:
+          - $ref: '#/components/schemas/User'
+          readOnly: true
+        creation_date:
+          type: string
+          format: date
+          nullable: true
+        start_date:
+          type: string
+          format: date
+          nullable: true
+          description: Scheduled start date for this order
+        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'
+        destination:
+          type: integer
+          nullable: true
+          description: Destination for received items
+      required:
+      - address_detail
+      - barcode_hash
+      - complete_date
+      - completed_lines
+      - contact_detail
+      - created_by
+      - 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: Destination for received items
+        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
+        expiry_date:
+          type: string
+          format: date
+          nullable: true
+          description: Enter expiry date 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
+    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
+      - LabelPrinterStatus
+      - MachineStatus
+      - PurchaseOrderStatus
+      - ReturnOrderLineStatus
+      - ReturnOrderStatus
+      - SalesOrderStatus
+      - StockHistoryCode
+      - StockStatus
+      type: string
+      description: |-
+        * `BuildStatus` - BuildStatus
+        * `DataImportStatusCode` - DataImportStatusCode
+        * `LabelPrinterStatus` - LabelPrinterStatus
+        * `MachineStatus` - MachineStatus
+        * `PurchaseOrderStatus` - PurchaseOrderStatus
+        * `ReturnOrderLineStatus` - ReturnOrderLineStatus
+        * `ReturnOrderStatus` - ReturnOrderStatus
+        * `SalesOrderStatus` - SalesOrderStatus
+        * `StockHistoryCode` - StockHistoryCode
+        * `StockStatus` - StockStatus
+    Register:
+      type: object
+      description: Registration requires email, password (twice) and username.
+      properties:
+        username:
+          type: string
+          maxLength: 150
+          minLength: 1
+        email:
+          type: string
+          format: email
+        password1:
+          type: string
+          writeOnly: true
+        password2:
+          type: string
+          writeOnly: true
+      required:
+      - email
+      - 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
+        template_detail:
+          allOf:
+          - $ref: '#/components/schemas/ReportTemplate'
+          readOnly: true
+      required:
+      - created
+      - model_type
+      - output
+      - pk
+      - template
+      - template_detail
+      - 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
+        created_by:
+          allOf:
+          - $ref: '#/components/schemas/User'
+          readOnly: true
+        creation_date:
+          type: string
+          format: date
+          nullable: true
+        start_date:
+          type: string
+          format: date
+          nullable: true
+          description: Scheduled start date for this order
+        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
+        issue_date:
+          type: string
+          format: date
+          nullable: true
+          description: Date order was issued
+        complete_date:
+          type: string
+          format: date
+          nullable: true
+          title: Completion Date
+          description: Date order was completed
+        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
+      - created_by
+      - 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
+        quantity:
+          type: number
+          format: double
+          description: Quantity to return
+        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
+      - quantity
+    ReturnOrderLineItemReceive:
+      type: object
+      description: Serializer for receiving a single line item against a ReturnOrder.
+      properties:
+        item:
+          type: integer
+          title: Return order line item
+        status:
+          description: |-
+            Stock item status code
+
+            * `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'
+      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
+        note:
+          type: string
+          default: ''
+          description: Additional note for incoming stock 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
+        status:
+          description: |-
+            Stock item status code
+
+            * `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'
+        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
+        created_by:
+          allOf:
+          - $ref: '#/components/schemas/User'
+          readOnly: true
+        creation_date:
+          type: string
+          format: date
+          nullable: true
+        start_date:
+          type: string
+          format: date
+          nullable: true
+          description: Scheduled start date for this order
+        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'
+        shipments_count:
+          type: integer
+          readOnly: true
+          title: Shipments
+        completed_shipments_count:
+          type: integer
+          readOnly: true
+          title: Completed Shipments
+      required:
+      - address_detail
+      - barcode_hash
+      - completed_lines
+      - completed_shipments_count
+      - contact_detail
+      - created_by
+      - line_items
+      - overdue
+      - pk
+      - project_code_detail
+      - project_code_label
+      - reference
+      - responsible_detail
+      - shipment_date
+      - shipments_count
+      - 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
+        item:
+          type: integer
+          description: Select stock item to allocate
+        quantity:
+          type: number
+          format: double
+        shipment:
+          type: integer
+          nullable: true
+          description: Sales order shipment reference
+        line:
+          type: integer
+          readOnly: true
+        part:
+          type: integer
+          readOnly: true
+        order:
+          type: integer
+          readOnly: true
+        serial:
+          type: string
+          readOnly: true
+        location:
+          type: integer
+          readOnly: true
+        shipment_detail:
+          allOf:
+          - $ref: '#/components/schemas/SalesOrderShipment'
+          readOnly: true
+      required:
+      - item
+      - line
+      - location
+      - order
+      - part
+      - pk
+      - quantity
+      - serial
+      - 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
+          nullable: true
+      required:
+      - line_item
+      - quantity
+      - serial_numbers
+    SalesOrderShipment:
+      type: object
+      description: Serializer for the SalesOrderShipment class.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        order:
+          type: integer
+          description: Sales Order
+        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
+      - 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
+          nullable: true
+      required:
+      - items
+    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
+    SelectionEntry:
+      type: object
+      description: Serializer for a selection entry.
+      properties:
+        id:
+          type: integer
+          readOnly: true
+        value:
+          type: string
+          description: Value of the selection list entry
+          maxLength: 255
+        label:
+          type: string
+          description: Label for the selection list entry
+          maxLength: 255
+        description:
+          type: string
+          description: Description of the selection list entry
+          maxLength: 250
+        active:
+          type: boolean
+          description: Is this selection list entry active?
+        list:
+          type: integer
+          nullable: true
+          title: Selection List
+          description: Selection list to which this entry belongs
+      required:
+      - id
+      - label
+      - list
+      - value
+    SelectionList:
+      type: object
+      description: Serializer for a selection list.
+      properties:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        name:
+          type: string
+          description: Name of the selection list
+          maxLength: 100
+        description:
+          type: string
+          description: Description of the selection list
+          maxLength: 250
+        active:
+          type: boolean
+          description: Can this selection list be used?
+        locked:
+          type: boolean
+          description: Is this selection list locked?
+        source_plugin:
+          type: integer
+          nullable: true
+          description: Plugin which provides the selection list
+        source_string:
+          type: string
+          description: Optional string identifying the source used for this list
+          maxLength: 1000
+        default:
+          allOf:
+          - $ref: '#/components/schemas/SelectionEntry'
+          readOnly: true
+        created:
+          type: string
+          format: date-time
+          readOnly: true
+          description: Date and time that the selection list was created
+        last_updated:
+          type: string
+          format: date-time
+          readOnly: true
+          description: Date and time that the selection list was last updated
+        choices:
+          type: array
+          items:
+            $ref: '#/components/schemas/SelectionEntry'
+        entry_count:
+          type: integer
+          readOnly: true
+      required:
+      - created
+      - default
+      - entry_count
+      - last_updated
+      - name
+      - pk
+    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 adjustment 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:
+        pk:
+          type: integer
+          readOnly: true
+          title: ID
+        part:
+          type: integer
+          description: Base Part
+        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
+        location:
+          type: integer
+          nullable: true
+          title: Stock Location
+          description: Where is this stock item located?
+        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
+        in_stock:
+          type: boolean
+          readOnly: true
+        is_building:
+          type: boolean
+        link:
+          type: string
+          format: uri
+          title: External Link
+          description: Link to external URL
+          maxLength: 200
+        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
+        purchase_order:
+          type: integer
+          nullable: true
+          title: Source Purchase Order
+          description: Purchase order for this stock item
+        purchase_order_reference:
+          type: string
+          readOnly: true
+        sales_order:
+          type: integer
+          nullable: true
+          title: Destination Sales Order
+        sales_order_reference:
+          type: string
+          readOnly: true
+        status:
+          allOf:
+          - $ref: '#/components/schemas/Status2a7Enum'
+          minimum: 0
+        status_text:
+          type: string
+          readOnly: true
+          title: Status
+        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'
+        supplier_part:
+          type: integer
+          nullable: true
+          description: Select a matching supplier part for this stock item
+        SKU:
+          type: string
+          readOnly: true
+          title: Supplier Part Number
+        MPN:
+          type: string
+          readOnly: true
+          title: Manufacturer Part Number
+        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
+        stocktake_date:
+          type: string
+          format: date
+          readOnly: true
+          nullable: true
+        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
+        supplier_part_detail:
+          allOf:
+          - $ref: '#/components/schemas/SupplierPart'
+          readOnly: true
+          title: Supplier Part
+        part_detail:
+          allOf:
+          - $ref: '#/components/schemas/PartBrief'
+          readOnly: true
+          title: Part
+        location_detail:
+          allOf:
+          - $ref: '#/components/schemas/LocationBrief'
+          readOnly: true
+          title: Location
+      required:
+      - MPN
+      - SKU
+      - allocated
+      - barcode_hash
+      - child_items
+      - expired
+      - in_stock
+      - installed_items
+      - location_detail
+      - parent
+      - part
+      - part_detail
+      - pk
+      - purchase_order_reference
+      - quantity
+      - sales_order_reference
+      - stale
+      - status_text
+      - stocktake_date
+      - supplier_part_detail
+      - 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_part:
+          type: integer
+          nullable: true
+          description: Select manufacturer part
+        MPN:
+          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
+      - 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
+    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
+          nullable: true
+        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
diff --git a/export/308/inventree_filters.yml b/export/308/inventree_filters.yml
new file mode 100644
index 0000000..3fad5c4
--- /dev/null
+++ b/export/308/inventree_filters.yml
@@ -0,0 +1,683 @@
+-   body: ''
+    library: ''
+    meta: {}
+    name: addslashes
+    title: 'Add slashes before quotes. Useful for escaping strings in CSV, for
+
+        example. Less useful for escaping JavaScript; use the ``escapejs``
+
+        filter instead.'
+-   body: ''
+    library: ''
+    meta: {}
+    name: capfirst
+    title: Capitalize the first character of the value.
+-   body: ''
+    library: ''
+    meta: {}
+    name: escapejs
+    title: Hex encode characters for use in JavaScript strings.
+-   body: ''
+    library: ''
+    meta: {}
+    name: json_script
+    title: 'Output value JSON-encoded, wrapped in a <script type="application/json">
+
+        tag (with an optional id).'
+-   body: 'If called without an argument, display the floating point number with one
+
+        decimal place -- but only if there''s a decimal place to be displayed:
+
+
+        * num1 = 34.23234
+
+        * num2 = 34.00000
+
+        * num3 = 34.26000
+
+        * {{ num1|floatformat }} displays "34.2"
+
+        * {{ num2|floatformat }} displays "34"
+
+        * {{ num3|floatformat }} displays "34.3"
+
+
+        If arg is positive, always display exactly arg number of decimal places:
+
+
+        * {{ num1|floatformat:3 }} displays "34.232"
+
+        * {{ num2|floatformat:3 }} displays "34.000"
+
+        * {{ num3|floatformat:3 }} displays "34.260"
+
+
+        If arg is negative, display arg number of decimal places -- but only if
+
+        there are places to be displayed:
+
+
+        * {{ num1|floatformat:"-3" }} displays "34.232"
+
+        * {{ num2|floatformat:"-3" }} displays "34"
+
+        * {{ num3|floatformat:"-3" }} displays "34.260"
+
+
+        If arg has the ''g'' suffix, force the result to be grouped by the
+
+        THOUSAND_SEPARATOR for the active locale. When the active locale is
+
+        en (English):
+
+
+        * {{ 6666.6666|floatformat:"2g" }} displays "6,666.67"
+
+        * {{ 10000|floatformat:"g" }} displays "10,000"
+
+
+        If arg has the ''u'' suffix, force the result to be unlocalized. When the
+
+        active locale is pl (Polish):
+
+
+        * {{ 66666.6666|floatformat:"2" }} displays "66666,67"
+
+        * {{ 66666.6666|floatformat:"2u" }} displays "66666.67"
+
+
+        If the input float is infinity or NaN, display the string representation
+
+        of that value.'
+    library: ''
+    meta: {}
+    name: floatformat
+    title: Display a float to a specified number of decimal places.
+-   body: ''
+    library: ''
+    meta: {}
+    name: iriencode
+    title: Escape an IRI value for use in a URL.
+-   body: ''
+    library: ''
+    meta: {}
+    name: linenumbers
+    title: Display text with line numbers.
+-   body: ''
+    library: ''
+    meta: {}
+    name: lower
+    title: Convert a string into all lowercase.
+-   body: 'For an integer, it''s a list of digits.
+
+        For a string, it''s a list of characters.'
+    library: ''
+    meta: {}
+    name: make_list
+    title: Return the value turned into a list.
+-   body: ''
+    library: ''
+    meta: {}
+    name: slugify
+    title: 'Convert to ASCII. Convert spaces to hyphens. Remove characters that aren''t
+
+        alphanumerics, underscores, or hyphens. Convert to lowercase. Also strip
+
+        leading and trailing whitespace.'
+-   body: 'This specifier uses Python string formatting syntax, with the exception
+
+        that the leading "%" is dropped.
+
+
+        See https://docs.python.org/library/stdtypes.html#printf-style-string-formatting
+
+        for documentation of Python string formatting.'
+    library: ''
+    meta: {}
+    name: stringformat
+    title: Format the variable according to the arg, a string formatting specifier.
+-   body: ''
+    library: ''
+    meta: {}
+    name: title
+    title: Convert a string into titlecase.
+-   body: ''
+    library: ''
+    meta: {}
+    name: truncatechars
+    title: Truncate a string after `arg` number of characters.
+-   body: ''
+    library: ''
+    meta: {}
+    name: truncatechars_html
+    title: 'Truncate HTML after `arg` number of chars.
+
+        Preserve newlines in the HTML.'
+-   body: ''
+    library: ''
+    meta: {}
+    name: truncatewords
+    title: 'Truncate a string after `arg` number of words.
+
+        Remove newlines within the string.'
+-   body: ''
+    library: ''
+    meta: {}
+    name: truncatewords_html
+    title: 'Truncate HTML after `arg` number of words.
+
+        Preserve newlines in the HTML.'
+-   body: ''
+    library: ''
+    meta: {}
+    name: upper
+    title: Convert a string into all uppercase.
+-   body: 'The ``safe`` parameter determines the characters which should not be
+
+        escaped by Python''s quote() function. If not provided, use the default safe
+
+        characters (but an empty string can be provided when *all* characters
+
+        should be escaped).'
+    library: ''
+    meta: {}
+    name: urlencode
+    title: Escape a value for use in a URL.
+-   body: ''
+    library: ''
+    meta: {}
+    name: urlize
+    title: Convert URLs in plain text into clickable links.
+-   body: ''
+    library: ''
+    meta:
+        Argument: Length to truncate URLs to.
+    name: urlizetrunc
+    title: 'Convert URLs into clickable links, truncating URLs to the given character
+
+        limit, and adding ''rel=nofollow'' attribute to discourage spamming.'
+-   body: ''
+    library: ''
+    meta: {}
+    name: wordcount
+    title: Return the number of words.
+-   body: ''
+    library: ''
+    meta: {}
+    name: wordwrap
+    title: Wrap words at `arg` line length.
+-   body: ''
+    library: ''
+    meta: {}
+    name: ljust
+    title: Left-align the value in a field of a given width.
+-   body: ''
+    library: ''
+    meta: {}
+    name: rjust
+    title: Right-align the value in a field of a given width.
+-   body: ''
+    library: ''
+    meta: {}
+    name: center
+    title: Center the value in a field of a given width.
+-   body: ''
+    library: ''
+    meta: {}
+    name: cut
+    title: Remove all values of arg from the given string.
+-   body: ''
+    library: ''
+    meta: {}
+    name: escape
+    title: Mark the value as a string that should be auto-escaped.
+-   body: ''
+    library: ''
+    meta: {}
+    name: force_escape
+    title: 'Escape a string''s HTML. Return a new string containing the escaped
+
+        characters (as opposed to "escape", which marks the content for later
+
+        possible escaping).'
+-   body: ''
+    library: ''
+    meta: {}
+    name: linebreaks
+    title: 'Replace line breaks in plain text with appropriate HTML; a single
+
+        newline becomes an HTML line break (``<br>``) and a new line
+
+        followed by a blank line becomes a paragraph break (``</p>``).'
+-   body: ''
+    library: ''
+    meta: {}
+    name: linebreaksbr
+    title: 'Convert all newlines in a piece of plain text to HTML line breaks
+
+        (``<br>``).'
+-   body: ''
+    library: ''
+    meta: {}
+    name: safe
+    title: Mark the value as a string that should not be auto-escaped.
+-   body: ''
+    library: ''
+    meta: {}
+    name: safeseq
+    title: 'A "safe" filter for sequences. Mark each element in the sequence,
+
+        individually, as safe, after converting them to strings. Return a list
+
+        with the results.'
+-   body: ''
+    library: ''
+    meta: {}
+    name: striptags
+    title: Strip all [X]HTML tags.
+-   body: ''
+    library: ''
+    meta: {}
+    name: dictsort
+    title: 'Given a list of dicts, return that list sorted by the property given in
+
+        the argument.'
+-   body: ''
+    library: ''
+    meta: {}
+    name: dictsortreversed
+    title: 'Given a list of dicts, return that list sorted in reverse order by the
+
+        property given in the argument.'
+-   body: ''
+    library: ''
+    meta: {}
+    name: first
+    title: Return the first item in a list.
+-   body: ''
+    library: ''
+    meta: {}
+    name: join
+    title: Join a list with a string, like Python's ``str.join(list)``.
+-   body: ''
+    library: ''
+    meta: {}
+    name: last
+    title: Return the last item in a list.
+-   body: ''
+    library: ''
+    meta: {}
+    name: length
+    title: Return the length of the value - useful for lists.
+-   body: ''
+    library: ''
+    meta: {}
+    name: length_is
+    title: Return a boolean of whether the value's length is the argument.
+-   body: ''
+    library: ''
+    meta: {}
+    name: random
+    title: Return a random item from the list.
+-   body: ''
+    library: ''
+    meta: {}
+    name: slice
+    title: Return a slice of the list using the same syntax as Python's list slicing.
+-   body: "Assume the list is in the proper format. For example, if ``var`` contains:\n\
+        ``['States', ['Kansas', ['Lawrence', 'Topeka'], 'Illinois']]``, then\n``{{\
+        \ var|unordered_list }}`` returns::\n\n    <li>States\n    <ul>\n        \
+        \    <li>Kansas\n            <ul>\n                    <li>Lawrence</li>\n\
+        \                    <li>Topeka</li>\n            </ul>\n            </li>\n\
+        \            <li>Illinois</li>\n    </ul>\n    </li>"
+    library: ''
+    meta: {}
+    name: unordered_list
+    title: 'Recursively take a self-nested list and return an HTML unordered list
+        --
+
+        WITHOUT opening and closing <ul> tags.'
+-   body: ''
+    library: ''
+    meta: {}
+    name: add
+    title: Add the arg to the value.
+-   body: ''
+    library: ''
+    meta: {}
+    name: get_digit
+    title: 'Given a whole number, return the requested digit of it, where 1 is the
+
+        right-most digit, 2 is the second-right-most digit, etc. Return the
+
+        original value for invalid input (if input or argument is not an integer,
+
+        or if argument is less than 1). Otherwise, output is always an integer.'
+-   body: ''
+    library: ''
+    meta: {}
+    name: date
+    title: Format a date according to the given format.
+-   body: ''
+    library: ''
+    meta: {}
+    name: time
+    title: Format a time according to the given format.
+-   body: ''
+    library: ''
+    meta: {}
+    name: timesince
+    title: Format a date as the time since that date (i.e. "4 days, 6 hours").
+-   body: ''
+    library: ''
+    meta: {}
+    name: timeuntil
+    title: Format a date as the time until that date (i.e. "4 days, 6 hours").
+-   body: ''
+    library: ''
+    meta: {}
+    name: default
+    title: If value is unavailable, use given default.
+-   body: ''
+    library: ''
+    meta: {}
+    name: default_if_none
+    title: If value is None, use given default.
+-   body: ''
+    library: ''
+    meta: {}
+    name: divisibleby
+    title: Return True if the value is divisible by the argument.
+-   body: "==========  ======================  ==================================\n\
+        Value       Argument                Outputs\n==========  ======================\
+        \  ==================================\n``True``    ``\"yeah,no,maybe\"`` \
+        \    ``yeah``\n``False``   ``\"yeah,no,maybe\"``     ``no``\n``None``    ``\"\
+        yeah,no,maybe\"``     ``maybe``\n``None``    ``\"yeah,no\"``           ``\"\
+        no\"`` (converts None to False\n                                    if no\
+        \ mapping for None is given.\n==========  ======================  =================================="
+    library: ''
+    meta: {}
+    name: yesno
+    title: 'Given a string mapping values for true, false, and (optionally) None,
+
+        return one of those strings according to the value:'
+-   body: ''
+    library: ''
+    meta: {}
+    name: filesizeformat
+    title: 'Format the value like a ''human-readable'' file size (i.e. 13 KB, 4.1
+        MB,
+
+        102 bytes, etc.).'
+-   body: '* If value is 0, vote{{ value|pluralize }} display "votes".
+
+        * If value is 1, vote{{ value|pluralize }} display "vote".
+
+        * If value is 2, vote{{ value|pluralize }} display "votes".
+
+
+        If an argument is provided, use that string instead:
+
+
+        * If value is 0, class{{ value|pluralize:"es" }} display "classes".
+
+        * If value is 1, class{{ value|pluralize:"es" }} display "class".
+
+        * If value is 2, class{{ value|pluralize:"es" }} display "classes".
+
+
+        If the provided argument contains a comma, use the text before the comma
+
+        for the singular case and the text after the comma for the plural case:
+
+
+        * If value is 0, cand{{ value|pluralize:"y,ies" }} display "candies".
+
+        * If value is 1, cand{{ value|pluralize:"y,ies" }} display "candy".
+
+        * If value is 2, cand{{ value|pluralize:"y,ies" }} display "candies".'
+    library: ''
+    meta: {}
+    name: pluralize
+    title: 'Return a plural suffix if the value is not 1, ''1'', or an object of
+
+        length 1. By default, use ''s'' as the suffix:'
+-   body: ''
+    library: ''
+    meta: {}
+    name: phone2numeric
+    title: Take a phone number and converts it in to its numerical equivalent.
+-   body: ''
+    library: ''
+    meta: {}
+    name: pprint
+    title: A wrapper around pprint.pprint -- for debugging, really.
+-   body: ''
+    library: admin_modify
+    meta: {}
+    name: cell_count
+    title: Return the number of cells used in a tabular inline.
+-   body: ''
+    library: admin_urls
+    meta: {}
+    name: admin_urlname
+    title: ''
+-   body: ''
+    library: admin_urls
+    meta: {}
+    name: admin_urlquote
+    title: ''
+-   body: ''
+    library: flags_debug
+    meta: {}
+    name: bool_enabled
+    title: ''
+-   body: ''
+    library: flags_debug
+    meta: {}
+    name: conditions_without_bool
+    title: ''
+-   body: ''
+    library: flags_debug
+    meta: {}
+    name: required_conditions_without_bool
+    title: ''
+-   body: ''
+    library: flags_debug
+    meta: {}
+    name: state_str
+    title: Construct a string that describes the current state of the flag
+-   body: ''
+    library: i18n
+    meta: {}
+    name: language_name
+    title: ''
+-   body: ''
+    library: i18n
+    meta: {}
+    name: language_name_translated
+    title: ''
+-   body: ''
+    library: i18n
+    meta: {}
+    name: language_name_local
+    title: ''
+-   body: ''
+    library: i18n
+    meta: {}
+    name: language_bidi
+    title: ''
+-   body: ''
+    library: inventree_extras
+    meta:
+        Usage: ''
+    name: keyvalue
+    title: Access to key of supplied dict.
+-   body: ''
+    library: l10n
+    meta: {}
+    name: localize
+    title: 'Force a value to be rendered as a localized value,
+
+        regardless of the value of ``settings.USE_L10N``.'
+-   body: ''
+    library: l10n
+    meta: {}
+    name: unlocalize
+    title: 'Force a value to be rendered as a non-localized value,
+
+        regardless of the value of ``settings.USE_L10N``.'
+-   body: ''
+    library: markdownify
+    meta: {}
+    name: markdownify
+    title: ''
+-   body: "   new_level\n      ``True`` if the current item is the start of a new\
+        \ level in\n      the tree, ``False`` otherwise.\n\n   closed_levels\n   \
+        \   A list of levels which end after the current item. This will\n      be\
+        \ an empty list if the next item is at the same level as the\n      current\
+        \ item.\n\nUsing this filter with unpacking in a ``{% for %}`` tag, you should\n\
+        have enough information about the tree structure to create a\nhierarchical\
+        \ representation of the tree.\n\nExample::\n\n   {% for genre,structure in\
+        \ genres|tree_info %}\n   {% if structure.new_level %}<ul><li>{% else %}</li><li>{%\
+        \ endif %}\n   {{ genre.name }}\n   {% for level in structure.closed_levels\
+        \ %}</li></ul>{% endfor %}\n   {% endfor %}"
+    library: mptt_tags
+    meta: {}
+    name: tree_info
+    title: 'Given a list of tree items, produces doubles of a tree item and a
+
+        ``dict`` containing information about the tree structure around the
+
+        item, with the following contents:'
+-   body: "Each path item will be coerced to unicode, so a list of model\ninstances\
+        \ may be given if required.\n\nExample::\n\n   {{ some_list|tree_path }}\n\
+        \   {{ some_node.get_ancestors|tree_path:\" > \" }}"
+    library: mptt_tags
+    meta: {}
+    name: tree_path
+    title: 'Creates a tree path represented by a list of ``items`` by joining
+
+        the items with a ``separator``.'
+-   body: ''
+    library: mptt_tags
+    meta: {}
+    name: cache_tree_children
+    title: Alias to `mptt.utils.get_cached_trees`.
+-   body: ''
+    library: rest_framework
+    meta: {}
+    name: with_location
+    title: ''
+-   body: ''
+    library: rest_framework
+    meta: {}
+    name: as_string
+    title: ''
+-   body: ''
+    library: rest_framework
+    meta: {}
+    name: as_list_of_strings
+    title: ''
+-   body: "Inserts classes into template variables that contain HTML tags,\nuseful\
+        \ for modifying forms without needing to change the Form objects.\n\nUsage:\n\
+        \n    {{ field.label_tag|add_class:\"control-label\" }}\n\nIn the case of\
+        \ REST Framework, the filter is used to add Bootstrap-specific\nclasses to\
+        \ the forms."
+    library: rest_framework
+    meta: {}
+    name: add_class
+    title: https://stackoverflow.com/questions/4124220/django-adding-css-classes-when-rendering-form-fields-in-a-template
+-   body: ''
+    library: rest_framework
+    meta: {}
+    name: format_value
+    title: ''
+-   body: ''
+    library: rest_framework
+    meta: {}
+    name: items
+    title: 'Simple filter to return the items of the dict. Useful when the dict may
+
+        have a key ''items'' which is resolved first in Django template dot-notation
+
+        lookup.  See issue #4931
+
+        Also see: https://stackoverflow.com/questions/15416662/django-template-loop-over-dictionary-items-with-items-as-key'
+-   body: 'As per `items` filter above, allows accessing `document.data` when
+
+        Document contains Link keyed-at "data".
+
+
+        See issue #5395'
+    library: rest_framework
+    meta: {}
+    name: data
+    title: 'Simple filter to access `data` attribute of object,
+
+        specifically coreapi.Document.'
+-   body: ''
+    library: rest_framework
+    meta: {}
+    name: schema_links
+    title: Recursively find every link in a schema, even nested.
+-   body: ''
+    library: rest_framework
+    meta: {}
+    name: add_nested_class
+    title: ''
+-   body: ''
+    library: rest_framework
+    meta: {}
+    name: break_long_headers
+    title: 'Breaks headers longer than 160 characters (~page length)
+
+        when possible (are comma separated)'
+-   body: This only makes sense within a {% localtime off %} block.
+    library: tz
+    meta: {}
+    name: localtime
+    title: Convert a datetime to local time in the active time zone.
+-   body: ''
+    library: tz
+    meta: {}
+    name: utc
+    title: Convert a datetime to UTC.
+-   body: 'The argument must be an instance of a tzinfo subclass or a time zone name.
+
+
+        Naive datetimes are assumed to be in local time in the default time zone.'
+    library: tz
+    meta: {}
+    name: timezone
+    title: Convert a datetime to local time in a given time zone.
+-   body: 'Example output:
+
+
+        * Safari on iPhone
+
+        * Chrome on Windows 8.1
+
+        * Safari on macOS
+
+        * Firefox
+
+        * Linux
+
+        * None'
+    library: user_sessions
+    meta: {}
+    name: device
+    title: Transform a User Agent into human readable text.
+-   body: 'Example output:
+
+
+        * Zwolle, The Netherlands
+
+        * The Netherlands
+
+        * None'
+    library: user_sessions
+    meta: {}
+    name: location
+    title: Transform an IP address into an approximate location.
diff --git a/export/308/inventree_settings.json b/export/308/inventree_settings.json
new file mode 100644
index 0000000..7f73284
--- /dev/null
+++ b/export/308/inventree_settings.json
@@ -0,0 +1,990 @@
+{
+    "global": {
+        "SERVER_RESTART_REQUIRED": {
+            "name": "Restart required",
+            "description": "A setting has been changed which requires a server restart",
+            "default": "False",
+            "units": ""
+        },
+        "_PENDING_MIGRATIONS": {
+            "name": "Pending migrations",
+            "description": "Number of pending database migrations",
+            "default": "0",
+            "units": ""
+        },
+        "INVENTREE_INSTANCE": {
+            "name": "Server Instance Name",
+            "description": "String descriptor for the server instance",
+            "default": "InvenTree",
+            "units": ""
+        },
+        "INVENTREE_INSTANCE_TITLE": {
+            "name": "Use instance name",
+            "description": "Use the instance name in the title-bar",
+            "default": "False",
+            "units": ""
+        },
+        "INVENTREE_RESTRICT_ABOUT": {
+            "name": "Restrict showing `about`",
+            "description": "Show the `about` modal only to superusers",
+            "default": "False",
+            "units": ""
+        },
+        "INVENTREE_COMPANY_NAME": {
+            "name": "Company name",
+            "description": "Internal company name",
+            "default": "My company name",
+            "units": ""
+        },
+        "INVENTREE_BASE_URL": {
+            "name": "Base URL",
+            "description": "Base URL for server instance",
+            "default": "",
+            "units": ""
+        },
+        "INVENTREE_DEFAULT_CURRENCY": {
+            "name": "Default Currency",
+            "description": "Select base currency for pricing calculations",
+            "default": "USD",
+            "units": ""
+        },
+        "CURRENCY_CODES": {
+            "name": "Supported Currencies",
+            "description": "List of supported currency codes",
+            "default": "AUD,CAD,CNY,EUR,GBP,JPY,NZD,USD",
+            "units": ""
+        },
+        "CURRENCY_UPDATE_INTERVAL": {
+            "name": "Currency Update Interval",
+            "description": "How often to update exchange rates (set to zero to disable)",
+            "default": "1",
+            "units": "days"
+        },
+        "CURRENCY_UPDATE_PLUGIN": {
+            "name": "Currency Update Plugin",
+            "description": "Currency update plugin to use",
+            "default": "inventreecurrencyexchange",
+            "units": ""
+        },
+        "INVENTREE_DOWNLOAD_FROM_URL": {
+            "name": "Download from URL",
+            "description": "Allow download of remote images and files from external URL",
+            "default": "False",
+            "units": ""
+        },
+        "INVENTREE_DOWNLOAD_IMAGE_MAX_SIZE": {
+            "name": "Download Size Limit",
+            "description": "Maximum allowable download size for remote image",
+            "default": "1",
+            "units": "MB"
+        },
+        "INVENTREE_DOWNLOAD_FROM_URL_USER_AGENT": {
+            "name": "User-agent used to download from URL",
+            "description": "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)",
+            "default": "",
+            "units": ""
+        },
+        "INVENTREE_STRICT_URLS": {
+            "name": "Strict URL Validation",
+            "description": "Require schema specification when validating URLs",
+            "default": "True",
+            "units": ""
+        },
+        "INVENTREE_UPDATE_CHECK_INTERVAL": {
+            "name": "Update Check Interval",
+            "description": "How often to check for updates (set to zero to disable)",
+            "default": "7",
+            "units": "days"
+        },
+        "INVENTREE_BACKUP_ENABLE": {
+            "name": "Automatic Backup",
+            "description": "Enable automatic backup of database and media files",
+            "default": "False",
+            "units": ""
+        },
+        "INVENTREE_BACKUP_DAYS": {
+            "name": "Auto Backup Interval",
+            "description": "Specify number of days between automated backup events",
+            "default": "1",
+            "units": "days"
+        },
+        "INVENTREE_DELETE_TASKS_DAYS": {
+            "name": "Task Deletion Interval",
+            "description": "Background task results will be deleted after specified number of days",
+            "default": "30",
+            "units": "days"
+        },
+        "INVENTREE_DELETE_ERRORS_DAYS": {
+            "name": "Error Log Deletion Interval",
+            "description": "Error logs will be deleted after specified number of days",
+            "default": "30",
+            "units": "days"
+        },
+        "INVENTREE_DELETE_NOTIFICATIONS_DAYS": {
+            "name": "Notification Deletion Interval",
+            "description": "User notifications will be deleted after specified number of days",
+            "default": "30",
+            "units": "days"
+        },
+        "BARCODE_ENABLE": {
+            "name": "Barcode Support",
+            "description": "Enable barcode scanner support in the web interface",
+            "default": "True",
+            "units": ""
+        },
+        "BARCODE_STORE_RESULTS": {
+            "name": "Store Barcode Results",
+            "description": "Store barcode scan results in the database",
+            "default": "False",
+            "units": ""
+        },
+        "BARCODE_RESULTS_MAX_NUM": {
+            "name": "Barcode Scans Maximum Count",
+            "description": "Maximum number of barcode scan results to store",
+            "default": "100",
+            "units": ""
+        },
+        "BARCODE_INPUT_DELAY": {
+            "name": "Barcode Input Delay",
+            "description": "Barcode input processing delay time",
+            "default": "50",
+            "units": "ms"
+        },
+        "BARCODE_WEBCAM_SUPPORT": {
+            "name": "Barcode Webcam Support",
+            "description": "Allow barcode scanning via webcam in browser",
+            "default": "True",
+            "units": ""
+        },
+        "BARCODE_SHOW_TEXT": {
+            "name": "Barcode Show Data",
+            "description": "Display barcode data in browser as text",
+            "default": "False",
+            "units": ""
+        },
+        "BARCODE_GENERATION_PLUGIN": {
+            "name": "Barcode Generation Plugin",
+            "description": "Plugin to use for internal barcode data generation",
+            "default": "inventreebarcode",
+            "units": ""
+        },
+        "PART_ENABLE_REVISION": {
+            "name": "Part Revisions",
+            "description": "Enable revision field for Part",
+            "default": "True",
+            "units": ""
+        },
+        "PART_REVISION_ASSEMBLY_ONLY": {
+            "name": "Assembly Revision Only",
+            "description": "Only allow revisions for assembly parts",
+            "default": "False",
+            "units": ""
+        },
+        "PART_ALLOW_DELETE_FROM_ASSEMBLY": {
+            "name": "Allow Deletion from Assembly",
+            "description": "Allow deletion of parts which are used in an assembly",
+            "default": "False",
+            "units": ""
+        },
+        "PART_IPN_REGEX": {
+            "name": "IPN Regex",
+            "description": "Regular expression pattern for matching Part IPN",
+            "default": "",
+            "units": ""
+        },
+        "PART_ALLOW_DUPLICATE_IPN": {
+            "name": "Allow Duplicate IPN",
+            "description": "Allow multiple parts to share the same IPN",
+            "default": "True",
+            "units": ""
+        },
+        "PART_ALLOW_EDIT_IPN": {
+            "name": "Allow Editing IPN",
+            "description": "Allow changing the IPN value while editing a part",
+            "default": "True",
+            "units": ""
+        },
+        "PART_COPY_BOM": {
+            "name": "Copy Part BOM Data",
+            "description": "Copy BOM data by default when duplicating a part",
+            "default": "True",
+            "units": ""
+        },
+        "PART_COPY_PARAMETERS": {
+            "name": "Copy Part Parameter Data",
+            "description": "Copy parameter data by default when duplicating a part",
+            "default": "True",
+            "units": ""
+        },
+        "PART_COPY_TESTS": {
+            "name": "Copy Part Test Data",
+            "description": "Copy test data by default when duplicating a part",
+            "default": "True",
+            "units": ""
+        },
+        "PART_CATEGORY_PARAMETERS": {
+            "name": "Copy Category Parameter Templates",
+            "description": "Copy category parameter templates when creating a part",
+            "default": "True",
+            "units": ""
+        },
+        "PART_TEMPLATE": {
+            "name": "Template",
+            "description": "Parts are templates by default",
+            "default": "False",
+            "units": ""
+        },
+        "PART_ASSEMBLY": {
+            "name": "Assembly",
+            "description": "Parts can be assembled from other components by default",
+            "default": "False",
+            "units": ""
+        },
+        "PART_COMPONENT": {
+            "name": "Component",
+            "description": "Parts can be used as sub-components by default",
+            "default": "True",
+            "units": ""
+        },
+        "PART_PURCHASEABLE": {
+            "name": "Purchaseable",
+            "description": "Parts are purchaseable by default",
+            "default": "True",
+            "units": ""
+        },
+        "PART_SALABLE": {
+            "name": "Salable",
+            "description": "Parts are salable by default",
+            "default": "False",
+            "units": ""
+        },
+        "PART_TRACKABLE": {
+            "name": "Trackable",
+            "description": "Parts are trackable by default",
+            "default": "False",
+            "units": ""
+        },
+        "PART_VIRTUAL": {
+            "name": "Virtual",
+            "description": "Parts are virtual by default",
+            "default": "False",
+            "units": ""
+        },
+        "PART_SHOW_IMPORT": {
+            "name": "Show Import in Views",
+            "description": "Display the import wizard in some part views",
+            "default": "False",
+            "units": ""
+        },
+        "PART_SHOW_RELATED": {
+            "name": "Show related parts",
+            "description": "Display related parts for a part",
+            "default": "True",
+            "units": ""
+        },
+        "PART_CREATE_INITIAL": {
+            "name": "Initial Stock Data",
+            "description": "Allow creation of initial stock when adding a new part",
+            "default": "False",
+            "units": ""
+        },
+        "PART_CREATE_SUPPLIER": {
+            "name": "Initial Supplier Data",
+            "description": "Allow creation of initial supplier data when adding a new part",
+            "default": "True",
+            "units": ""
+        },
+        "PART_NAME_FORMAT": {
+            "name": "Part Name Display Format",
+            "description": "Format to display the part name",
+            "default": "{{ part.IPN if part.IPN }}{{ ' | ' if part.IPN }}{{ part.name }}{{ ' | ' if part.revision }}{{ part.revision if part.revision }}",
+            "units": ""
+        },
+        "PART_CATEGORY_DEFAULT_ICON": {
+            "name": "Part Category Default Icon",
+            "description": "Part category default icon (empty means no icon)",
+            "default": "",
+            "units": ""
+        },
+        "PART_PARAMETER_ENFORCE_UNITS": {
+            "name": "Enforce Parameter Units",
+            "description": "If units are provided, parameter values must match the specified units",
+            "default": "True",
+            "units": ""
+        },
+        "PRICING_DECIMAL_PLACES_MIN": {
+            "name": "Minimum Pricing Decimal Places",
+            "description": "Minimum number of decimal places to display when rendering pricing data",
+            "default": "0",
+            "units": ""
+        },
+        "PRICING_DECIMAL_PLACES": {
+            "name": "Maximum Pricing Decimal Places",
+            "description": "Maximum number of decimal places to display when rendering pricing data",
+            "default": "6",
+            "units": ""
+        },
+        "PRICING_USE_SUPPLIER_PRICING": {
+            "name": "Use Supplier Pricing",
+            "description": "Include supplier price breaks in overall pricing calculations",
+            "default": "True",
+            "units": ""
+        },
+        "PRICING_PURCHASE_HISTORY_OVERRIDES_SUPPLIER": {
+            "name": "Purchase History Override",
+            "description": "Historical purchase order pricing overrides supplier price breaks",
+            "default": "False",
+            "units": ""
+        },
+        "PRICING_USE_STOCK_PRICING": {
+            "name": "Use Stock Item Pricing",
+            "description": "Use pricing from manually entered stock data for pricing calculations",
+            "default": "True",
+            "units": ""
+        },
+        "PRICING_STOCK_ITEM_AGE_DAYS": {
+            "name": "Stock Item Pricing Age",
+            "description": "Exclude stock items older than this number of days from pricing calculations",
+            "default": "0",
+            "units": "days"
+        },
+        "PRICING_USE_VARIANT_PRICING": {
+            "name": "Use Variant Pricing",
+            "description": "Include variant pricing in overall pricing calculations",
+            "default": "True",
+            "units": ""
+        },
+        "PRICING_ACTIVE_VARIANTS": {
+            "name": "Active Variants Only",
+            "description": "Only use active variant parts for calculating variant pricing",
+            "default": "False",
+            "units": ""
+        },
+        "PRICING_UPDATE_DAYS": {
+            "name": "Pricing Rebuild Interval",
+            "description": "Number of days before part pricing is automatically updated",
+            "default": "30",
+            "units": "days"
+        },
+        "PART_INTERNAL_PRICE": {
+            "name": "Internal Prices",
+            "description": "Enable internal prices for parts",
+            "default": "False",
+            "units": ""
+        },
+        "PART_BOM_USE_INTERNAL_PRICE": {
+            "name": "Internal Price Override",
+            "description": "If available, internal prices override price range calculations",
+            "default": "False",
+            "units": ""
+        },
+        "LABEL_ENABLE": {
+            "name": "Enable label printing",
+            "description": "Enable label printing from the web interface",
+            "default": "True",
+            "units": ""
+        },
+        "LABEL_DPI": {
+            "name": "Label Image DPI",
+            "description": "DPI resolution when generating image files to supply to label printing plugins",
+            "default": "300",
+            "units": ""
+        },
+        "REPORT_ENABLE": {
+            "name": "Enable Reports",
+            "description": "Enable generation of reports",
+            "default": "False",
+            "units": ""
+        },
+        "REPORT_DEBUG_MODE": {
+            "name": "Debug Mode",
+            "description": "Generate reports in debug mode (HTML output)",
+            "default": "False",
+            "units": ""
+        },
+        "REPORT_LOG_ERRORS": {
+            "name": "Log Report Errors",
+            "description": "Log errors which occur when generating reports",
+            "default": "False",
+            "units": ""
+        },
+        "REPORT_DEFAULT_PAGE_SIZE": {
+            "name": "Page Size",
+            "description": "Default page size for PDF reports",
+            "default": "A4",
+            "units": ""
+        },
+        "SERIAL_NUMBER_GLOBALLY_UNIQUE": {
+            "name": "Globally Unique Serials",
+            "description": "Serial numbers for stock items must be globally unique",
+            "default": "False",
+            "units": ""
+        },
+        "SERIAL_NUMBER_AUTOFILL": {
+            "name": "Autofill Serial Numbers",
+            "description": "Autofill serial numbers in forms",
+            "default": "False",
+            "units": ""
+        },
+        "STOCK_DELETE_DEPLETED_DEFAULT": {
+            "name": "Delete Depleted Stock",
+            "description": "Determines default behavior when a stock item is depleted",
+            "default": "True",
+            "units": ""
+        },
+        "STOCK_BATCH_CODE_TEMPLATE": {
+            "name": "Batch Code Template",
+            "description": "Template for generating default batch codes for stock items",
+            "default": "",
+            "units": ""
+        },
+        "STOCK_ENABLE_EXPIRY": {
+            "name": "Stock Expiry",
+            "description": "Enable stock expiry functionality",
+            "default": "False",
+            "units": ""
+        },
+        "STOCK_ALLOW_EXPIRED_SALE": {
+            "name": "Sell Expired Stock",
+            "description": "Allow sale of expired stock",
+            "default": "False",
+            "units": ""
+        },
+        "STOCK_STALE_DAYS": {
+            "name": "Stock Stale Time",
+            "description": "Number of days stock items are considered stale before expiring",
+            "default": "0",
+            "units": "days"
+        },
+        "STOCK_ALLOW_EXPIRED_BUILD": {
+            "name": "Build Expired Stock",
+            "description": "Allow building with expired stock",
+            "default": "False",
+            "units": ""
+        },
+        "STOCK_OWNERSHIP_CONTROL": {
+            "name": "Stock Ownership Control",
+            "description": "Enable ownership control over stock locations and items",
+            "default": "False",
+            "units": ""
+        },
+        "STOCK_LOCATION_DEFAULT_ICON": {
+            "name": "Stock Location Default Icon",
+            "description": "Stock location default icon (empty means no icon)",
+            "default": "",
+            "units": ""
+        },
+        "STOCK_SHOW_INSTALLED_ITEMS": {
+            "name": "Show Installed Stock Items",
+            "description": "Display installed stock items in stock tables",
+            "default": "False",
+            "units": ""
+        },
+        "STOCK_ENFORCE_BOM_INSTALLATION": {
+            "name": "Check BOM when installing items",
+            "description": "Installed stock items must exist in the BOM for the parent part",
+            "default": "True",
+            "units": ""
+        },
+        "STOCK_ALLOW_OUT_OF_STOCK_TRANSFER": {
+            "name": "Allow Out of Stock Transfer",
+            "description": "Allow stock items which are not in stock to be transferred between stock locations",
+            "default": "False",
+            "units": ""
+        },
+        "BUILDORDER_REFERENCE_PATTERN": {
+            "name": "Build Order Reference Pattern",
+            "description": "Required pattern for generating Build Order reference field",
+            "default": "BO-{ref:04d}",
+            "units": ""
+        },
+        "BUILDORDER_REQUIRE_RESPONSIBLE": {
+            "name": "Require Responsible Owner",
+            "description": "A responsible owner must be assigned to each order",
+            "default": "False",
+            "units": ""
+        },
+        "BUILDORDER_REQUIRE_ACTIVE_PART": {
+            "name": "Require Active Part",
+            "description": "Prevent build order creation for inactive parts",
+            "default": "False",
+            "units": ""
+        },
+        "BUILDORDER_REQUIRE_LOCKED_PART": {
+            "name": "Require Locked Part",
+            "description": "Prevent build order creation for unlocked parts",
+            "default": "False",
+            "units": ""
+        },
+        "BUILDORDER_REQUIRE_VALID_BOM": {
+            "name": "Require Valid BOM",
+            "description": "Prevent build order creation unless BOM has been validated",
+            "default": "False",
+            "units": ""
+        },
+        "BUILDORDER_REQUIRE_CLOSED_CHILDS": {
+            "name": "Require Closed Child Orders",
+            "description": "Prevent build order completion until all child orders are closed",
+            "default": "False",
+            "units": ""
+        },
+        "PREVENT_BUILD_COMPLETION_HAVING_INCOMPLETED_TESTS": {
+            "name": "Block Until Tests Pass",
+            "description": "Prevent build outputs from being completed until all required tests pass",
+            "default": "False",
+            "units": ""
+        },
+        "RETURNORDER_ENABLED": {
+            "name": "Enable Return Orders",
+            "description": "Enable return order functionality in the user interface",
+            "default": "False",
+            "units": ""
+        },
+        "RETURNORDER_REFERENCE_PATTERN": {
+            "name": "Return Order Reference Pattern",
+            "description": "Required pattern for generating Return Order reference field",
+            "default": "RMA-{ref:04d}",
+            "units": ""
+        },
+        "RETURNORDER_REQUIRE_RESPONSIBLE": {
+            "name": "Require Responsible Owner",
+            "description": "A responsible owner must be assigned to each order",
+            "default": "False",
+            "units": ""
+        },
+        "RETURNORDER_EDIT_COMPLETED_ORDERS": {
+            "name": "Edit Completed Return Orders",
+            "description": "Allow editing of return orders after they have been completed",
+            "default": "False",
+            "units": ""
+        },
+        "SALESORDER_REFERENCE_PATTERN": {
+            "name": "Sales Order Reference Pattern",
+            "description": "Required pattern for generating Sales Order reference field",
+            "default": "SO-{ref:04d}",
+            "units": ""
+        },
+        "SALESORDER_REQUIRE_RESPONSIBLE": {
+            "name": "Require Responsible Owner",
+            "description": "A responsible owner must be assigned to each order",
+            "default": "False",
+            "units": ""
+        },
+        "SALESORDER_DEFAULT_SHIPMENT": {
+            "name": "Sales Order Default Shipment",
+            "description": "Enable creation of default shipment with sales orders",
+            "default": "False",
+            "units": ""
+        },
+        "SALESORDER_EDIT_COMPLETED_ORDERS": {
+            "name": "Edit Completed Sales Orders",
+            "description": "Allow editing of sales orders after they have been shipped or completed",
+            "default": "False",
+            "units": ""
+        },
+        "SALESORDER_SHIP_COMPLETE": {
+            "name": "Mark Shipped Orders as Complete",
+            "description": "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status",
+            "default": "False",
+            "units": ""
+        },
+        "PURCHASEORDER_REFERENCE_PATTERN": {
+            "name": "Purchase Order Reference Pattern",
+            "description": "Required pattern for generating Purchase Order reference field",
+            "default": "PO-{ref:04d}",
+            "units": ""
+        },
+        "PURCHASEORDER_REQUIRE_RESPONSIBLE": {
+            "name": "Require Responsible Owner",
+            "description": "A responsible owner must be assigned to each order",
+            "default": "False",
+            "units": ""
+        },
+        "PURCHASEORDER_EDIT_COMPLETED_ORDERS": {
+            "name": "Edit Completed Purchase Orders",
+            "description": "Allow editing of purchase orders after they have been shipped or completed",
+            "default": "False",
+            "units": ""
+        },
+        "PURCHASEORDER_AUTO_COMPLETE": {
+            "name": "Auto Complete Purchase Orders",
+            "description": "Automatically mark purchase orders as complete when all line items are received",
+            "default": "True",
+            "units": ""
+        },
+        "LOGIN_ENABLE_PWD_FORGOT": {
+            "name": "Enable password forgot",
+            "description": "Enable password forgot function on the login pages",
+            "default": "True",
+            "units": ""
+        },
+        "LOGIN_ENABLE_REG": {
+            "name": "Enable registration",
+            "description": "Enable self-registration for users on the login pages",
+            "default": "False",
+            "units": ""
+        },
+        "LOGIN_ENABLE_SSO": {
+            "name": "Enable SSO",
+            "description": "Enable SSO on the login pages",
+            "default": "False",
+            "units": ""
+        },
+        "LOGIN_ENABLE_SSO_REG": {
+            "name": "Enable SSO registration",
+            "description": "Enable self-registration via SSO for users on the login pages",
+            "default": "False",
+            "units": ""
+        },
+        "LOGIN_ENABLE_SSO_GROUP_SYNC": {
+            "name": "Enable SSO group sync",
+            "description": "Enable synchronizing InvenTree groups with groups provided by the IdP",
+            "default": "False",
+            "units": ""
+        },
+        "SSO_GROUP_KEY": {
+            "name": "SSO group key",
+            "description": "The name of the groups claim attribute provided by the IdP",
+            "default": "groups",
+            "units": ""
+        },
+        "SSO_GROUP_MAP": {
+            "name": "SSO group map",
+            "description": "A mapping from SSO groups to local InvenTree groups. If the local group does not exist, it will be created.",
+            "default": "{}",
+            "units": ""
+        },
+        "SSO_REMOVE_GROUPS": {
+            "name": "Remove groups outside of SSO",
+            "description": "Whether groups assigned to the user should be removed if they are not backend by the IdP. Disabling this setting might cause security issues",
+            "default": "True",
+            "units": ""
+        },
+        "LOGIN_MAIL_REQUIRED": {
+            "name": "Email required",
+            "description": "Require user to supply mail on signup",
+            "default": "False",
+            "units": ""
+        },
+        "LOGIN_SIGNUP_SSO_AUTO": {
+            "name": "Auto-fill SSO users",
+            "description": "Automatically fill out user-details from SSO account-data",
+            "default": "True",
+            "units": ""
+        },
+        "LOGIN_SIGNUP_MAIL_TWICE": {
+            "name": "Mail twice",
+            "description": "On signup ask users twice for their mail",
+            "default": "False",
+            "units": ""
+        },
+        "LOGIN_SIGNUP_PWD_TWICE": {
+            "name": "Password twice",
+            "description": "On signup ask users twice for their password",
+            "default": "True",
+            "units": ""
+        },
+        "LOGIN_SIGNUP_MAIL_RESTRICTION": {
+            "name": "Allowed domains",
+            "description": "Restrict signup to certain domains (comma-separated, starting with @)",
+            "default": "",
+            "units": ""
+        },
+        "SIGNUP_GROUP": {
+            "name": "Group on signup",
+            "description": "Group to which new users are assigned on registration. If SSO group sync is enabled, this group is only set if no group can be assigned from the IdP.",
+            "default": "",
+            "units": ""
+        },
+        "LOGIN_ENFORCE_MFA": {
+            "name": "Enforce MFA",
+            "description": "Users must use multifactor security.",
+            "default": "False",
+            "units": ""
+        },
+        "PLUGIN_ON_STARTUP": {
+            "name": "Check plugins on startup",
+            "description": "Check that all plugins are installed on startup - enable in container environments",
+            "default": "False",
+            "units": ""
+        },
+        "PLUGIN_UPDATE_CHECK": {
+            "name": "Check for plugin updates",
+            "description": "Enable periodic checks for updates to installed plugins",
+            "default": "True",
+            "units": ""
+        },
+        "ENABLE_PLUGINS_URL": {
+            "name": "Enable URL integration",
+            "description": "Enable plugins to add URL routes",
+            "default": "False",
+            "units": ""
+        },
+        "ENABLE_PLUGINS_NAVIGATION": {
+            "name": "Enable navigation integration",
+            "description": "Enable plugins to integrate into navigation",
+            "default": "False",
+            "units": ""
+        },
+        "ENABLE_PLUGINS_APP": {
+            "name": "Enable app integration",
+            "description": "Enable plugins to add apps",
+            "default": "False",
+            "units": ""
+        },
+        "ENABLE_PLUGINS_SCHEDULE": {
+            "name": "Enable schedule integration",
+            "description": "Enable plugins to run scheduled tasks",
+            "default": "False",
+            "units": ""
+        },
+        "ENABLE_PLUGINS_EVENTS": {
+            "name": "Enable event integration",
+            "description": "Enable plugins to respond to internal events",
+            "default": "False",
+            "units": ""
+        },
+        "ENABLE_PLUGINS_INTERFACE": {
+            "name": "Enable interface integration",
+            "description": "Enable plugins to integrate into the user interface",
+            "default": "False",
+            "units": ""
+        },
+        "PROJECT_CODES_ENABLED": {
+            "name": "Enable project codes",
+            "description": "Enable project codes for tracking projects",
+            "default": "False",
+            "units": ""
+        },
+        "STOCKTAKE_ENABLE": {
+            "name": "Stocktake Functionality",
+            "description": "Enable stocktake functionality for recording stock levels and calculating stock value",
+            "default": "False",
+            "units": ""
+        },
+        "STOCKTAKE_EXCLUDE_EXTERNAL": {
+            "name": "Exclude External Locations",
+            "description": "Exclude stock items in external locations from stocktake calculations",
+            "default": "False",
+            "units": ""
+        },
+        "STOCKTAKE_AUTO_DAYS": {
+            "name": "Automatic Stocktake Period",
+            "description": "Number of days between automatic stocktake recording (set to zero to disable)",
+            "default": "0",
+            "units": ""
+        },
+        "STOCKTAKE_DELETE_REPORT_DAYS": {
+            "name": "Report Deletion Interval",
+            "description": "Stocktake reports will be deleted after specified number of days",
+            "default": "30",
+            "units": "days"
+        },
+        "DISPLAY_FULL_NAMES": {
+            "name": "Display Users full names",
+            "description": "Display Users full names instead of usernames",
+            "default": "False",
+            "units": ""
+        },
+        "TEST_STATION_DATA": {
+            "name": "Enable Test Station Data",
+            "description": "Enable test station data collection for test results",
+            "default": "False",
+            "units": ""
+        },
+        "TEST_UPLOAD_CREATE_TEMPLATE": {
+            "name": "Create Template on Upload",
+            "description": "Create a new test template when uploading test data which does not match an existing template",
+            "default": "True",
+            "units": ""
+        }
+    },
+    "user": {
+        "LABEL_INLINE": {
+            "name": "Inline label display",
+            "description": "Display PDF labels in the browser, instead of downloading as a file",
+            "default": "True",
+            "units": ""
+        },
+        "LABEL_DEFAULT_PRINTER": {
+            "name": "Default label printer",
+            "description": "Configure which label printer should be selected by default",
+            "default": "",
+            "units": ""
+        },
+        "REPORT_INLINE": {
+            "name": "Inline report display",
+            "description": "Display PDF reports in the browser, instead of downloading as a file",
+            "default": "False",
+            "units": ""
+        },
+        "SEARCH_PREVIEW_SHOW_PARTS": {
+            "name": "Search Parts",
+            "description": "Display parts in search preview window",
+            "default": "True",
+            "units": ""
+        },
+        "SEARCH_PREVIEW_SHOW_SUPPLIER_PARTS": {
+            "name": "Search Supplier Parts",
+            "description": "Display supplier parts in search preview window",
+            "default": "True",
+            "units": ""
+        },
+        "SEARCH_PREVIEW_SHOW_MANUFACTURER_PARTS": {
+            "name": "Search Manufacturer Parts",
+            "description": "Display manufacturer parts in search preview window",
+            "default": "True",
+            "units": ""
+        },
+        "SEARCH_HIDE_INACTIVE_PARTS": {
+            "name": "Hide Inactive Parts",
+            "description": "Excluded inactive parts from search preview window",
+            "default": "False",
+            "units": ""
+        },
+        "SEARCH_PREVIEW_SHOW_CATEGORIES": {
+            "name": "Search Categories",
+            "description": "Display part categories in search preview window",
+            "default": "False",
+            "units": ""
+        },
+        "SEARCH_PREVIEW_SHOW_STOCK": {
+            "name": "Search Stock",
+            "description": "Display stock items in search preview window",
+            "default": "True",
+            "units": ""
+        },
+        "SEARCH_PREVIEW_HIDE_UNAVAILABLE_STOCK": {
+            "name": "Hide Unavailable Stock Items",
+            "description": "Exclude stock items which are not available from the search preview window",
+            "default": "False",
+            "units": ""
+        },
+        "SEARCH_PREVIEW_SHOW_LOCATIONS": {
+            "name": "Search Locations",
+            "description": "Display stock locations in search preview window",
+            "default": "False",
+            "units": ""
+        },
+        "SEARCH_PREVIEW_SHOW_COMPANIES": {
+            "name": "Search Companies",
+            "description": "Display companies in search preview window",
+            "default": "True",
+            "units": ""
+        },
+        "SEARCH_PREVIEW_SHOW_BUILD_ORDERS": {
+            "name": "Search Build Orders",
+            "description": "Display build orders in search preview window",
+            "default": "True",
+            "units": ""
+        },
+        "SEARCH_PREVIEW_SHOW_PURCHASE_ORDERS": {
+            "name": "Search Purchase Orders",
+            "description": "Display purchase orders in search preview window",
+            "default": "True",
+            "units": ""
+        },
+        "SEARCH_PREVIEW_EXCLUDE_INACTIVE_PURCHASE_ORDERS": {
+            "name": "Exclude Inactive Purchase Orders",
+            "description": "Exclude inactive purchase orders from search preview window",
+            "default": "True",
+            "units": ""
+        },
+        "SEARCH_PREVIEW_SHOW_SALES_ORDERS": {
+            "name": "Search Sales Orders",
+            "description": "Display sales orders in search preview window",
+            "default": "True",
+            "units": ""
+        },
+        "SEARCH_PREVIEW_EXCLUDE_INACTIVE_SALES_ORDERS": {
+            "name": "Exclude Inactive Sales Orders",
+            "description": "Exclude inactive sales orders from search preview window",
+            "default": "True",
+            "units": ""
+        },
+        "SEARCH_PREVIEW_SHOW_RETURN_ORDERS": {
+            "name": "Search Return Orders",
+            "description": "Display return orders in search preview window",
+            "default": "True",
+            "units": ""
+        },
+        "SEARCH_PREVIEW_EXCLUDE_INACTIVE_RETURN_ORDERS": {
+            "name": "Exclude Inactive Return Orders",
+            "description": "Exclude inactive return orders from search preview window",
+            "default": "True",
+            "units": ""
+        },
+        "SEARCH_PREVIEW_RESULTS": {
+            "name": "Search Preview Results",
+            "description": "Number of results to show in each section of the search preview window",
+            "default": "10",
+            "units": ""
+        },
+        "SEARCH_REGEX": {
+            "name": "Regex Search",
+            "description": "Enable regular expressions in search queries",
+            "default": "False",
+            "units": ""
+        },
+        "SEARCH_WHOLE": {
+            "name": "Whole Word Search",
+            "description": "Search queries return results for whole word matches",
+            "default": "False",
+            "units": ""
+        },
+        "PART_SHOW_QUANTITY_IN_FORMS": {
+            "name": "Show Quantity in Forms",
+            "description": "Display available part quantity in some forms",
+            "default": "True",
+            "units": ""
+        },
+        "FORMS_CLOSE_USING_ESCAPE": {
+            "name": "Escape Key Closes Forms",
+            "description": "Use the escape key to close modal forms",
+            "default": "False",
+            "units": ""
+        },
+        "STICKY_HEADER": {
+            "name": "Fixed Navbar",
+            "description": "The navbar position is fixed to the top of the screen",
+            "default": "False",
+            "units": ""
+        },
+        "DATE_DISPLAY_FORMAT": {
+            "name": "Date Format",
+            "description": "Preferred format for displaying dates",
+            "default": "YYYY-MM-DD",
+            "units": ""
+        },
+        "DISPLAY_SCHEDULE_TAB": {
+            "name": "Part Scheduling",
+            "description": "Display part scheduling information",
+            "default": "True",
+            "units": ""
+        },
+        "DISPLAY_STOCKTAKE_TAB": {
+            "name": "Part Stocktake",
+            "description": "Display part stocktake information (if stocktake functionality is enabled)",
+            "default": "True",
+            "units": ""
+        },
+        "TABLE_STRING_MAX_LENGTH": {
+            "name": "Table String Length",
+            "description": "Maximum length limit for strings displayed in table views",
+            "default": "100",
+            "units": ""
+        },
+        "NOTIFICATION_ERROR_REPORT": {
+            "name": "Receive error reports",
+            "description": "Receive notifications for system errors",
+            "default": "True",
+            "units": ""
+        },
+        "LAST_USED_PRINTING_MACHINES": {
+            "name": "Last used printing machines",
+            "description": "Save the last used printing machines for a user",
+            "default": "",
+            "units": ""
+        }
+    }
+}
\ No newline at end of file
diff --git a/export/308/inventree_tags.yml b/export/308/inventree_tags.yml
new file mode 100644
index 0000000..f6ecd7b
--- /dev/null
+++ b/export/308/inventree_tags.yml
@@ -0,0 +1,1137 @@
+-   body: ''
+    library: ''
+    meta: {}
+    name: autoescape
+    title: Force autoescape behavior for this block.
+-   body: ''
+    library: ''
+    meta: {}
+    name: comment
+    title: Ignore everything between ``{% comment %}`` and ``{% endcomment %}``.
+-   body: "Within a loop, cycles among the given strings each time through\nthe loop::\n\
+        \n    {% for o in some_list %}\n        <tr class=\"{% cycle 'row1' 'row2'\
+        \ %}\">\n            ...\n        </tr>\n    {% endfor %}\n\nOutside of a\
+        \ loop, give the values a unique name the first time you call\nit, then use\
+        \ that name each successive time through::\n\n        <tr class=\"{% cycle\
+        \ 'row1' 'row2' 'row3' as rowcolors %}\">...</tr>\n        <tr class=\"{%\
+        \ cycle rowcolors %}\">...</tr>\n        <tr class=\"{% cycle rowcolors %}\"\
+        >...</tr>\n\nYou can use any number of values, separated by spaces. Commas\
+        \ can also\nbe used to separate values; if a comma is used, the cycle values\
+        \ are\ninterpreted as literal strings.\n\nThe optional flag \"silent\" can\
+        \ be used to prevent the cycle declaration\nfrom returning any value::\n\n\
+        \    {% for o in some_list %}\n        {% cycle 'row1' 'row2' as rowcolors\
+        \ silent %}\n        <tr class=\"{{ rowcolors }}\">{% include \"subtemplate.html\
+        \ \" %}</tr>\n    {% endfor %}"
+    library: ''
+    meta: {}
+    name: cycle
+    title: Cycle among the given strings each time this tag is encountered.
+-   body: ''
+    library: ''
+    meta: {}
+    name: csrf_token
+    title: ''
+-   body: "Sample usage::\n\n    <pre>\n        {% debug %}\n    </pre>"
+    library: ''
+    meta: {}
+    name: debug
+    title: 'Output a whole load of debugging information, including the current
+
+        context and imported modules.'
+-   body: "Filters can also be piped through each other, and they can have\narguments\
+        \ -- just like in variable syntax.\n\nSample usage::\n\n    {% filter force_escape|lower\
+        \ %}\n        This text will be HTML-escaped, and will appear in lowercase.\n\
+        \    {% endfilter %}\n\nNote that the ``escape`` and ``safe`` filters are\
+        \ not acceptable arguments.\nInstead, use the ``autoescape`` tag to manage\
+        \ autoescaping for blocks of\ntemplate code."
+    library: ''
+    meta: {}
+    name: filter
+    title: Filter the contents of the block through variable filters.
+-   body: "Output nothing if all the passed variables are False.\n\nSample usage::\n\
+        \n    {% firstof var1 var2 var3 as myvar %}\n\nThis is equivalent to::\n\n\
+        \    {% if var1 %}\n        {{ var1 }}\n    {% elif var2 %}\n        {{ var2\
+        \ }}\n    {% elif var3 %}\n        {{ var3 }}\n    {% endif %}\n\nbut much\
+        \ cleaner!\n\nYou can also use a literal string as a fallback value in case\
+        \ all\npassed variables are False::\n\n    {% firstof var1 var2 var3 \"fallback\
+        \ value\" %}\n\nIf you want to disable auto-escaping of variables you can\
+        \ use::\n\n    {% autoescape off %}\n        {% firstof var1 var2 var3 \"\
+        <strong>fallback value</strong>\" %}\n    {% autoescape %}\n\nOr if only some\
+        \ variables should be escaped, you can use::\n\n    {% firstof var1 var2|safe\
+        \ var3 \"<strong>fallback value</strong>\"|safe %}"
+    library: ''
+    meta: {}
+    name: firstof
+    title: Output the first variable passed that is not False.
+-   body: "For example, to display a list of athletes given ``athlete_list``::\n\n\
+        \    <ul>\n    {% for athlete in athlete_list %}\n        <li>{{ athlete.name\
+        \ }}</li>\n    {% endfor %}\n    </ul>\n\nYou can loop over a list in reverse\
+        \ by using\n``{% for obj in list reversed %}``.\n\nYou can also unpack multiple\
+        \ values from a two-dimensional array::\n\n    {% for key,value in dict.items\
+        \ %}\n        {{ key }}: {{ value }}\n    {% endfor %}\n\nThe ``for`` tag\
+        \ can take an optional ``{% empty %}`` clause that will\nbe displayed if the\
+        \ given array is empty or could not be found::\n\n    <ul>\n      {% for athlete\
+        \ in athlete_list %}\n        <li>{{ athlete.name }}</li>\n      {% empty\
+        \ %}\n        <li>Sorry, no athletes in this list.</li>\n      {% endfor %}\n\
+        \    <ul>\n\nThe above is equivalent to -- but shorter, cleaner, and possibly\
+        \ faster\nthan -- the following::\n\n    <ul>\n      {% if athlete_list %}\n\
+        \        {% for athlete in athlete_list %}\n          <li>{{ athlete.name\
+        \ }}</li>\n        {% endfor %}\n      {% else %}\n        <li>Sorry, no athletes\
+        \ in this list.</li>\n      {% endif %}\n    </ul>\n\nThe for loop sets a\
+        \ number of variables available within the loop:\n\n    ==========================\
+        \  ================================================\n    Variable        \
+        \            Description\n    ==========================  ================================================\n\
+        \    ``forloop.counter``         The current iteration of the loop (1-indexed)\n\
+        \    ``forloop.counter0``        The current iteration of the loop (0-indexed)\n\
+        \    ``forloop.revcounter``      The number of iterations from the end of\
+        \ the\n                                loop (1-indexed)\n    ``forloop.revcounter0``\
+        \     The number of iterations from the end of the\n                     \
+        \           loop (0-indexed)\n    ``forloop.first``           True if this\
+        \ is the first time through the loop\n    ``forloop.last``            True\
+        \ if this is the last time through the loop\n    ``forloop.parentloop``  \
+        \    For nested loops, this is the loop \"above\" the\n                  \
+        \              current one\n    ==========================  ================================================"
+    library: ''
+    meta: {}
+    name: for
+    title: Loop over each item in an array.
+-   body: "::\n\n    {% if athlete_list %}\n        Number of athletes: {{ athlete_list|count\
+        \ }}\n    {% elif athlete_in_locker_room_list %}\n        Athletes should\
+        \ be out of the locker room soon!\n    {% else %}\n        No athletes.\n\
+        \    {% endif %}\n\nIn the above, if ``athlete_list`` is not empty, the number\
+        \ of athletes will\nbe displayed by the ``{{ athlete_list|count }}`` variable.\n\
+        \nThe ``if`` tag may take one or several `` {% elif %}`` clauses, as well\
+        \ as\nan ``{% else %}`` clause that will be displayed if all previous conditions\n\
+        fail. These clauses are optional.\n\n``if`` tags may use ``or``, ``and`` or\
+        \ ``not`` to test a number of\nvariables or to negate a given variable::\n\
+        \n    {% if not athlete_list %}\n        There are no athletes.\n    {% endif\
+        \ %}\n\n    {% if athlete_list or coach_list %}\n        There are some athletes\
+        \ or some coaches.\n    {% endif %}\n\n    {% if athlete_list and coach_list\
+        \ %}\n        Both athletes and coaches are available.\n    {% endif %}\n\n\
+        \    {% if not athlete_list or coach_list %}\n        There are no athletes,\
+        \ or there are some coaches.\n    {% endif %}\n\n    {% if athlete_list and\
+        \ not coach_list %}\n        There are some athletes and absolutely no coaches.\n\
+        \    {% endif %}\n\nComparison operators are also available, and the use of\
+        \ filters is also\nallowed, for example::\n\n    {% if articles|length >=\
+        \ 5 %}...{% endif %}\n\nArguments and operators _must_ have a space between\
+        \ them, so\n``{% if 1>2 %}`` is not a valid if tag.\n\nAll supported operators\
+        \ are: ``or``, ``and``, ``in``, ``not in``\n``==``, ``!=``, ``>``, ``>=``,\
+        \ ``<`` and ``<=``.\n\nOperator precedence follows Python."
+    library: ''
+    meta: {}
+    name: if
+    title: 'Evaluate a variable, and if that variable is "true" (i.e., exists, is
+        not
+
+        empty, and is not a false boolean value), output the contents of the block:'
+-   body: "The ``{% ifchanged %}`` block tag is used within a loop. It has two\npossible\
+        \ uses.\n\n1. Check its own rendered contents against its previous state and\
+        \ only\n   displays the content if it has changed. For example, this displays\
+        \ a\n   list of days, only displaying the month if it changes::\n\n      \
+        \  <h1>Archive for {{ year }}</h1>\n\n        {% for date in days %}\n   \
+        \         {% ifchanged %}<h3>{{ date|date:\"F\" }}</h3>{% endifchanged %}\n\
+        \            <a href=\"{{ date|date:\"M/d\"|lower }}/\">{{ date|date:\"j\"\
+        \ }}</a>\n        {% endfor %}\n\n2. If given one or more variables, check\
+        \ whether any variable has changed.\n   For example, the following shows the\
+        \ date every time it changes, while\n   showing the hour if either the hour\
+        \ or the date has changed::\n\n        {% for date in days %}\n          \
+        \  {% ifchanged date.date %} {{ date.date }} {% endifchanged %}\n        \
+        \    {% ifchanged date.hour date.date %}\n                {{ date.hour }}\n\
+        \            {% endifchanged %}\n        {% endfor %}"
+    library: ''
+    meta: {}
+    name: ifchanged
+    title: Check if a value has changed from the last iteration of a loop.
+-   body: "For example, to load the template tags in\n``django/templatetags/news/photos.py``::\n\
+        \n    {% load news.photos %}\n\nCan also be used to load an individual tag/filter\
+        \ from\na library::\n\n    {% load byline from news %}"
+    library: ''
+    meta: {}
+    name: load
+    title: Load a custom template tag library into the parser.
+-   body: "Usage format::\n\n    {% lorem [count] [method] [random] %}\n\n``count``\
+        \ is a number (or variable) containing the number of paragraphs or\nwords\
+        \ to generate (default is 1).\n\n``method`` is either ``w`` for words, ``p``\
+        \ for HTML paragraphs, ``b`` for\nplain-text paragraph blocks (default is\
+        \ ``b``).\n\n``random`` is the word ``random``, which if given, does not use\
+        \ the common\nparagraph (starting \"Lorem ipsum dolor sit amet, consectetuer...\"\
+        ).\n\nExamples:\n\n* ``{% lorem %}`` outputs the common \"lorem ipsum\" paragraph\n\
+        * ``{% lorem 3 p %}`` outputs the common \"lorem ipsum\" paragraph\n  and\
+        \ two random paragraphs each wrapped in HTML ``<p>`` tags\n* ``{% lorem 2\
+        \ w random %}`` outputs two random latin words"
+    library: ''
+    meta: {}
+    name: lorem
+    title: Create random Latin text useful for providing test data in templates.
+-   body: "Use the same format as PHP's ``date()`` function; see https://php.net/date\n\
+        for all the possible values.\n\nSample usage::\n\n    It is {% now \"jS F\
+        \ Y H:i\" %}"
+    library: ''
+    meta: {}
+    name: now
+    title: Display the date, formatted according to the given string.
+-   body: "This complex tag is best illustrated by use of an example: say that\n``musicians``\
+        \ is a list of ``Musician`` objects that have ``name`` and\n``instrument``\
+        \ attributes, and you'd like to display a list that\nlooks like:\n\n    *\
+        \ Guitar:\n        * Django Reinhardt\n        * Emily Remler\n    * Piano:\n\
+        \        * Lovie Austin\n        * Bud Powell\n    * Trumpet:\n        * Duke\
+        \ Ellington\n\nThe following snippet of template code would accomplish this\
+        \ dubious task::\n\n    {% regroup musicians by instrument as grouped %}\n\
+        \    <ul>\n    {% for group in grouped %}\n        <li>{{ group.grouper }}\n\
+        \        <ul>\n            {% for musician in group.list %}\n            <li>{{\
+        \ musician.name }}</li>\n            {% endfor %}\n        </ul>\n    {% endfor\
+        \ %}\n    </ul>\n\nAs you can see, ``{% regroup %}`` populates a variable\
+        \ with a list of\nobjects with ``grouper`` and ``list`` attributes. ``grouper``\
+        \ contains the\nitem that was grouped by; ``list`` contains the list of objects\
+        \ that share\nthat ``grouper``. In this case, ``grouper`` would be ``Guitar``,\
+        \ ``Piano``\nand ``Trumpet``, and ``list`` is the list of musicians who play\
+        \ this\ninstrument.\n\nNote that ``{% regroup %}`` does not work when the\
+        \ list to be grouped is not\nsorted by the key you are grouping by! This means\
+        \ that if your list of\nmusicians was not sorted by instrument, you'd need\
+        \ to make sure it is sorted\nbefore using it, i.e.::\n\n    {% regroup musicians|dictsort:\"\
+        instrument\" by instrument as grouped %}"
+    library: ''
+    meta: {}
+    name: regroup
+    title: Regroup a list of alike objects by a common attribute.
+-   body: 'If an argument is given, reset the last rendered cycle tag whose name
+
+        matches the argument, else reset the last rendered cycle tag (named or
+
+        unnamed).'
+    library: ''
+    meta: {}
+    name: resetcycle
+    title: Reset a cycle tag.
+-   body: "Example usage::\n\n    {% spaceless %}\n        <p>\n            <a href=\"\
+        foo/\">Foo</a>\n        </p>\n    {% endspaceless %}\n\nThis example returns\
+        \ this HTML::\n\n    <p><a href=\"foo/\">Foo</a></p>\n\nOnly space between\
+        \ *tags* is normalized -- not space between tags and text.\nIn this example,\
+        \ the space around ``Hello`` isn't stripped::\n\n    {% spaceless %}\n   \
+        \     <strong>\n            Hello\n        </strong>\n    {% endspaceless\
+        \ %}"
+    library: ''
+    meta: {}
+    name: spaceless
+    title: Remove whitespace between HTML tags, including tab and newline characters.
+-   body: "Since the template system has no concept of \"escaping\", to display one\
+        \ of\nthe bits used in template tags, you must use the ``{% templatetag %}``\
+        \ tag.\n\nThe argument tells which template bit to output:\n\n    ==================\
+        \  =======\n    Argument            Outputs\n    ==================  =======\n\
+        \    ``openblock``       ``{%``\n    ``closeblock``      ``%}``\n    ``openvariable``\
+        \    ``{{``\n    ``closevariable``   ``}}``\n    ``openbrace``       ``{``\n\
+        \    ``closebrace``      ``}``\n    ``opencomment``     ``{#``\n    ``closecomment``\
+        \    ``#}``\n    ==================  ======="
+    library: ''
+    meta: {}
+    name: templatetag
+    title: Output one of the bits used to compose template tags.
+-   body: "This is a way to define links that aren't tied to a particular URL\nconfiguration::\n\
+        \n    {% url \"url_name\" arg1 arg2 %}\n\n    or\n\n    {% url \"url_name\"\
+        \ name1=value1 name2=value2 %}\n\nThe first argument is a URL pattern name.\
+        \ Other arguments are\nspace-separated values that will be filled in place\
+        \ of positional and\nkeyword arguments in the URL. Don't mix positional and\
+        \ keyword arguments.\nAll arguments for the URL must be present.\n\nFor example,\
+        \ if you have a view ``app_name.views.client_details`` taking\nthe client's\
+        \ id and the corresponding line in a URLconf looks like this::\n\n    path('client/<int:id>/',\
+        \ views.client_details, name='client-detail-view')\n\nand this app's URLconf\
+        \ is included into the project's URLconf under some\npath::\n\n    path('clients/',\
+        \ include('app_name.urls'))\n\nthen in a template you can create a link for\
+        \ a certain client like this::\n\n    {% url \"client-detail-view\" client.id\
+        \ %}\n\nThe URL will look like ``/clients/client/123/``.\n\nThe first argument\
+        \ may also be the name of a template variable that will be\nevaluated to obtain\
+        \ the view name or the URL name, e.g.::\n\n    {% with url_name=\"client-detail-view\"\
+        \ %}\n    {% url url_name client.id %}\n    {% endwith %}"
+    library: ''
+    meta: {}
+    name: url
+    title: Return an absolute URL matching the given view with its parameters.
+-   body: "Usage::\n\n    {% verbatim %}\n        {% don't process this %}\n    {%\
+        \ endverbatim %}\n\nYou can also designate a specific closing tag block (allowing\
+        \ the\nunrendered use of ``{% endverbatim %}``)::\n\n    {% verbatim myblock\
+        \ %}\n        ...\n    {% endverbatim myblock %}"
+    library: ''
+    meta: {}
+    name: verbatim
+    title: Stop the template engine from rendering the contents of this block tag.
+-   body: "For example::\n\n    <img src=\"bar.png\" alt=\"Bar\"\n         height=\"\
+        10\" width=\"{% widthratio this_value max_value max_width %}\">\n\nIf ``this_value``\
+        \ is 175, ``max_value`` is 200, and ``max_width`` is 100,\nthe image in the\
+        \ above example will be 88 pixels wide\n(because 175/200 = .875; .875 * 100\
+        \ = 87.5 which is rounded up to 88).\n\nIn some cases you might want to capture\
+        \ the result of widthratio in a\nvariable. It can be useful for instance in\
+        \ a blocktranslate like this::\n\n    {% widthratio this_value max_value max_width\
+        \ as width %}\n    {% blocktranslate %}The width is: {{ width }}{% endblocktranslate\
+        \ %}"
+    library: ''
+    meta: {}
+    name: widthratio
+    title: 'For creating bar charts and such. Calculate the ratio of a given value
+        to a
+
+        maximum value, and then apply that ratio to a constant.'
+-   body: "For example::\n\n    {% with total=person.some_sql_method %}\n        {{\
+        \ total }} object{{ total|pluralize }}\n    {% endwith %}\n\nMultiple values\
+        \ can be added to the context::\n\n    {% with foo=1 bar=2 %}\n        ...\n\
+        \    {% endwith %}\n\nThe legacy format of ``{% with person.some_sql_method\
+        \ as total %}`` is\nstill accepted."
+    library: ''
+    meta: {}
+    name: with
+    title: 'Add one or more values to the context (inside of this block) for caching
+
+        and easy access.'
+-   body: ''
+    library: ''
+    meta: {}
+    name: block
+    title: Define a block that can be overridden by child templates.
+-   body: 'This tag may be used in two ways: ``{% extends "base" %}`` (with quotes)
+
+        uses the literal value "base" as the name of the parent template to extend,
+
+        or ``{% extends variable %}`` uses the value of ``variable`` as either the
+
+        name of the parent template to extend (if it evaluates to a string) or as
+
+        the parent template itself (if it evaluates to a Template object).'
+    library: ''
+    meta: {}
+    name: extends
+    title: Signal that this template extends a parent template.
+-   body: "Example::\n\n    {% include \"foo/some_include\" %}\n    {% include \"\
+        foo/some_include\" with bar=\"BAZZ!\" baz=\"BING!\" %}\n\nUse the ``only``\
+        \ argument to exclude the current context when rendering\nthe included template::\n\
+        \n    {% include \"foo/some_include\" only %}\n    {% include \"foo/some_include\"\
+        \ with bar=\"1\" only %}"
+    library: ''
+    meta: {}
+    name: include
+    title: 'Load a template and render it with the current context. You can pass
+
+        additional context using keyword arguments.'
+-   body: "    {% user_display user %}\n\nor if you need to use in a {% blocktrans\
+        \ %}::\n\n    {% user_display user as user_display %}\n    {% blocktrans %}\n\
+        \    {{ user_display }} has sent you a gift.\n    {% endblocktrans %}"
+    library: account
+    meta: {}
+    name: user_display
+    title: 'Example usage::'
+-   body: ''
+    library: admin_list
+    meta: {}
+    name: paginator_number
+    title: Generate an individual page index link in a paginated list.
+-   body: ''
+    library: admin_list
+    meta: {}
+    name: pagination
+    title: ''
+-   body: ''
+    library: admin_list
+    meta: {}
+    name: result_list
+    title: ''
+-   body: ''
+    library: admin_list
+    meta: {}
+    name: date_hierarchy
+    title: ''
+-   body: ''
+    library: admin_list
+    meta: {}
+    name: search_form
+    title: ''
+-   body: ''
+    library: admin_list
+    meta: {}
+    name: admin_list_filter
+    title: ''
+-   body: ''
+    library: admin_list
+    meta: {}
+    name: admin_actions
+    title: ''
+-   body: ''
+    library: admin_list
+    meta: {}
+    name: change_list_object_tools
+    title: Display the row of change list object tools.
+-   body: ''
+    library: admin_modify
+    meta: {}
+    name: prepopulated_fields_js
+    title: ''
+-   body: ''
+    library: admin_modify
+    meta: {}
+    name: submit_row
+    title: ''
+-   body: ''
+    library: admin_modify
+    meta: {}
+    name: change_form_object_tools
+    title: Display the row of change form object tools.
+-   body: ''
+    library: admin_urls
+    meta: {}
+    name: add_preserved_filters
+    title: ''
+-   body: ''
+    library: allauth
+    meta: {}
+    name: slot
+    title: ''
+-   body: ''
+    library: allauth
+    meta: {}
+    name: element
+    title: ''
+-   body: ''
+    library: allauth
+    meta: {}
+    name: setvar
+    title: ''
+-   body: '- This function runs the data through bleach, and removes any malicious
+        HTML content.
+
+        - Used to render raw barcode data into the rendered HTML templates'
+    library: barcode
+    meta: {}
+    name: clean_barcode
+    title: Return a 'cleaned' string for encoding into a barcode / qrcode.
+-   body: "Arguments:\n    data: Data to encode\n\nKeyword Arguments:\n    version\
+        \ (int): QR code version, (None to auto detect) (default = None)\n    error_correction\
+        \ (str): Error correction level (L: 7%, M: 15%, Q: 25%, H: 30%) (default =\
+        \ 'M')\n    box_size (int): pixel dimensions for one black square pixel in\
+        \ the QR code (default = 20)\n    border (int): count white QR square pixels\
+        \ around the qr code, needed as padding (default = 1)\n    optimize (int):\
+        \ data will be split into multiple chunks of at least this length using different\
+        \ modes (text, alphanumeric, binary) to optimize the QR code size. Set to\
+        \ `0` to disable. (default = 1)\n    format (str): Image format (default =\
+        \ 'PNG')\n    fill_color (str): Fill color (default = \"black\")\n    back_color\
+        \ (str): Background color (default = \"white\")"
+    library: barcode
+    meta:
+        Returns: "\n    image (str): base64 encoded image data"
+    name: qrcode
+    title: Return a byte-encoded QR code image.
+-   body: "Arguments:\n    data: Data to encode\n\nKeyword Arguments:\n    format\
+        \ (str): Image format (default = 'PNG')\n    fill_color (str): Foreground\
+        \ color (default = 'black')\n    back_color (str): Background color (default\
+        \ = 'white')\n    scale (float): Scaling factor (default = 1)"
+    library: barcode
+    meta:
+        Returns: "\n    image (str): base64 encoded image data"
+    name: barcode
+    title: Render a 1D barcode.
+-   body: "Arguments:\n    data: Data to encode\n\nKeyword Arguments:\n    fill_color\
+        \ (str): Foreground color (default = 'black')\n    back_color (str): Background\
+        \ color (default = 'white')\n    scale (float): Matrix scaling factor (default\
+        \ = 1)\n    border (int): Border width (default = 1)"
+    library: barcode
+    meta:
+        Returns: "\n    image (str): base64 encoded image data"
+    name: datamatrix
+    title: Render a DataMatrix barcode.
+-   body: "Usage::\n\n    {% load cache %}\n    {% cache [expire_time] [fragment_name]\
+        \ %}\n        .. some expensive processing ..\n    {% endcache %}\n\nThis\
+        \ tag also supports varying by a list of arguments::\n\n    {% load cache\
+        \ %}\n    {% cache [expire_time] [fragment_name] [var1] [var2] .. %}\n   \
+        \     .. some expensive processing ..\n    {% endcache %}\n\nOptionally the\
+        \ cache to use may be specified thus::\n\n    {% cache ....  using=\"cachename\"\
+        \ %}\n\nEach unique set of arguments will result in a unique cache entry."
+    library: cache
+    meta: {}
+    name: cache
+    title: 'This will cache the contents of a template fragment for a given amount
+
+        of time.'
+-   body: "    {% money_localize <money_object> [ on(default) | off ] [as var_name]\
+        \ %}\n    {% money_localize <amount> <currency> [ on(default) | off ] [as\
+        \ var_name] %}\n\nExample:\n\n    The same effect:\n    {% money_localize\
+        \ money_object %}\n    {% money_localize money_object on %}\n\n    Assignment\
+        \ to a variable:\n    {% money_localize money_object on as NEW_MONEY_OBJECT\
+        \ %}\n\n    Formatting the number with currency:\n    {% money_localize '4.5'\
+        \ 'USD' %}\n\nReturn::\n\n    Money object"
+    library: djmoney
+    meta: {}
+    name: money_localize
+    title: 'Usage::'
+-   body: ''
+    library: feature_flags
+    meta: {}
+    name: flag_enabled
+    title: ''
+-   body: ''
+    library: feature_flags
+    meta: {}
+    name: flag_disabled
+    title: ''
+-   body: ''
+    library: generic
+    meta: {}
+    name: status_label
+    title: Render a status label.
+-   body: ''
+    library: generic
+    meta: {}
+    name: display_status_label
+    title: Render a status label.
+-   body: "Usage::\n\n    {% get_available_languages as languages %}\n    {% for language\
+        \ in languages %}\n    ...\n    {% endfor %}\n\nThis puts settings.LANGUAGES\
+        \ into the named variable."
+    library: i18n
+    meta: {}
+    name: get_available_languages
+    title: Store a list of available languages in the context.
+-   body: "Usage::\n\n    {% get_language_info for LANGUAGE_CODE as l %}\n    {{ l.code\
+        \ }}\n    {{ l.name }}\n    {{ l.name_translated }}\n    {{ l.name_local }}\n\
+        \    {{ l.bidi|yesno:\"bi-directional,uni-directional\" }}"
+    library: i18n
+    meta: {}
+    name: get_language_info
+    title: 'Store the language information dictionary for the given language code
+        in a
+
+        context variable.'
+-   body: "Usage::\n\n    {% get_language_info_list for LANGUAGES as langs %}\n  \
+        \  {% for l in langs %}\n      {{ l.code }}\n      {{ l.name }}\n      {{\
+        \ l.name_translated }}\n      {{ l.name_local }}\n      {{ l.bidi|yesno:\"\
+        bi-directional,uni-directional\" }}\n    {% endfor %}"
+    library: i18n
+    meta: {}
+    name: get_language_info_list
+    title: 'Store a list of language information dictionaries for the given language
+
+        codes in a context variable. The language codes can be specified either as
+
+        a list of strings or a settings.LANGUAGES style list (or any sequence of
+
+        sequences whose first items are language codes).'
+-   body: "Usage::\n\n    {% get_current_language as language %}\n\nThis fetches the\
+        \ currently active language and puts its value into the\n``language`` context\
+        \ variable."
+    library: i18n
+    meta: {}
+    name: get_current_language
+    title: Store the current language in the context.
+-   body: "Usage::\n\n    {% get_current_language_bidi as bidi %}\n\nThis fetches\
+        \ the currently active language's layout and puts its value into\nthe ``bidi``\
+        \ context variable. True indicates right-to-left layout,\notherwise left-to-right."
+    library: i18n
+    meta: {}
+    name: get_current_language_bidi
+    title: Store the current language layout in the context.
+-   body: "Usage::\n\n    {% translate \"this is a test\" %}\n\nThis marks the string\
+        \ for translation so it will be pulled out by\nmakemessages into the .po files\
+        \ and runs the string through the translation\nengine.\n\nThere is a second\
+        \ form::\n\n    {% translate \"this is a test\" noop %}\n\nThis marks the\
+        \ string for translation, but returns the string unchanged.\nUse it when you\
+        \ need to store values into forms that should be translated\nlater on.\n\n\
+        You can use variables instead of constant strings\nto translate stuff you\
+        \ marked somewhere else::\n\n    {% translate variable %}\n\nThis tries to\
+        \ translate the contents of the variable ``variable``. Make\nsure that the\
+        \ string in there is something that is in the .po file.\n\nIt is possible\
+        \ to store the translated string into a variable::\n\n    {% translate \"\
+        this is a test\" as var %}\n    {{ var }}\n\nContextual translations are also\
+        \ supported::\n\n    {% translate \"this is a test\" context \"greeting\"\
+        \ %}\n\nThis is equivalent to calling pgettext instead of (u)gettext."
+    library: i18n
+    meta: {}
+    name: trans
+    title: 'Mark a string for translation and translate the string for the current
+
+        language.'
+-   body: "Usage::\n\n    {% translate \"this is a test\" %}\n\nThis marks the string\
+        \ for translation so it will be pulled out by\nmakemessages into the .po files\
+        \ and runs the string through the translation\nengine.\n\nThere is a second\
+        \ form::\n\n    {% translate \"this is a test\" noop %}\n\nThis marks the\
+        \ string for translation, but returns the string unchanged.\nUse it when you\
+        \ need to store values into forms that should be translated\nlater on.\n\n\
+        You can use variables instead of constant strings\nto translate stuff you\
+        \ marked somewhere else::\n\n    {% translate variable %}\n\nThis tries to\
+        \ translate the contents of the variable ``variable``. Make\nsure that the\
+        \ string in there is something that is in the .po file.\n\nIt is possible\
+        \ to store the translated string into a variable::\n\n    {% translate \"\
+        this is a test\" as var %}\n    {{ var }}\n\nContextual translations are also\
+        \ supported::\n\n    {% translate \"this is a test\" context \"greeting\"\
+        \ %}\n\nThis is equivalent to calling pgettext instead of (u)gettext."
+    library: i18n
+    meta: {}
+    name: translate
+    title: 'Mark a string for translation and translate the string for the current
+
+        language.'
+-   body: "Usage::\n\n    {% blocktranslate with bar=foo|filter boo=baz|filter %}\n\
+        \    This is {{ bar }} and {{ boo }}.\n    {% endblocktranslate %}\n\nAdditionally,\
+        \ this supports pluralization::\n\n    {% blocktranslate count count=var|length\
+        \ %}\n    There is {{ count }} object.\n    {% plural %}\n    There are {{\
+        \ count }} objects.\n    {% endblocktranslate %}\n\nThis is much like ngettext,\
+        \ only in template syntax.\n\nThe \"var as value\" legacy format is still\
+        \ supported::\n\n    {% blocktranslate with foo|filter as bar and baz|filter\
+        \ as boo %}\n    {% blocktranslate count var|length as count %}\n\nThe translated\
+        \ string can be stored in a variable using `asvar`::\n\n    {% blocktranslate\
+        \ with bar=foo|filter boo=baz|filter asvar var %}\n    This is {{ bar }} and\
+        \ {{ boo }}.\n    {% endblocktranslate %}\n    {{ var }}\n\nContextual translations\
+        \ are supported::\n\n    {% blocktranslate with bar=foo|filter context \"\
+        greeting\" %}\n        This is {{ bar }}.\n    {% endblocktranslate %}\n\n\
+        This is equivalent to calling pgettext/npgettext instead of\n(u)gettext/(u)ngettext."
+    library: i18n
+    meta: {}
+    name: blocktrans
+    title: Translate a block of text with parameters.
+-   body: "Usage::\n\n    {% blocktranslate with bar=foo|filter boo=baz|filter %}\n\
+        \    This is {{ bar }} and {{ boo }}.\n    {% endblocktranslate %}\n\nAdditionally,\
+        \ this supports pluralization::\n\n    {% blocktranslate count count=var|length\
+        \ %}\n    There is {{ count }} object.\n    {% plural %}\n    There are {{\
+        \ count }} objects.\n    {% endblocktranslate %}\n\nThis is much like ngettext,\
+        \ only in template syntax.\n\nThe \"var as value\" legacy format is still\
+        \ supported::\n\n    {% blocktranslate with foo|filter as bar and baz|filter\
+        \ as boo %}\n    {% blocktranslate count var|length as count %}\n\nThe translated\
+        \ string can be stored in a variable using `asvar`::\n\n    {% blocktranslate\
+        \ with bar=foo|filter boo=baz|filter asvar var %}\n    This is {{ bar }} and\
+        \ {{ boo }}.\n    {% endblocktranslate %}\n    {{ var }}\n\nContextual translations\
+        \ are supported::\n\n    {% blocktranslate with bar=foo|filter context \"\
+        greeting\" %}\n        This is {{ bar }}.\n    {% endblocktranslate %}\n\n\
+        This is equivalent to calling pgettext/npgettext instead of\n(u)gettext/(u)ngettext."
+    library: i18n
+    meta: {}
+    name: blocktranslate
+    title: Translate a block of text with parameters.
+-   body: "Usage::\n\n    {% language \"de\" %}\n        This is {{ bar }} and {{\
+        \ boo }}.\n    {% endlanguage %}"
+    library: i18n
+    meta: {}
+    name: language
+    title: Enable the given language just for this block.
+-   body: 'Use as follows: {% define "hello_world" as hello %}'
+    library: inventree_extras
+    meta:
+        Ref: https://stackoverflow.com/questions/1070398/how-to-set-a-value-of-a-variable-inside-a-template-code
+    name: define
+    title: Shortcut function to overcome the shortcomings of the django templating
+        language.
+-   body: ''
+    library: inventree_extras
+    meta: {}
+    name: decimal
+    title: Simplified rendering of a decimal number.
+-   body: ''
+    library: inventree_extras
+    meta: {}
+    name: render_date
+    title: Renders a date object as a string.
+-   body: ''
+    library: inventree_extras
+    meta: {}
+    name: str2bool
+    title: Convert a string to a boolean value.
+-   body: ''
+    library: inventree_extras
+    meta: {}
+    name: add
+    title: Add two numbers together.
+-   body: ''
+    library: inventree_extras
+    meta: {}
+    name: to_list
+    title: Return the input arguments as list.
+-   body: ''
+    library: inventree_extras
+    meta: {}
+    name: inventree_instance_name
+    title: Return the InstanceName associated with the current database.
+-   body: ''
+    library: inventree_extras
+    meta: {}
+    name: inventree_title
+    title: Return the title for the current instance - respecting the settings.
+-   body: Returns a path to an image file, which can be rendered in the web interface.
+    library: inventree_extras
+    meta: {}
+    name: inventree_logo
+    title: Return the InvenTree logo, *or* a custom logo if the user has provided
+        one.
+-   body: ''
+    library: inventree_extras
+    meta: {}
+    name: inventree_version
+    title: Return InvenTree version string.
+-   body: ''
+    library: inventree_extras
+    meta: {}
+    name: inventree_commit_hash
+    title: Return InvenTree git commit hash string.
+-   body: ''
+    library: inventree_extras
+    meta: {}
+    name: inventree_installer
+    title: Return InvenTree package installer string.
+-   body: ''
+    library: inventree_extras
+    meta: {}
+    name: inventree_commit_date
+    title: Return InvenTree git commit date string.
+-   body: '(Or return None if the setting does not exist)
+
+        if a user-setting was requested return that'
+    library: inventree_extras
+    meta: {}
+    name: setting_object
+    title: Return a setting object specified by the given key.
+-   body: ''
+    library: inventree_extras
+    meta: {}
+    name: settings_value
+    title: Return a settings value specified by the given key.
+-   body: ''
+    library: inventree_extras
+    meta: {}
+    name: inventree_customize
+    title: Return customization values for the user interface.
+-   body: "Sample usage::\n\n    {% localize off %}\n        var pi = {{ 3.1415 }};\n\
+        \    {% endlocalize %}"
+    library: l10n
+    meta: {}
+    name: localize
+    title: 'Force or prevents localization of values, regardless of the value of
+
+        `settings.USE_L10N`.'
+-   body: "Usage::\n\n    {% get_admin_log [limit] as [varname] for_user [context_var_with_user_obj]\
+        \ %}\n\nExamples::\n\n    {% get_admin_log 10 as admin_log for_user 23 %}\n\
+        \    {% get_admin_log 10 as admin_log for_user user %}\n    {% get_admin_log\
+        \ 10 as admin_log %}\n\nNote that ``context_var_containing_user_obj`` can\
+        \ be a hard-coded integer\n(user ID) or the name of a template context variable\
+        \ containing the user\nobject whose ID you want."
+    library: log
+    meta: {}
+    name: get_admin_log
+    title: Populate a template variable with the admin log for the given criteria.
+-   body: ''
+    library: markdownify
+    meta: {}
+    name: markdownify
+    title: ''
+-   body: ''
+    library: mptt_admin
+    meta: {}
+    name: mptt_result_list
+    title: Displays the headers and data list together
+-   body: "Usage::\n\n   {% full_tree_for_model [model] as [varname] %}\n\nThe model\
+        \ is specified in ``[appname].[modelname]`` format.\n\nExample::\n\n   {%\
+        \ full_tree_for_model tests.Genre as genres %}"
+    library: mptt_tags
+    meta: {}
+    name: full_tree_for_model
+    title: 'Populates a template variable with a ``QuerySet`` containing the
+
+        full tree for a given model.'
+-   body: "A drilldown tree consists of a node's ancestors, itself and its\nimmediate\
+        \ children or all descendants. For example, a drilldown tree\nfor a book category\
+        \ \"Personal Finance\" might look something like::\n\n   Books\n      Business,\
+        \ Finance & Law\n         Personal Finance\n            Budgeting (220)\n\
+        \            Financial Planning (670)\n\nUsage::\n\n   {% drilldown_tree_for_node\
+        \ [node] as [varname] %}\n\nExtended usage::\n\n   {% drilldown_tree_for_node\
+        \ [node] as [varname] all_descendants %}\n   {% drilldown_tree_for_node [node]\
+        \ as [varname] count [foreign_key] in [count_attr] %}\n   {% drilldown_tree_for_node\
+        \ [node] as [varname] cumulative count [foreign_key] in [count_attr] %}\n\n\
+        The foreign key is specified in ``[appname].[modelname].[fieldname]``\nformat,\
+        \ where ``fieldname`` is the name of a field in the specified\nmodel which\
+        \ relates it to the given node's model.\n\nWhen this form is used, a ``count_attr``\
+        \ attribute on each child of\nthe given node in the drilldown tree will contain\
+        \ a count of the\nnumber of items associated with it through the given foreign\
+        \ key.\n\nIf cumulative is also specified, this count will be for items\n\
+        related to the child node and all of its descendants.\n\nExamples::\n\n  \
+        \ {% drilldown_tree_for_node genre as drilldown %}\n   {% drilldown_tree_for_node\
+        \ genre as drilldown count tests.Game.genre in game_count %}\n   {% drilldown_tree_for_node\
+        \ genre as drilldown cumulative count tests.Game.genre in game_count %}"
+    library: mptt_tags
+    meta: {}
+    name: drilldown_tree_for_node
+    title: 'Populates a template variable with the drilldown tree for a given
+
+        node, optionally counting the number of items associated with its
+
+        children.'
+-   body: ''
+    library: mptt_tags
+    meta:
+        Usage: "\n        <ul>\n            {% recursetree nodes %}\n            \
+            \    <li>\n                    {{ node.name }}\n                    {%\
+            \ if not node.is_leaf_node %}\n                        <ul>\n        \
+            \                    {{ children }}\n                        </ul>\n \
+            \                   {% endif %}\n                </li>\n            {%\
+            \ endrecursetree %}\n        </ul>"
+    name: recursetree
+    title: 'Iterates over the nodes in the tree, and renders the contained block for
+        each node.
+
+        This tag will recursively render children into the template variable {{ children
+        }}.
+
+        Only one database query is required (children are cached for the whole tree)'
+-   body: ''
+    library: plugin_extras
+    meta: {}
+    name: plugin_list
+    title: List of all installed plugins.
+-   body: ''
+    library: plugin_extras
+    meta: {}
+    name: inactive_plugin_list
+    title: List of all inactive plugins.
+-   body: ''
+    library: plugin_extras
+    meta: {}
+    name: plugin_settings
+    title: List of all settings for the plugin.
+-   body: ''
+    library: plugin_extras
+    meta: {}
+    name: plugin_settings_content
+    title: Get the settings content for the plugin.
+-   body: ''
+    library: plugin_extras
+    meta: {}
+    name: mixin_enabled
+    title: Is the mixin registered and configured in the plugin?
+-   body: ''
+    library: plugin_extras
+    meta: {}
+    name: mixin_available
+    title: Returns True if there is at least one active plugin which supports the
+        provided mixin.
+-   body: ''
+    library: plugin_extras
+    meta: {}
+    name: navigation_enabled
+    title: Is plugin navigation enabled?
+-   body: Returns None if not found
+    library: plugin_extras
+    meta: {}
+    name: safe_url
+    title: Safe lookup fnc for URLs.
+-   body: ''
+    library: plugin_extras
+    meta: {}
+    name: plugin_errors
+    title: All plugin errors in the current session.
+-   body: ''
+    library: plugin_extras
+    meta: {}
+    name: notification_settings_list
+    title: List of all user notification settings.
+-   body: ''
+    library: plugin_extras
+    meta: {}
+    name: notification_list
+    title: List of all notification methods.
+-   body: "Arguments:\n    file: The path to the file within the plugin static directory\n\
+        \nKeyword Arguments:\n    plugin: The plugin slug (optional, will be inferred\
+        \ from the context if not provided)"
+    library: plugin_extras
+    meta: {}
+    name: plugin_static
+    title: Return the URL for a static file within a plugin.
+-   body: "Arguments:\n    queryset: The queryset to filter\n\nKeyword Arguments:\n\
+        \    field (any): Filter the queryset based on the provided field"
+    library: report
+    meta:
+        Example: "\n    {% filter_queryset companies is_supplier=True as suppliers\
+            \ %}"
+    name: filter_queryset
+    title: Filter a database queryset based on the provided keyword arguments.
+-   body: "Arguments:\n    model_name: The name of the Django model - including app\
+        \ name (e.g. 'part.partcategory')\n\nKeyword Arguments:\n    field (any):\
+        \ Filter the queryset based on the provided field"
+    library: report
+    meta:
+        Example: "\n    {% filter_db_model 'part.partcategory' is_template=True as\
+            \ template_parts %}"
+    name: filter_db_model
+    title: Filter a database model based on the provided keyword arguments.
+-   body: This function is provideed to get around template rendering limitations.
+    library: report
+    meta:
+        Arguments: "\n    container: A python list object\n    index: The index to\
+            \ retrieve from the list"
+    name: getindex
+    title: Return the value contained at the specified index of the list.
+-   body: 'This function is provided to get around template rendering limitations.
+
+        Ref: https://stackoverflow.com/questions/1906129/dict-keys-with-spaces-in-django-templates'
+    library: report
+    meta:
+        Arguments: "\n    container: A python dict object\n    key: The 'key' to be\
+            \ found within the dict\n    backup_value: A backup value to return if\
+            \ the key is not found"
+    name: getkey
+    title: Perform key lookup in the provided dict object.
+-   body: "Arguments:\n    filename: Asset filename (relative to the 'assets' media\
+        \ directory)"
+    library: report
+    meta:
+        Raises: "\n    FileNotFoundError: If file does not exist"
+    name: asset
+    title: Return fully-qualified path for an upload report asset file.
+-   body: "Arguments:\n    filename: The filename of the image relative to the MEDIA_ROOT\
+        \ directory\n    replace_missing: Optionally return a placeholder image if\
+        \ the provided filename does not exist (default = True)\n    replacement_file:\
+        \ The filename of the placeholder image (default = 'blank_image.png')\n  \
+        \  validate: Optionally validate that the file is a valid image file\n   \
+        \ width: Optional width of the image\n    height: Optional height of the image\n\
+        \    rotate: Optional rotation to apply to the image\n\nReturns:\n    Binary\
+        \ image data to be rendered directly in a <img> tag"
+    library: report
+    meta:
+        Raises: "\n    FileNotFoundError: If the file does not exist"
+    name: uploaded_image
+    title: Return raw image data from an 'uploaded' image.
+-   body: ''
+    library: report
+    meta: {}
+    name: encode_svg_image
+    title: Return a base64-encoded svg image data string.
+-   body: "Arguments:\n    part: A Part model instance\n    preview: Return the preview\
+        \ image (default = False)\n    thumbnail: Return the thumbnail image (default\
+        \ = False)"
+    library: report
+    meta:
+        Raises: "\n    TypeError: If provided part is not a Part instance"
+    name: part_image
+    title: Return a fully-qualified path for a part image.
+-   body: "Arguments:\n    part: A Part object\n    parameter_name: The name of the\
+        \ parameter to retrieve"
+    library: report
+    meta:
+        Returns: "\n    A PartParameter object, or None if not found"
+    name: part_parameter
+    title: Return a PartParameter object for the given part and parameter name.
+-   body: "Arguments:\n    company: A Company model instance\n    preview: Return\
+        \ the preview image (default = False)\n    thumbnail: Return the thumbnail\
+        \ image (default = False)"
+    library: report
+    meta:
+        Raises: "\n    TypeError: If provided company is not a Company instance"
+    name: company_image
+    title: Return a fully-qualified path for a company image.
+-   body: '- If a custom logo has been provided, return a path to that logo
+
+        - Otherwise, return a path to the default InvenTree logo'
+    library: report
+    meta: {}
+    name: logo_image
+    title: Return a fully-qualified path for the logo image.
+-   body: Uses the InvenTree.helpers_model.construct_absolute_url function to build
+        the URL.
+    library: report
+    meta: {}
+    name: internal_link
+    title: Make a <a></a> href which points to an InvenTree URL.
+-   body: ''
+    library: report
+    meta: {}
+    name: add
+    title: Add two numbers together.
+-   body: ''
+    library: report
+    meta: {}
+    name: subtract
+    title: Subtract one number from another.
+-   body: ''
+    library: report
+    meta: {}
+    name: multiply
+    title: Multiply two numbers together.
+-   body: ''
+    library: report
+    meta: {}
+    name: divide
+    title: Divide one number by another.
+-   body: ''
+    library: report
+    meta: {}
+    name: render_currency
+    title: Render a currency / Money object.
+-   body: ''
+    library: report
+    meta:
+        kwargs: "\n    bold: Boolean, whether bold (or not)\n    italic: Boolean,\
+            \ whether italic (or not)\n    heading: str, heading level e.g. 'h3'"
+    name: render_html_text
+    title: Render a text item with some simple html tags.
+-   body: ''
+    library: report
+    meta:
+        Arguments: "\n    decimal_places: Number of decimal places to render\n   \
+            \ integer: Boolean, whether to render the number as an integer\n    leading:\
+            \ Number of leading zeros (default = 0)\n    separator: Character to use\
+            \ as a thousands separator (default = None)"
+    name: format_number
+    title: Render a number with optional formatting options.
+-   body: ''
+    library: report
+    meta:
+        Arguments: "\n    dt: The datetime object to format\n    timezone: The timezone\
+            \ to use for the date (defaults to the server timezone)\n    fmt: The\
+            \ format string to use (defaults to ISO formatting)"
+    name: format_datetime
+    title: Format a datetime object for display.
+-   body: ''
+    library: report
+    meta:
+        Arguments: "\n    dt: The date to format\n    timezone: The timezone to use\
+            \ for the date (defaults to the server timezone)\n    fmt: The format\
+            \ string to use (defaults to ISO formatting)"
+    name: format_date
+    title: Format a date object for display.
+-   body: "Arguments:\n    name: The name of the icon to render\n\nKeyword Arguments:\n\
+        \    class: Optional class name(s) to apply to the icon element"
+    library: report
+    meta: {}
+    name: icon
+    title: Render an icon from the icon packs.
+-   body: ''
+    library: report
+    meta: {}
+    name: include_icon_fonts
+    title: Return the CSS font-face rule for the icon fonts used on the current page
+        (or all).
+-   body: ''
+    library: rest_framework
+    meta: {}
+    name: code
+    title: ''
+-   body: ''
+    library: rest_framework
+    meta: {}
+    name: form_for_link
+    title: ''
+-   body: ''
+    library: rest_framework
+    meta: {}
+    name: render_markdown
+    title: ''
+-   body: ''
+    library: rest_framework
+    meta: {}
+    name: get_pagination_html
+    title: ''
+-   body: ''
+    library: rest_framework
+    meta: {}
+    name: render_form
+    title: ''
+-   body: ''
+    library: rest_framework
+    meta: {}
+    name: render_field
+    title: ''
+-   body: ''
+    library: rest_framework
+    meta: {}
+    name: optional_login
+    title: Include a login snippet if REST framework's login view is in the URLconf.
+-   body: ''
+    library: rest_framework
+    meta: {}
+    name: optional_docs_login
+    title: Include a login snippet if REST framework's login view is in the URLconf.
+-   body: ''
+    library: rest_framework
+    meta: {}
+    name: optional_logout
+    title: Include a logout snippet if REST framework's logout view is in the URLconf.
+-   body: ''
+    library: rest_framework
+    meta: {}
+    name: add_query_param
+    title: Add a query parameter to the current request url, and return the new url.
+-   body: ''
+    library: socialaccount
+    meta: {}
+    name: provider_login_url
+    title: '{% provider_login_url "facebook" next=bla %}
+
+        {% provider_login_url "openid" openid="http://me.yahoo.com" next=bla %}'
+-   body: ''
+    library: socialaccount
+    meta: {}
+    name: providers_media_js
+    title: ''
+-   body: ''
+    library: socialaccount
+    meta:
+        Then: "\n    {{accounts.twitter}} -- a list of connected Twitter accounts\n\
+            \    {{accounts.twitter.0}} -- the first Twitter account\n    {% if accounts\
+            \ %} -- if there is at least one social account"
+    name: get_social_accounts
+    title: '{% get_social_accounts user as accounts %}'
+-   body: 'Usage: `{% get_providers as socialaccount_providers %}`.
+
+
+        Then within the template context, `socialaccount_providers` will hold
+
+        a list of social providers configured for the current site.'
+    library: socialaccount
+    meta: {}
+    name: get_providers
+    title: Returns a list of social authentication providers.
+-   body: ''
+    library: spa_helper
+    meta: {}
+    name: spa_bundle
+    title: Render SPA bundle.
+-   body: ''
+    library: spa_helper
+    meta: {}
+    name: spa_settings
+    title: Render settings for spa.
+-   body: "Usage::\n\n    {% get_static_prefix [as varname] %}\n\nExamples::\n\n \
+        \   {% get_static_prefix %}\n    {% get_static_prefix as static_prefix %}"
+    library: static
+    meta: {}
+    name: get_static_prefix
+    title: 'Populate a template variable with the static prefix,
+
+        ``settings.STATIC_URL``.'
+-   body: "Usage::\n\n    {% get_media_prefix [as varname] %}\n\nExamples::\n\n  \
+        \  {% get_media_prefix %}\n    {% get_media_prefix as media_prefix %}"
+    library: static
+    meta: {}
+    name: get_media_prefix
+    title: 'Populate a template variable with the media prefix,
+
+        ``settings.MEDIA_URL``.'
+-   body: "Usage::\n\n    {% static path [as varname] %}\n\nExamples::\n\n    {% static\
+        \ \"myapp/css/base.css\" %}\n    {% static variable_with_path %}\n    {% static\
+        \ \"myapp/css/base.css\" as admin_base_css %}\n    {% static variable_with_path\
+        \ as varname %}"
+    library: static
+    meta: {}
+    name: static
+    title: Join the given path with the STATIC_URL setting.
+-   body: "Sample usage::\n\n    {% localtime off %}{{ value_in_utc }}{% endlocaltime\
+        \ %}"
+    library: tz
+    meta: {}
+    name: localtime
+    title: 'Force or prevent conversion of datetime objects to local time,
+
+        regardless of the value of ``settings.USE_TZ``.'
+-   body: "The ``timezone`` argument must be an instance of a ``tzinfo`` subclass,\
+        \ a\ntime zone name, or ``None``. If it is ``None``, the default time zone\
+        \ is\nused within the block.\n\nSample usage::\n\n    {% timezone \"Europe/Paris\"\
+        \ %}\n        It is {{ now }} in Paris.\n    {% endtimezone %}"
+    library: tz
+    meta: {}
+    name: timezone
+    title: Enable a given time zone just for this block.
+-   body: "Usage::\n\n    {% get_current_timezone as TIME_ZONE %}\n\nThis will fetch\
+        \ the currently active time zone and put its name\ninto the ``TIME_ZONE``\
+        \ context variable."
+    library: tz
+    meta: {}
+    name: get_current_timezone
+    title: Store the name of the current time zone in the context.